======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 =====