void stickServo(uint8_t pin,int u){ int t; for(t=0;tTd){ digitalWrite(LservoPin,LOW); digitalWrite(RservoPin,LOW);} } } void setup(){ pinMode(LstickPin,OUTPUT); pinMode(RstickPin,OUTPUT); pinMode(LservoPin,OUTPUT); pinMode(RservoPin,OUTPUT); } void loop(){ uint8_t i, len, note, servo; for(i=0;;i++){ note=pgm_read_byte(¬es[i]); // sssslrLL servo=note&0xf0; // LRサーボコード len=(note&0x03)+1; // 音符の長さ 2-4 tempo=Tempo*len; // 音符の長さ(ms) if(note==0) break; // 終了 if(note&L) digitalWrite(LstickPin,HIGH); // Lを叩く if(note&R) digitalWrite(RstickPin,HIGH); // Rを叩く delay(Td); digitalWrite(LstickPin,LOW); digitalWrite(RstickPin,LOW);// 叩き終える if(servo==Lc) stickServo(LservoPin,LC); // Lをcへ else if(servo==Ld) stickServo(LservoPin,LD); // Lをdへ else if(servo==Le) stickServo(LservoPin,LE); // Lをeへ else if(servo==Lf) stickServo(LservoPin,LF); // Lをfへ else if(servo==Lg) stickServo(LservoPin,LG); // Lをgへ else if(servo==La) stickServo(LservoPin,LA); // Lをaへ else if(servo==Rd) stickServo(RservoPin,RD); // Rをdへ else if(servo==Re) stickServo(RservoPin,RE); // Rをeへ else if(servo==Rf) stickServo(RservoPin,RF); // Rをfへ else if(servo==Rg) stickServo(RservoPin,RG); // Rをgへ else if(servo==Ra) stickServo(RservoPin,RA); // Rをaへ else if(servo==Rb) stickServo(RservoPin,RB); // Rをbへ else if(servo==Rc) stickServo(RservoPin,RC); // RをCへ else delay(tempo-Td); } delay(Tempo*8); }