start:projet:arduino:formationgdr1

Formation Quintessence ElectroLab 1

Marseille, le Mercredi 21 Octobre 2015
Intervenants :
  • Justin Cano, Partie Electronique ~ Commande Mail
  • Alexandre Guglielmi, Partie Mécanique ~ Effecteurs Mail
Aucun prérequis technique n'est demandé mais quelques formalités sont à remplir :

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 !

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.

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

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

Transistor NPN BC 547B

Diode RGB

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);
}
  • start/projet/arduino/formationgdr1.txt
  • Dernière modification : 2015/10/19 14:28
  • de jcano