2019年11月21日
11週
原始程式碼:
#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;
}
}
作業(一)----發亮1個燈
void setup()
{
// put your setup code here, to run once:
pinMode(13,OUTPUT);
digitalWrite(13,HIGH);
}
void loop()
{
// put your main code here, to run repeatedly:
}
作業(二)----發亮13個燈
void setup()
{
// put your setup code here, to run once:
pinMode(2,INPUT_PULLUP);
for(int i=3;i<=13;i++)
{
pinMode(i,OUTPUT);
}
}
bool bLightHIGH=true;
void loop()
{
// put your main code here, to run repeatedly:
if(digitalRead(2)==HIGH)bLightHIGH=true;
else bLightHIGH=false;
for(int i=3;i<=13;i++)
{
if(bLightHIGH)digitalWrite(i,HIGH);
else digitalWrite(i,LOW);
}
}
作業(三)----發聲音
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_G5 784 (會使用的音調)
void setup()
{
// put your setup code here, to run once:
pinMode(8,OUTPUT);
}
void loop()
{
// put your main code here, to run repeatedly:
tone(8,NOTE_G5,330);
delay(330);
tone(8,NOTE_E5,330);
delay(330);
tone(8,NOTE_E5,330);
delay(530);
tone(8,NOTE_F5,230);
delay(230);
tone(8,NOTE_D5,230);
delay(230);
tone(8,NOTE_D5,430);
delay(1300);
}
*****小星星*****
#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);
}
void loop() {
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);
}
*****按enter繼續*****
#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);
pinMode(2, INPUT_PULLUP);
}
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;
}
作業(四)--讓Processing與Maker Uno連接,按下鍵盤版子就發出對應的聲音
Processing Code:
import processing.serial.*;
Serial myPort;
void setup()
{
myPort = new Serial(this, "", 9600);
}
void draw() {
}
void keyPressed() {
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');
}
#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); // 發聲
}
}



沒有留言:
張貼留言