Étape 10 : Arduino croquis pris part
/*
* Version M 2.5
Pour les ATTiny85 16Mhz
*/
#include « pitches.h »
Cette ligne comprend l’onglet emplacement dans le code. L’onglet pitch.h contient la hauteur différente - nous les appellerons « NOTE » à l’avenir.
la mélodie d’int [] = {}
NOTE_F7, NOTE_G4, NOTE_A2} ;
Cette « mélodie » de tableau détient les notes qui seront joués et l’ordre, en qu'ils se joueront. J’ai expérimenté avec des notes de 2 à 5. Pour mon projet, j’ai senti 3 notes faits une bonne warble ou gazouillis de bruit pour les sonics que je faisais. J’ai eu un copain musicien analyser le vrai son de l’émission de télévision et il m’a dit que la note prédominante était à l’échelle G. S’il vous plaît plaisante pas avec ce tableau en ajoutant et supprimant des notes, modifier les notes et organisant l’ordre jusqu'à ce que vous obtenez le son que vous aimez.
int noteDurations [] = {9,12,7} ;
Durée de la note. Notes de musique sont généralement bonne note, note blanche, noire et 8ème note. Cela est représenté dans le code comme 1,2,4,8, ce qui signifie que 1 seconde divisée par 1,2,4 ou 8. Toutefois, nous ne faisons pas la musique. Nous faisons un bruit warbly, gai. Donc, j’ai joué avec la durée des notes non conventionnels comme les durées de notes 1/15ème d’un deuxième long ou 1/6ème ou 1/12ème. Le tableau « noteDuration » ci-dessous indique que NOTE_F7 se jouera au 1/9ème durée, NOTE_G4 joue au 1/12èmeet NOTE_A2 au 1/7ème. Une durée de note doit être spécifiée pour chaque note dans le tableau « mélodie ». Jouer avec noteDuration pour obtenir le bon rythme pour votre sonic.
int x = 0 ;
Il s’agit juste d’une variable à être utilisé comme un compteur
led1 int = 3 ;
led2 int = 2 ;
void setup() {}
pinMode (led1, sortie) ;
pinMode (led2, sortie) ;
}
Ces deux variables définissent le NIP pour notre sortie à LED. Si vous voulez vraiment vous pouvez ajouter deux LEDs plus puisque pas tous les pins sur le ATTiny85 est utilisé. Mais je pense que les deux sont suffisants.
void loop() {}
Boucle principale. À chaque passage dans la boucle principale, qu’une note est jouée à la durée spécifiée, suivie d’une pause (renseignements sur les pauses ci-dessous).
Si (x < 5) {}
digitalWrite (led1, HIGH) ;
digitalWrite (led2, faible) ;
x = x ++ ;
}
ElseIf (x < 7) {}
digitalWrite (led1, HIGH) ;
digitalWrite (led2, HIGH) ;
x = x ++ ;
}
ElseIf (x < 9) {}
digitalWrite (led1, faible) ;
digitalWrite (led2, HIGH) ;
x = x ++ ;
}
else {}
x = 0 ;
}
Cette section définit le modèle de clignotement de LED. Utilisez n’importe quelle logique, que vous aimez faire le modèle de blink que vous aimez. Mine d’utilisations « x » comme un compteur avec une gamme de 0-10. À la gamme inférieure LED1 sur et DEL2 est éteint. Puis dans le milieu de gamme de « x », les deux LEDs sont sur. À la gamme supérieure de « x » LED1 est OFF et DEL2 est sur.
pour (int thisNote = 0; thisNote < 3; thisNote ++) {}
int noteDuration = 1000/noteDurations [thisNote] ;
Le code ci-dessus parcourt et joue les notes dans l’un note tableau de mélodie à la fois. La partie où il est écrit « thisNote < 3 » la valeur doit être égal au nombre de notes dans le tableau. Donc, si « mélodie » a quatre notes puis "thisNote < 4". Le reste du code chiffres sur la durée de la note en millisecondes.
ton (4, melody[thisNote],noteDuration) ;
C’est où le ton est effectivement émise à l’orateur. Dans cet exemple, la sortie est sur la broche 4.
int pauseBetweenNotes = noteDuration *. 14 ;
Delay(pauseBetweenNotes) ;
noTone(4) ;
Une pause entre les notes doit être inséré dans le cas contraire, les notes se bousculent et ça sonne comme un mauvais bruit strident. La durée de la pause ne peut pas être un montant fixe de temps (comme 1/4 seconde entre chaque note) mais doit se fonder sur la durée de la note de son droit. Le code ci-dessous définit le temps de pause en pourcentage de la durée de la note. Jouer avec la valeur décimale pour obtenir un temps de pause bonne entre les notes. J’ai trouvé une valeur comprise entre.09-.21 pour être une bonne quantité de pause. La dernière ligne « noTone(4) » désactive la sortie à la borne 4.
}
}
FIN du code