#include #define C 60 #define D 62 #define E 64 #define F 66 #define G 67 #define A 69 #define B 71 #define C_ 72 #define D_ 74 #define E_ 76 #define F_ 78 #define G_ 79 #define Z 125 #define z 126 #define R 127 PROGMEM prog_char notes[] ={ R,D,D,B,A,G,D,R, R,D,D,B,A,G,E,R, R,E,E,C_,B,A,F,R, R,D_,D_,D_,C_,A,B,R, //32 R,D,D,B,A,G,D,R, R,D,D,B,A,G,E,R, R,E,E,C_,B,A,D_,D_, D_,D_,E_,D_,C_,A,G,R, D_,R, //34 Z,B,B,B,z,R, Z,B,B,B,z,R, B,D_,G,A,B,R,R,R, C_,C_,C_,C_,C_,B,B,B, B,A,A,B,A,R, D_,R, //36 Z,B,B,B,z,R, Z,B,B,B,z,R, B,D_,G,A,B,R,R,R, C_,C_,C_,C_,C_,B,B,B, D_,D_,C_,A,G,R, Z,G_,z,R //38 }; #define Tempo 300 #define bellPin 4 char voice=11; void noteOn(char data1, char data2){ Serial.print(0x90,BYTE); Serial.print(data1,BYTE); Serial.print(data2,BYTE); } void setup(){ pinMode(bellPin,OUTPUT); Serial.begin(31250); } void loop() { Serial.print(0xc0,BYTE); Serial.print(voice,BYTE); for(unsigned char i=0; i<140; i++){ char note=pgm_read_byte(¬es[i]); if(note==Z) digitalWrite(bellPin, HIGH); // Bell Start else if(note==z) digitalWrite(bellPin, LOW); // Bell Stop else if(note==R) delay(Tempo); // rest else{ noteOn(note,0x70); delay(Tempo); noteOn(note,0x00); } } delay(Tempo*8); if(++voice>16) voice=11; }