Formation Quintessence ElectroLab 1
Important
- Inscrivez-vous dans le sondage sur le site de l'ECM si vous êtes intéressés
- Amenez votre PC portable
- Lisez (pas en entier
) ce wiki pour vous familiariser à l'environnement Arduino
But de la formation
Déclencher un mécanisme au bout de 9 secondes de compte à rebours dans le but de commander un lance-confetti de classe Delirium I pour faire une vidéo trop stylée !
Partie Électronique -- Justin CANO
Nous devrons créer le montage suivant pour réussir à lancer les confettis dans les délais, dans un premier temps nous modéliserons l'ordre de lancer par une diode rouge DL.
Quels objectifs, capitaine ?
Il faudrait modéliser le compte à rebours par trois diodes RGB (diodes 3 couleurs)) qui feront l'effet suivant :
Puis une dernière diode classique s'allumerait (fin du compte à rebours)
….
De la musique ???
Pour les plus avancés dans leur montage, nous génèrerons quelques notes de musique avec des buzzers piezzo éléctronique pour faire comme les compte à rebours dans les films d'espionnage ^^
Mais euh ! Quels sont mes besoins !????
Nomenclature du circuit :
- Une Arduino Nano
- Quatre transistors NPN BC547B ou équivalent en boitier TO 92
- Trois diodes RGB
- Une diode classique rouge
- Quatre résistances 330 Ω
- Quatre résistances 15 kΩ
- Un bouton-poussoir
- Un buzzer pièzo-électrique
Le circuit
Brochage des composants
Transistor NPN BC 547B
Diode RGB
Programmation Arduino -- Justin CANO
Information utile
Code
int SortieRouge = 3; int SortieBleue = 10; int SortieVerte = 11; int EntreeInter = A0; int Diode1 = 4; int Diode2 = 5; int Diode3 = 6; int SortieFeu = 7; int SortieBuzzer = 8; unsigned long t ; unsigned long tStart; void setup() { // II - Déclaration des sortie et mise à Zéro // NB : Par pure flemme je mets toutes les pins digitales de 2 à 11 en sortie et à l'état bas... for(int i = 2; i<12; i++) { pinMode(i,OUTPUT); digitalWrite(i,LOW); } } // III - Définition de fonctions utiles pour le programme // Sons et lumières void RGB(int R, int G, int B) { analogWrite(SortieRouge,R); analogWrite(SortieBleue,G); analogWrite(SortieRouge,B); t=millis(); } void carre(int TempsHaut, int TempsBas) { digitalWrite(SortieBuzzer, HIGH); delayMicroseconds(TempsHaut); digitalWrite(SortieBuzzer, LOW); delayMicroseconds(TempsBas); } void rouge(){ RGB(255,0,0); carre(150,500); } void vert() { RGB(0,255,0); carre(100,3000); } void bleu(){ RGB(0,0,255); carre(500,5000); } void jaune(){ RGB(240, 195, 0); carre(500,2000); } void orange(){ RGB(223, 109, 20); carre(150,1000); } void violet(){ RGB(102, 0, 255); carre(100,0); } void adressage(boolean a, boolean b, boolean c){ if(a) { digitalWrite(Diode1,HIGH); } else if(b){ digitalWrite(Diode2,HIGH); } else if(c){ digitalWrite(Diode3,HIGH); } else { digitalWrite(Diode1,LOW); digitalWrite(Diode2,LOW); digitalWrite(Diode3,LOW); } } // IV -- Fonction principale void loop() { t=millis(); boolean start = digitalRead(EntreeInter); if(start) { tStart=millis(); while(t-tStart<500) { bleu(); adressage(true,false,false); } while(t-tStart<1000) { bleu(); adressage(true,true,false); } while(t-tStart<1500) { bleu(); adressage(true, true ,true); } while(t-tStart<2000) { vert(); adressage(false, false, true); } while(t-tStart<2500) { vert(); adressage(false, true, true); } while(t-tStart<3000) { vert(); adressage(true, true, true); } while(t-tStart<3500) { jaune(); adressage(true, false,false ); } while(t-tStart<4000) { jaune(); adressage(true, true, false); } while(t-tStart<4500) { jaune(); adressage(true, true, true); } while(t-tStart<5000) { orange(); adressage(false, false, true); } while(t-tStart<5500) { orange(); adressage(false, true , true); } while(t-tStart<6000) { orange(); adressage(true, true, true); } while(t-tStart<6500) { rouge(); adressage(true,false, false); } while(t-tStart<7000) { rouge(); adressage(true, true, false); } while(t-tStart<7500) { rouge(); adressage(true, true, true); } while(t-tStart<8000) { RGB(0,0,0); adressage(false, false, false); } while(t-tStart<8500) { rouge(); adressage(true, true, true); } while(t-tStart<10000) { adressage(true,true,true); violet(); rouge(); vert(); jaune(); orange(); if(t-tStart>9000) { digitalWrite(SortieFeu, HIGH); } } } delay(1); }