1. 讓MAKER UNO的LED亮燈
Code:
void setup() {
// put your setup code here, to run once:
pinMode(13, OUTPUT); // 設定輸出腳位
digitalWrite(13, HIGH); // 讓13號燈發光
}
void loop() {
// put your main code here, to run repeatedly:
}
2. 還原預設的有馬力歐音效的程式
Code:
#define NOTE_C5 523
#define NOTE_E5 659
#define NOTE_G5 784
#define BUTTON 2
#define BUZZER 8
int melody[] = {
NOTE_E5, NOTE_E5, 0, NOTE_E5, 0, NOTE_C5, NOTE_E5, 0, NOTE_G5
};
int noteDurations[] = {
10, 10, 10, 10, 10, 10, 10, 10, 10
};
int pin;
int ledArrayHigh;
int ledArrayLow;
boolean mode = false;
boolean buttonPressed = false;
void setup()
{
delay(1000);
pinMode(BUTTON, INPUT_PULLUP);
for (pin = 3; pin < 14; pin++) {
pinMode(pin, OUTPUT);
}
for (int thisNote = 0; thisNote < 9; thisNote++) {
int noteDuration = 1000 / noteDurations[thisNote];
tone(BUZZER, melody[thisNote], noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
noTone(BUZZER);
}
}
void loop()
{
for (pin = 0; pin < 5; pin++) {
if (digitalRead(BUTTON) == LOW &&
buttonPressed == false) {
buttonPressed = true;
mode = !mode;
pin = 0;
if (mode == false) {
tone(BUZZER, NOTE_C5, 100);
delay(100);
tone(BUZZER, NOTE_G5, 100);
delay(100);
noTone(BUZZER);
}
else if (mode == true) {
tone(BUZZER, NOTE_G5, 100);
delay(100);
tone(BUZZER, NOTE_C5, 100);
delay(100);
noTone(BUZZER);
}
}
if (mode == false) {
ledArrayHigh = 13 - pin;
ledArrayLow = 7 - pin;
}
else if (mode == true) {
ledArrayHigh = 9 + pin;
ledArrayLow = 3 + pin;
}
digitalWrite(ledArrayHigh, HIGH);
digitalWrite(ledArrayLow, HIGH);
delay(100);
digitalWrite(ledArrayHigh, LOW);
digitalWrite(ledArrayLow, LOW);
if (pin == 4) delay(100);
}
if (buttonPressed == true) {
buttonPressed = false;
}
}
3. 按下按鈕燈全開,放開就全關掉
Code:
bool bLightHIGH = true; // 紀錄燈被打開了沒
void setup() {
pinMode(2, INPUT_PULLUP); // 把BUTTON(2號角位)打開
for (int i=3; i<=13; i++) {
// LED的腳位是3~13
pinMode(i, OUTPUT); // 設定輸出腳位
}
}
void loop() {
// 如果按鈕被按下就把全部的燈都打開,放開就關掉
if (digitalRead(2) == LOW) bLightHIGH = true;
else bLightHIGH = false;
for (int i=3; i<=13; i++) {
if (bLightHIGH) digitalWrite(i, HIGH); // 讓i號燈發光
else digitalWrite(i, LOW); // 讓i號燈關掉
}
}
4. 按下按鈕就唱小蜜蜂
Code:
// 定義聲音的音頻
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_G5 784
bool canSing = false; // 紀錄可不可以唱歌
void setup() {
pinMode(8, OUTPUT); //發聲音的BUZZER
pinMode(2, INPUT_PULLUP); // 把BUTTON(2號角位)打開
}
void loop() {
// 如果按鈕按下就唱歌
if (digitalRead(2) == LOW) canSing = true;
else canSing = false;
if (canSing) sing();
}
void sing() {
// 唱小蜜蜂
tone(8, NOTE_G5, 230); // 發聲
delay(230); // 延遲
tone(8, NOTE_E5, 230);
delay(230);
tone(8, NOTE_E5, 230);
delay(350);
tone(8, NOTE_F5, 230);
delay(230);
tone(8, NOTE_D5, 230);
delay(230);
tone(8, NOTE_D5, 230);
delay(350);
tone(8, NOTE_C5, 230);
delay(230);
tone(8, NOTE_D5, 230);
delay(230);
tone(8, NOTE_E5, 230);
delay(230);
tone(8, NOTE_F5, 230);
delay(230);
tone(8, NOTE_G5, 230);
delay(230);
tone(8, NOTE_G5, 230);
delay(230);
tone(8, NOTE_G5, 230);
delay(350);
tone(8, NOTE_G5, 230);
delay(230);
tone(8, NOTE_E5, 230);
delay(230);
tone(8, NOTE_E5, 230);
delay(350);
tone(8, NOTE_F5, 230);
delay(230);
tone(8, NOTE_D5, 230);
delay(230);
tone(8, NOTE_D5, 230);
delay(350);
tone(8, NOTE_C5, 230);
delay(230);
tone(8, NOTE_E5, 230);
delay(230);
tone(8, NOTE_G5, 230);
delay(230);
tone(8, NOTE_G5, 230);
delay(230);
tone(8, NOTE_C5, 230);
delay(350);
canSing = false;
}
5. 讓Processing與Maker Uno連接,按下鍵盤版子就發出對應的聲音
Processing Code:
import processing.serial.*;
Serial myPort; // 定義Serial Port與Maker Uno連接
void setup() {
// 初始化與Maker Uno連接的Port
myPort = new Serial(this, "/dev/cu.wchusbserial1420", 9600);
}
void draw() {
}
void keyPressed() {
// 按下鍵盤的數字鍵就會傳送給Maker Uno讓版子發出聲音
if (key == '1') myPort.write('1');
if (key == '2') myPort.write('2');
if (key == '3') myPort.write('3');
if (key == '4') myPort.write('4');
if (key == '5') myPort.write('5');
}
Arduino Code:
// 定義聲音的音頻
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_G5 784
void setup() {
pinMode(8, OUTPUT); //發聲音的BUZZER
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
char now = Serial.read(); // 讀來自於Processing傳送過來的鍵盤訊號
if (now == '1') tone(8, NOTE_C5, 300); // 發聲
if (now == '2') tone(8, NOTE_D5, 300); // 發聲
if (now == '3') tone(8, NOTE_E5, 300); // 發聲
if (now == '4') tone(8, NOTE_F5, 300); // 發聲
if (now == '5') tone(8, NOTE_G5, 300); // 發聲
}
}
沒有留言:
張貼留言