上星期我们学习了如何用UNO蜂鸣器播放预先准备好的音乐,这星期我们要学的是如何把UNO变成可以弹奏的乐器,不过这次我们要请出Processing帮忙才可以完成任务,程式码如下:
这边是Arduino要烧录的:
#define
Do 523
#define
Re 587
#define
Mi 659
#define
Fa 698
#define
So 784
#define
La 880
#define
Ti 988
#define
Doo 1046
void
setup() {
Serial.begin(9600);
pinMode(2,INPUT_PULLUP);
pinMode(8,OUTPUT);
tone(8,Do);
delay(1000);
tone(8,Mi);
delay(1000);
tone(8,So);
delay(1000);
noTone(8);
}
void
loop() {
while(Serial.available()>0){
int now = Serial.read();
if(now=='0') noTone(8);
if(now=='1') tone(8,Do);
if(now=='2') tone(8,Re);
if(now=='3') tone(8,Mi);
if(now=='4') tone(8,Fa);
if(now=='5') tone(8,So);
if(now=='6') tone(8,La);
if(now=='7') tone(8,Ti);
if(now=='8') tone(8,Doo);
}
}
根据网上查到的音符表可以补全剩下的音阶
这边是Processing里要写的:
import processing.serial.*;
Serial myPort;
void setup(){
size(200,200);
myPort = new Serial(this,"COM5",9600);
}
void draw(){
}
void keyPressed(){
if(key=='0') myPort.write("0");
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");
if(key=='6') myPort.write("6");
if(key=='7') myPort.write("7");
if(key=='8') myPort.write("8");
}
按下0就可以静音,COM可以根据自己電腦的狀況自行调整
于是在最后我这个五音不全的人还是做出了一个勉强可以演奏的乐器,不过感觉还是GitHub上边那些大神的作品比较nb些。


沒有留言:
張貼留言