start:projet:arduino:guirlande_interactive

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
start:projet:arduino:guirlande_interactive [2014/12/18 15:34] – [II - Schéma électrique] jcanostart:projet:arduino:guirlande_interactive [2015/01/04 22:22] (Version actuelle) – [II - Schéma électrique] jcano
Ligne 1: Ligne 1:
 +======Guirlande interactive======
  
 +===== I - Le projet =====
 +
 +Ceci est une application **marrante** que vous pouvez réaliser sans problème au FabLab. Elle consiste à faire un effet de mouvement avec des diodes en chaîne (**chenillard**), la vitesse de défilement de ce dernier étant proportionnelle à l'éclairement par le biais d'une **LDR** (Résistance Photosensible).
 +
 +===== II - Schéma électrique =====
 +{{ :start:projet:arduino:schema_guirlande.jpg |}}
 +// **NB** = pour que le montage fonctionne normalement, permutez la LDR (résistance photosensible) et la résistance fixe de 10K. En fait, dans ce cas, la tension du pont diviseur sera proportionnelle à l'éclairement (et non à l'obscurité). Je me suis passablement trompé lors de l'édition du schéma, je corrigerai mais pas tout de suite, méa culpa ! // \\
 +Par contre, il est judicieux de tester plusieurs valeurs de référence dans le montage : l'effet dépend de la luminosité ambiante donc dépend de la saison & du lieu. Si vous réalisez ceci à 6h, en décembre au FabLab Marseille vous avez une chance pour qu'il ne faille rien régler du tout !^_^
 +===== III - Programme =====
 + \\
 +  int ULDR = A0;
 +  
 +  void setup () {
 +    pinMode(2,OUTPUT);
 +    pinMode(3,OUTPUT);
 +    pinMode(4,OUTPUT);
 +    pinMode(5,OUTPUT);
 +    pinMode(6,OUTPUT);
 +    pinMode(7,OUTPUT);
 +    pinMode(8,OUTPUT);
 +    pinMode(9,OUTPUT);
 +    pinMode(10,OUTPUT);
 +    pinMode(11,OUTPUT);
 +    pinMode(12,OUTPUT);
 +    pinMode(13,OUTPUT); }
 +  
 +  void loop () {
 +    int i = 12;
 +    int K=analogRead(ULDR)*5000.0/1024.0;
 +     if (K<1500) {
 +       i = 2 ; }
 +    while ( i<13 && i>1) {
 +    K = analogRead(ULDR)*5000.0/1024.0;
 +    int Ka = (K - 800)/5;
 +    int Kpos = constrain(Ka,0,6000);
 +    digitalWrite(i,HIGH);
 +    delay(Kpos+10);
 +    digitalWrite(i,LOW);
 +    if (K<1500) {
 +    i++;
 +  }
 +    else {i--; }
 +    }
 +  }
 +  
 +