Sur bandeau de LED

De Wiki L.A.B
Aller à : navigation, rechercher
Matériel
Principe

Le but est de manipuler la librairie neopixel fourni par Adafruit https://github.com/adafruit/Adafruit_NeoPixel en vue de la dernière journée pour la réalisation du module lightpainting. La première chose à faire est d'importer la librairie Neopixel dans Arduino et de redémarrez au besoin l'IDE.

Vous pouvez ajouter la dépendance de votre programme soit via l'IDE soit en ajoutant manuellement

#include <Adafruit_NeoPixel.h>

Avant de donner des instructions à la bande de Led, il est nécessaire de l'initialiser :

void setup() {
  strip.begin();
  strip.show(); 
}

La seconde ligne force les pixels à afficher leur couleur mais comme aucune n'a encore été défini, ceci met tout en off :)

Il existe deux façons de contrôler les pixels :

strip.setPixelColor(n, red, green, blue);

ou bien

uint32_t color = strip.Color(255, 0, 255); (magenta)
strip.setPixelColor(n, color);

Il est aussi possible de récupérer le nombre de pixels déclarés dans la bande

uint16_t n = strip.numPixels();

Et de jouer sur la luminosité

strip.setBrightness(64);

ATTENTION à bien appeler show après toutes ces méthodes comme pour setPixel sinon l'instruction n'est pas poussée vers la bande.

Montage

NeoPixel-UserGuide-Arduino-Brancher-01.png

Programme

Le but de ce programme est de faire un chenillard sur la bande de led.

// Simple NeoPixel test.  Lights just a few pixels at a time so a
// 1m strip can safely be powered from Arduino 5V pin.  Arduino
// may nonetheless hiccup when LEDs are first connected and not
// accept code.  So upload code first, unplug USB, connect pixels
// to GND FIRST, then +5V and digital pin 6, then re-plug USB.
// A working strip will show a few pixels moving down the line,
// cycling between red, green and blue.  If you get no response,
// might be connected to wrong end of strip (the end wires, if
// any, are no indication -- look instead for the data direction
// arrows printed on the strip).
 
#include <Adafruit_NeoPixel.h>
 
#define PIN      6
#define N_LEDS 144
 
Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, PIN, NEO_GRB + NEO_KHZ800);
 
void setup() {
  strip.begin();
}
 
void loop() {
  chase(strip.Color(255, 0, 0)); // Red
  chase(strip.Color(0, 255, 0)); // Green
  chase(strip.Color(0, 0, 255)); // Blue
}
 
static void chase(uint32_t c) {
  for(uint16_t i=0; i<strip.numPixels()+4; i++) {
      strip.setPixelColor(i  , c); // Draw new pixel
      strip.setPixelColor(i-4, 0); // Erase pixel a few steps back
      strip.show();
      delay(25);
  }
}