Un dimanche après-midi, J'ai décidé de réaliser l'idée de faire un robot en papier, avec de l'arduino pour l'animer.
un peu de recherche :
on découpe et on colle le papertoy en prenant soin de laisser la tête ouverte pour les led et en gardant un morceau de papier pour le servomoteur qui sera dans le corps.
On colle sur la tête un des accessoirs qui se fixent sur le servomoteur.
Les led sont fixées dans la tête.
Plus qu'à assembler !
/*Code sous licence CC-By-Sa
de Antony Auffret
réalisé avec des bouts de code attrapés ici ou là !
dont notament : http://www.instructables.com/id/How-to-easily-play-music-with-buzzer-on-arduino-Th/
et Tone Melody des exemples de programmes de l'IDE Arduino : http://arduino.cc/en/Tutorial/Tone
6 décembre 2015
Servo myservo1; // créer un objet servo 1 pour le contrôler
// Durée des notes
// notes de la mélodie : int melody[] = { LA3,LA3,LA3,F3,C4,LA3,F3,C4,LA3,E4,E4,E4,F4,C4,Ab3,F3,C4,LA3,LA4,LA3,LA3,LA4,Ab4,G4,Gb4,E4,F4,Bb3,Eb4,D4,Db4,C4,B3,C4,F3,Ab3,F3,LA3,C4,LA3,C4,E4,LA4,LA3,LA3,LA4,Ab4,G4,Gb4,E4,F4,Bb3,Eb4,D4,Db4,C4,B3,C4,F3,Ab3,F3,C4,LA3,F3,C4,LA3
};
// durée des notes int noteDurations[] = { Q,Q,Q,E+S,S,Q,E+S,S,H,Q,Q,Q,E+S,S,Q,E+S,S,H,Q,E+S,S,Q,E+S,S,S,S,E,E,Q,E+S,S,S,S,E,E,Q,E+S,S,Q,E+S,S,H,Q,E+S,S,Q,E+S,S,S,S,E,E,Q,E+S,S,S,S,E,E,Q,E+S,S,Q,E+S,S,H
};
int pause[] = {
Q+1,Q+1,Q+1,E+S+1,S+1,Q+1,E+S+1,S+1,H+1,Q+1,Q+1,Q+1,E+S+1,S+1,Q+1,E+S+1,S+1,H+1,Q+1,E+S+1,S+1,Q+1,E+S+1,S+1,S+1,S+1,E+1+E+1,E+1,Q+1,E+S+1,S+1,S+1,S+1,E+1+E+1,E+1,Q+1,E+S+1,S+1,Q+1,E+S+1,S+1,H+1,Q+1,E+S+1,S+1,Q+1,E+S+1,S+1,S+1,S+1,E+1+E+1,E+1,Q+1,E+S+1,S+1,S+1,S+1,E+1+E+1,E+1,Q+1,E+S+1,S+1,Q+1,E+S+1,S+1,H+1+2*H
}; int potar1=A0; // le potentiomètre est branche sur la broche analogique A0 int val1; // variable pour stocker la valeur du potentiomètre 1 int sens; //pour faire changer de sens au mouvement de la tete
void setup() { pinMode(8, OUTPUT); //pour le piezo pinMode(9, OUTPUT); //pour les 2 leds digitalWrite(9,LOW); myservo1.attach(10); // brancher le servomoteur sur l'entrée 10 sens = 1; }
void loop() {
// il y a 66 notes, on itère jusque 66 for (int thisNote = 0; thisNote < 66; thisNote++) { digitalWrite(9,HIGH); // allume les leds
tone(8, melody[thisNote], noteDurations[thisNote]); //joue la note digitalWrite(9,LOW); //éteins les leds delay(pause[thisNote]); //pause nécessaire entre les notes
noTone(8);//arret de la note en cours if (val1>180) { //repere le sens de rotation de la tete sens = 2; } if (val1<10) { sens = 1; } if (sens<2) { val1=val1+10; } if (sens>1) { val1=val1-10; } myservo1.write(val1); // mettre le servomoteur dans la bonne position }
}
© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique