Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog

Suite de l'article "réalisation d'un arbre de noel animé partie 1/2"

 

Pour allumer nos leds , il va être nécessaire de programmer l'arduino. 

J'ai fais le choix de cabler les leds sur des sorties .Elles seront pilotées en mode analogique.

La valeur numérique peut varier entre 0 et 255 . 0 correspond à un 0V sur la borne de la sortie sélectionnée : la led est éteinte. 255 correspond à 5V . La led est allumée avec sa luminosité maximale . L'avantage de ce type de sortie , c'est que l'on peut faire varier l'intensité lumineuse de la led . Avec une sortie digitale , on ne peut pas , on est limité à 2 états (0 éteint , 1 allumé).

 

Les broches ou le mode PWM est disponible sont : 3 ,5 ,6 ,9 ,10 ,11.

La programmation :

Dans un 1er temps , il va falloir déclarer l'affectation des broches en mode sortie.

// Projet Christmas Tree 5 Leds
// PETIT Olivier
// 09/11/2015 
// V1.00

int ledPin1 = 3;  // la led 1 sera affectée à la broche n°3
int ledJPin2 = 5;
int ledPin3 = 6;
int ledJPin4 = 9;
int ledPin5 = 10;


void setup() {  
  pinMode(ledPin1, OUTPUT);
//la broche n°3 est déclarée comme une sortie
  pinMode(ledJPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledJPin4, OUTPUT);
  pinMode(ledPin5, OUTPUT);
}

L'affectation des broches est terminée . Maintenant nous allons voir la boucle principale qui permet d'allumer nos leds.

void loop() {  

  // la 1ere séquence On allume une led de haut en bas en eteignant la précédente

  // le cycle est répété 10 fois
  for (int i=0; i <= 10; i++){ 
    sequence(255,0,0,0,0,150);  
// Appelle de la fonction sequence

 // décomposition de la ligne sequence

// sequence(led1=255,led2=0,led3=0,led4=0,led5=0, timer =150);

// sur cette ligne seule la led1= allumée pendant 150ms


    sequence(0,255,0,0,0,150); 
    sequence(0,0,255,0,0,150);
    sequence(0,0,0,255,0,150);
    sequence(0,0,0,0,255,150);
  }

  

 // la 2eme séquence : cycle allumage alternée des leds rouges et jaunes

  // le cycle est répété 25 fois


  for (int i=0; i <= 25; i++){ 
    sequence(255,255,255,255,255,200);
    sequence(0,0,0,0,0,200); 
  }

 

/* la 3eme séquence : on allume les leds de bas en haut avec une nuance les leds s'éteignent progressivement (valeur = 125)

 le cycle est répété 10 fois */

 
  for (int i=0; i <= 10; i++){ 
    sequence(0,0,0,0,255,150);
    sequence(0,0,0,255,125,150);
    sequence(0,0,255,125,0,150);
    sequence(0,255,125,0,0,150);
    sequence(255,125,0,0,0,150);
  }
 
  
}

/*Séquence qui permet de diminuer le nombre de lignes dans le programme et ainsi

 simplifier le fonctionnement . Cette partie de programme ne doit pas être modifiée .*/


int sequence(int l1,int l2,int l3,int l4,int l5,int d1){
  analogWrite(ledPin1,l1);
// Led1
  analogWrite(ledJPin2,l2); // Led2
  analogWrite(ledPin3,l3); // Led3
  analogWrite(ledJPin4,l4); // Led4
  analogWrite(ledPin5,l5); // Led5
  delay(d1); // Timer 
}

 

Une petite vidéo pour illustrer l'allumage des leds.

Dans la boucle Loop avec un peu d'imagination on peut personnaliser facilement les cycles d'allumage des Leds que l'on désire.

Ex : Pour faire clignoter 20x la 3eme Led toutes les 200 ms il suffit d'insérer le code :

 for (int i=0; i <= 20; i++){ 
    sequence(0,0,255,0,0,200);  // On allume uniquement la 3eme led pendant 200ms
    sequence(0,0,0,0,0,200);  // On éteint toutes les leds pendant 200ms    
  } 

 

Voilà un petit exemple qui permet de s'initier à l'Arduino.

A vous d'essayer maintenant....

 

Tag(s) : #Arduino, #Astuces