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 !
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.
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)
….
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 ^^
Nomenclature du circuit :
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); }