start:projet:arduino:formationgdr1

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
start:projet:arduino:formationgdr1 [2015/10/19 12:12] – [Partie Électronique -- Justin CANO] jcanostart:projet:arduino:formationgdr1 [2015/10/19 14:28] (Version actuelle) – [Important] jcano
Ligne 1: Ligne 1:
 +======Formation Quintessence ElectroLab 1======
  
 +<note tip>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]]
 +</note>
 +
 +====Important====
 +
 +<note 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]]
 +</note>
 +====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 =====
 +<note warning>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</note>
 +
 +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 =====