Étape 6: Code
Enregistrer ces 3 codes pour Ecoute, voir et chanter en tant que fichiers arduino (.ino) séparément :
J’ai inclus les fichiers IDE, mais ils ont des noms différents.
Écouter :
int soundSensorPin = A0 ;
int soundReading = 0 ; int soundThreshold = 500 ; int intensité [3] = {0,0,0} ; int LEDPins [3] = {2,4,5} ; int numberOfPins = 3 ; int currentPin = 0 ; int fadeCounter = 0 ; int fadeDelay = 50 ; switcher boolean = true ;
void setup() {pinMode(soundSensorPin, INPUT) ; pour (int i = 0; i
void loop() {soundReading=analogRead(soundSensorPin) ; if(soundReading>soundThreshold) {if(switcher) {aboveThreshold(currentPin) ; switcher = true;}} else {if(switcher) {belowThreshold() ; switcher = true;}}}
void aboveThreshold (int cPin) {switcher = false end if (intensité [cPin] < 10) {intensité [cPin] = 255 ; delay(50) ; currentPin = currentPin + 1;}
if(currentPin==numberOfPins) {currentPin = 0;}}
void belowThreshold() {switcher = false ; fadeCounter ++; if(fadeCounter==fadeDelay) {fadeCounter = 0; pour (int i = 0; j’ai
Source : https://gist.github.com/michelleboisson/3830481
Suivie de voir :
/*
* Commande de Servo par capteur de lumière (par exemple la photorésistance). ** Copyright (C) 2010 Efstathios Chatzikyriakidis (contact ** ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le modifier * elle aux termes de la GNU General Public License telle que publiée par * la Free Software Foundation, soit la version 3 de la licence, ou * (à votre choix) toute version ultérieure. ** ce programme est distribué dans l’espoir qu’il sera utile, * mais sans aucune garantie, sans même la garantie implicite de * qualité marchande ou ADEQUATION a un usage particulier. Voir la * GNU General Public License pour plus de détails. ** Vous devriez avoir reçu une copie de la GNU General Public License * avec ce programme. Si ce n’est pas le cas, voir. * / / / include bibliothèque pour servo. #include servo myServo ; créer un objet de servo pour contrôler un servo. const int servoPin = 7 ; le nombre de broches (PWM) pour le servo. const int sensorPin = 3 ; le nombre de broches pour le capteur d’entrée. valeurs actuelles et antérieures pour dispositif servo. int valServo = 0 ; oldValue int = 0 ; les valeurs suivantes peuvent changer selon le capteur de lumière. effectuer un étalonnage avec une lumière sombre et pure pure dans un premier temps. const int lightMin = 170 ; Définissez la valeur appropriée de la cellule photoélectrique. const int lightMax = 512 ; Définissez la valeur appropriée de la cellule photoélectrique. const int LIGHT_SENSE = 5 ; valeur de différence de sensibilité. const long /DELAY = 15 ; temps de retard de mouvement servo à millis. entrée de point de démarrage (s’exécute une fois). void configuration () {/ / set capteur comme entrée. pinMode (sensorPin, INPUT); / / fixer le servo sur un pin myServo.attach(servoPin);} / / boucle l’esquisse principale. void loop () {/ / obtenir la valeur de l’int valServo de capteur de lumière. = analogRead(sensorPin); / / carte de la valeur pour le min, max de la servo. valServo = carte (valServo, lightMin, lightMax, 0, 179); / / s’assurer que la valeur est comprise entre min, max de la valServo servo. = contraindre (valServo, 0, 179); / / déplacer le servo que si la lumière change assez. si (abs (valServo - oldValue) > LIGHT_SENSE) {/ / déplacer le servo. myServo.write(valServo); / / conserver la dernière valeur. oldValue = valServo;} / / attendre un certain temps le servo pour déplacement. delay(delayTime);}
Source :
Suivie de chanter :
/*
Arduino Mario Bros Tunes avec Piezo Buzzer et PWM connecter le côté positif du Buzzer à la broche 3, puis le côté négatif d’une résistance d’ohm 1 k. Connectez l’autre extrémité de la résistance d’ohms 1 k sur la broche de ground(GND) sur l’Arduino. par : Dipto Pratyaksa dernière mise à jour : 31/03/13 * / / *** * constantes Public *** / #define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define 49 NOTE_G1 #define NOTE_GS1 52 #define NOTE_A1 55 #define NOTE_AS1 58 #define NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_ E2 #define 82 NOTE_F2 #define 87 93 NOTE_FS2 #define NOTE_G2 98 #define NOTE_GS2 #define 104 NOTE_A2 #define 110 NOTE_AS2 117 #define NOTE_B2 #define 123 NOTE_C3 131 #define NOTE_CS3 #define 139 NOTE_D3 #define 147 NOTE_DS3 #define 156 NOTE_E3 #define 165 NOTE_F3 #define 175 NOTE_FS3 #define 185 NOTE_G3 #define 196 NOTE_GS3 #define 208 NOTE_A3 #define 220 NOTE_AS3 #define 233 NOTE_B3 #define 247 NOTE_ C4 #define 262 NOTE_CS4 277 #define NOTE_D4 #define 294 NOTE_DS4 #define 311 NOTE_E4 #define 330 NOTE_F4 #define 349 NOTE_FS4 #define 370 NOTE_G4 #define 392 NOTE_GS4 #define 415 NOTE_A4 #define 440 NOTE_AS4 #define 466 NOTE_B4 494 #define NOTE_C5 #define 523 NOTE_CS5 #define 554 NOTE_D5 #define 587 NOTE_DS5 622 #define NOTE_E5 #define 659 NOTE_F5 #define 698 NOTE_FS5 #define 740 NOTE_G5 #define 784 NOTE_ GS5 831 #define NOTE_A5 880 #define NOTE_AS5 932 #define NOTE_B5 988 #define NOTE_C6 1047 #define NOTE_CS6 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOTE_E6 1319 #define NOTE_F6 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_ E7 2637 #define NOTE_F7 2794 #define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_AS7 3729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978 #define melodyPin 3 //Mario thème principal mélodie int mélodie [] = {NOTE_E7, NOTE_E7, 0, NOTE_E7 , 0, NOTE_C7, NOTE_E7, 0, NOTE_G7, 0, 0, 0, NOTE_G6, 0, 0, 0, NOTE_C7, 0, 0, NOTE_G6, 0, 0, NOTE_E6, 0, 0, NOTE_A6, 0, NOTE_B6, 0, NOTE_AS6, NOTE_A6, 0, NOTE_G6, NOTE_E7, NOTE_G7, NOTE_A7, 0, NOTE_F7, NOTE_G7, 0, NOTE_E7, 0, NOTE_C7, NOTE_D7, NOTE_B6 0, 0, NOTE_C7, 0, 0, NOTE_G6, 0, 0, NOTE_E6, 0, 0, NOTE_A6, 0, NOTE_B6, 0, NOTE_AS6, NOTE_A6, 0, NOTE_G6, NOTE_E7, NOTE_G7, NOTE_A7, 0, NOTE_F7, NOTE_G7, 0, NOTE_E7, 0, NOTE_C7, NOTE_D7, NOTE_B6, 0, 0} ; Mario principal leur tempo tempo d’int [] = {12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,} ; Pègre mélodie int underworld_melody [] = {NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0 NOTE_DS4, NOTE_CS4, NOTE_D4, NOTE_CS4, NOTE_DS4, NOTE_DS4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_FS4, NOTE_F4, NOTE_E3, NOTE_AS4, NOTE_A4, NOTE_GS4, NOTE_DS4, NOTE_B3, NOTE_AS3, NOTE_A3, NOTE_GS3, 0, 0, 0} ; Underwolrd tempo int underworld_tempo [] = {12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 3, 12, 12, 12, 12, 12, 12, 6, 6, 18, 18, 18, 6, 6, 6, 6, 6, 6, 18, 18, 18, 18, 18, 18, 10, 10, 10, 10, 10, 10, 3, 3, 3} ; void setup(void) {pinMode (sortie 3,); //buzzer pinMode (sortie 13,); //led indicateur en chantant une note} void loop() {//sing les airs sing(1) ; sing(1) ; sing(2);} int chanson = 0 ; Sub sing (int s) {/ / itérer sur les notes de la mélodie : chanson = s; if (chanson == 2) {Serial.println ("' Underworld thème'"); int taille = sizeof(underworld_melody) / sizeof (int); pour (int thisNote = 0; thisNote < taille ; thisNote ++) {/ / pour calculer la durée de la note, prenez une seconde / / divisé par le type de note. / / par exemple note noire = 1000 / 4, croche = 1000/8, etc. int noteDuration = 1000 / underworld_tempo [thisNote]; buzz (melodyPin underworld_melody [thisNote], noteDuration) ; pour distinguer les notes, définir un temps minimal entre eux. Durée + 30 % de la note semble bien fonctionner : int pauseBetweenNotes = noteDuration * 1.30 ; Delay(pauseBetweenNotes) ; arrêter la lecture de ton : buzz (melodyPin, 0, noteDuration) ; }} else {Serial.println ("' Mario Theme'"); int taille = sizeof(melody) / sizeof (int); pour (int thisNote = 0; thisNote < taille ; thisNote ++) {/ / pour calculer la durée de la note, prenez une seconde / / divisé par le type de note. / / par exemple note noire = 1000 / 4, croche = 1000/8, etc. int noteDuration = 1000 / tempo [thisNote]; buzz (melodyPin, mélodie [thisNote], noteDuration); / / pour distinguer les notes, définir un temps minimal entre eux. / / DUREE + 30 % de la note semble bien fonctionner : int pauseBetweenNotes = noteDuration * 1.30 ; Delay(pauseBetweenNotes) ; arrêter la lecture de ton : buzz (melodyPin, 0, noteDuration) ; buzz Sub}}} (int targetPin, fréquence longue, longue durée) {digitalWrite (13, HIGH); delayValue long = 1000000 / fréquence / 2; / / calculer la valeur de délai entre transitions / / / 1 seconde est d’une valeur de microsecondes, divisée par la fréquence, puis divisée en deux depuis le / / / il y a deux phases à chaque cycle long numCycles = fréquence * longueur / 1000; / / calculer le nombre de cycles pour bon moment / / / multiplier la fréquence, qui est vraiment cycles par seconde , par le nombre de secondes pour / / / obtenir le nombre total de cycles de production pour (longtemps j’ai = 0; j’ai < numCycles; i ++) {/ / pour la longueur calculée de temps... digitalWrite (targetPin, HIGH); / / écriture la broche buzzer haute pour faire sortir le diaphragme delayMicroseconds(delayValue); / / attendre le délai calculé valeur digitalWrite (targetPin, basse); / / écriture la goupille de sonnerie faible se replier le diaphragme delayMicroseconds(delayValue); / / attendre encore ou la valeur de délai calculé} digitalWrite (13 FAIBLE) ; }