======Formation Quintessence ElectroLab 1====== Marseille, le Mercredi 21 Octobre 2015 \\ **Intervenants** : * Justin Cano, //Partie Electronique ~ Commande// [[mailto:jcano@centrale-marseille.fr |Mail]] * Alexandre Guglielmi, //Partie Mécanique ~ Effecteurs// [[mailto:aguglielmi@centrale-marseille.fr|Mail]] ====Important==== Aucun prérequis technique n'est demandé mais quelques formalités sont à remplir : * Inscrivez-vous dans le sondage [[http://rdvz.centrale-marseille.fr/qms|sur le site de l'ECM]] si vous êtes intéressés * Amenez votre PC portable * Lisez (pas en entier LOL) ce wiki [[start:projet:arduino:pour_commencer| 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 ===== Ne vous inquiétez pas si ce qui suit est du charabia, la formation dure 3 heures dont 1H30 d'Arduino donc vous aurez tout le temps de comprendre le tout 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 : \\ {{ :start:projet:arduino:formationgdr:chenillardgdr.gif |}} \\ 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===== {{ :start:projet:arduino:formationgdr:diodergb.jpg |}} ==== Brochage des composants ==== === Transistor NPN BC 547B === {{ :start:projet:arduino:bc_547b_brochage.png |}} === Diode RGB === {{ :start:projet:arduino:formationgdr:rgb_schema.jpg |}} ===== Programmation Arduino -- Justin CANO ===== === Information utile === Codage RGB : [[http://www.toutes-les-couleurs.com/code-couleur-rvb.php]] \\ === 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); } ===== L'actionneur -- Alexandre GUGLIELMI =====