Étape 3: Ajouter le code
Pour obtenir le code de travail a été plus difficile que je pensais. J’ai choisi une chanson traditionnelle de « Sinterklaas » pour ouvrir la boîte et que la chanson a répéter les tons en elle ce qui n’a pas fonctionné pour le premier code que j’ai écrit.
La mélodie initiale pour ma boîte est gcceddFbbdc.
Vous devez comprendre quelques Arduino codage si vous voulez changer cela dans votre propre mélodie. Il n’est pas un croquis long ou difficile, alors vous réussirez probablement si vous avez juste un peu d’expérience avec un Arduino.
Le Sketch :
gcceddFbbdc 25576684465
#include
Servo myservo ;
int buttonPin = A0 ;
bouton int = 0 ;
piezo int = 3 ;
toon int = 0 ; f = 1 g = 2 a = 3 b = 4 c = 5 j = 6 e = 7 F = 8
volgende int = true ;
teller int = 1 ;
void setup() {}
Serial.Begin(9600) ; le débogage
pinMode (13, sortie) ;
myservo.Attach(9) ;
myservo.writeMicroseconds(1000) ; }
void loop() {}
Delay(30) ; Debounce
bouton = analogRead(buttonPin) ;
Serial.Print(Toon) ;
Serial.Print(volgende) ;
Serial.println(Button) ; le débogage
Si (bouton > 400) {ton (piezo, 349); toon = 8; volgende = false;} / / F
else {si (bouton > 150) {ton (piezo, 330); toon = 7; volgende = false;} / / e
else {si (bouton > 100) {ton (piezo, 294), toon = 6; volgende = false;} / / d
else {si (bouton > 80) {ton (piezo, 262); toon = 5; volgende = false;} / / c
else {si (bouton > 60) {ton (piezo, 247); toon = 4; volgende = false;} / / b
else {si (bouton > 48) {ton (piezo, 220); toon = 3; volgende = false;} / / a
else {si (bouton > 38) {ton (piezo, 196), toon = 2; volgende = false;} / / g
else {si (bouton > 20) {ton (piezo, 175), toon = 1; volgende = false;} / / f
else{noTone(Piezo) ; de volgende = true;}}}
Si (teller == 1 & & toon == 2 & & volgende == true) {teller = 2; volgende = false;}
Si (teller == 2 & & toon == 5 & & volgende == true) {teller = 3; volgende = false;} else {si (volgende == true & & teller == 2 & & toon! = 2) {teller = 1;}}
Si (teller == 3 & & toon == 5 & & volgende == true) {teller = 4; volgende = false;} else {si (volgende == true & & teller == 3 & & toon! = 2) {teller = 1;}}
Si (teller == 4 & & toon == 7 & & volgende == true) {teller = 5; volgende = false;} else {si (volgende == true & & teller == 4 & & toon! = 7 & & toon! = 5) {teller = 1;}}
Si (teller == 5 & & toon == 6 & & volgende == true) {teller = 6; volgende = false;} else {si (volgende == true & & teller == 5 & & toon! = 7) {teller = 1;}}
Si (teller == 6 & & toon == 6 & & volgende == true) {teller = 7; volgende = false;} else {si (volgende == true & & teller == 6 & & toon! = 7) {teller = 1;}}
Si (teller == 7 & & toon == 8 & & volgende == true) {teller = 8; volgende = false;} else {si (volgende == true & & teller == 7 & & toon! = 6 & & toon! = 8) {teller = 1;}}
Si (teller == 8 & & toon == 4 & & volgende == true) {teller = 9; volgende = false;} else {si (volgende == true & & teller == 8 & & toon! = 8) {teller = 1;}}
Si (teller == 9 & & toon == 4 & & volgende == true) {teller = 10 ; volgende = false;} else {si (volgende == true & & teller == 9 & & toon! = 8) {teller = 1;}}
Si (teller == 10 & & toon == 6 & & volgende == true) {teller = 11 ; volgende = false;} else {si (volgende == true & & teller == 10 & & toon! = 4) {teller = 1;}}
Si (teller == 11 & & toon == 5 & & volgende == true) {teller = 12 ; volgende = false;} else {si (volgende == true & & teller == 11 & & toon! = 6) {teller = 1;}}
Si (teller == 12 & & volgende == true) {teller = 13 digitalWrite (13, HIGH); myservo.writeMicroseconds(2000) ; delay(5000);} //2000 est la valeur pour le servo ouvert
Si (teller == 13 & & volgende == true & & toon! = 5) {digitalWrite (13, LOW); teller = 1; myservo.writeMicroseconds(1000);} //1000 est la valeur pour le servo fermé
}