Chenillard à Leds - part 1

En guise de premier projet, voici un mini chenillard à leds.
Pour le moment, il n'y a que quelques modèles d'allumage et extinction des leds qui tournent en boucle.
Par la suite, j'ajouterais quelques fonctionnalités.

Ce premier petit projet n'est certes pas compliqué mais il me permet de faire une prise en main d'Arduino assez rapidement.

Plan de montage



Code Source
Fichier: chenillard.pde

/*
 * Chenillard pour Leds branchées sur Pin 6 -> 13 (8 leds)
 */
 
 int NbrLed = 8; // nbre de Leds dans le tableau
 int ledPins[] = { 6,7,8,9,10,11,12,13 };  // Tableau contenant les Pins pour les leds
 
 int interval = 80; // // Interval entre deux actions LEDS, 100 ms
 
 void setup(){
   // Activer les pins pour les leds en sortie
   for( int i=0; i<NbrLed; i++ )
     pinMode( ledPins[i], OUTPUT );
 }
 
 void loop(){
   OnOffAll();
   OnOffEachAtTheTime_LtoR();
   OnOffEachAtTheTime_RtoL();
   GraduatedOnOff_LtoR();
   GraduatedOnOff_RtoL();
   K2000();
 }
 
 // Allume puis éteind toutes les leds en meme temps
 // 8 fois (pcq 8 leds).
 //
 void OnOffAll(){
   for( int iTime=0; iTime<NbrLed; iTime++ )
     for( int iOnOff=0; iOnOff<2; iOnOff++ ) {
       for( int i=0; i<NbrLed; i++ )
         if( iOnOff == 0 ) // Allumer au premier passage  
           digitalWrite( ledPins[i], HIGH );
         else // Eteindre au deuxième passage
           digitalWrite( ledPins[i], LOW );
       delay( interval ); 
     }
 }
 
 // Allume puis éteind chaque led, chaque led a son tour.
 // De gauche à droite
 void OnOffEachAtTheTime_LtoR(){
   for( int i=0; i<NbrLed; i++ ){
     digitalWrite( ledPins[i], HIGH );
     delay( interval );
     digitalWrite( ledPins[i], LOW );
     delay( interval );
   }
 }

 void OnOffEachAtTheTime_RtoL(){
   for( int i=NbrLed-1; i>=0; i-- ){
     digitalWrite( ledPins[i], HIGH );
     delay( interval );
     digitalWrite( ledPins[i], LOW );
     delay( interval );
   }
 }
 
 // allume toutes les leds une par une puis les éteinds
 // De Gauche à Droite
 void GraduatedOnOff_LtoR(){
   for( int i=0; i<NbrLed; i++ ) {
     digitalWrite( ledPins[i], HIGH );
     delay( interval );  
   }
   for( int i=0; i<NbrLed; i++ ) {
     digitalWrite( ledPins[i], LOW );
     delay( interval );  
   }
 }

 // allume toutes les leds une par une puis les éteinds
 // De Gauche à Droite
 void GraduatedOnOff_RtoL(){
   for( int i=NbrLed-1; i>=0; i-- ) {
     digitalWrite( ledPins[i], HIGH );
     delay( interval );  
   }
   for( int i=NbrLed-1; i>=0; i-- ) {
     digitalWrite( ledPins[i], LOW );
     delay( interval );  
   }
 }

 // Allume et éteind les leds à la façon K2000
 // Un aller retour complet
 void K2000(){
   for( int i=0; i<NbrLed; i++) {
      // Allume uniquement la led, la précédente et la suivante
      // éteind toutes les autres.
      for( int iBrowser=0; iBrowser<NbrLed; iBrowser++ ) 
        if( iBrowser==(i-1) || iBrowser==(i+1) || iBrowser==i )
          digitalWrite( ledPins[iBrowser], HIGH );
        else
          digitalWrite( ledPins[iBrowser], LOW );
      delay( interval );
   }

   for( int i=NbrLed-1; i>=0; i--) {
      // Allume uniquement la led, la précédente et la suivante
      // éteind toutes les autres.
      for( int iBrowser=0; iBrowser<NbrLed; iBrowser++ ) 
        if( iBrowser==(i-1) || iBrowser==(i+1) || iBrowser==i )
          digitalWrite( ledPins[iBrowser], HIGH );
        else
          digitalWrite( ledPins[iBrowser], LOW );
      delay( interval );
   }
   
   // eteind les deux dernières led
   digitalWrite( ledPins[0], LOW );
   digitalWrite( ledPins[1], LOW );
}

3 commentaires:

  1. Bonjour a toi je découvre le arduino aurai tu par hasard un schema de branchement du moins une photo de ton montage merci d'avance

    RépondreSupprimer
  2. Bonjour, peut on selon vous gérer le changement d'animation en tournant le potar, pour pouvoir éliminer le poussoir ?

    RépondreSupprimer
  3. Bonjour
    Ton code est pas mal du tout ! même plutôt super bien :-) . Je l'ai réutilisé pour faire un bonhomme de neige clignotant, avec des leds 3 couleurs, et un DHT22 pour faire varier le clignotement en rouge quand on souffle dessus en changeant la table ledPins dans différentes configuration des leds.
    J'ai pas encore fini mon bonhomme, je suis en train de paramétrer des moteurs pour les yeux, la langue et le balais.
    Merci à toi, tu m'as raccourcie mon dev!
    Jean

    RépondreSupprimer