Table des matières
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);
}


