Neopixel

Dette eksempel laver et “løbelys” med blå farver.

Hardware setup

Arduino og Neopixel LED array

Arduino og LED array hardware

LED modulerne er forbunde i en kæde, så data signalets output er forbundet til input på næste LED modul. Alle modulerne forsynes med 5V fra arduino. Der er monteret en kondensator for at udjævne spændingen. Datasignalet tages fra pin 6 på Arduino.

Arduino & NeoPixel

For at kunne styre arrayet af NeoPixel LED’er kan du benytte softwarebiblioteket Adafruit Neopixel.

Det kan tilføjes til din Arduino IDE installation ved at bruge udvidelsesværkttøjet (Værktøjer –> Manage libraries…), som vist på dette skærmbillede.

Arduino Library manager

Søg efter neopixel i Arduino Library manager

Der følger en del eksempelkode med i til Neopixel biblioteket til Arduino. Denne guide beskriver hvordan man bruger eksempler i Arduino.

Prøv f.eks. det der hedder simple, i Adafruit Neopixel biblioteket. Husk at ændre antallet af LED’er i koden, så det passer til hardwaren. Bemærk også, at du skal bruge samme output pin i koden, som du har forbundet med ledninger.

Kode eksempel

Her er en sketch, der laver et “løbelys” med blå farver.

#include <Adafruit_NeoPixel.h>

// Which pin on the Arduino is connected to the NeoPixels?
#define PIN        6 // On Trinket or Gemma, suggest changing this to 1

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 10

Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

// Time (in milliseconds) to pause between pixels
#define DELAYVAL 500

void setup() {
  // INITIALIZE NeoPixel strip object (REQUIRED)
  pixels.begin();
}

void loop() {
  pixels.clear(); // Set all pixel colors to 'off'

  // The first NeoPixel in a strand is #0, second is 1, all the way up
  // to the count of pixels minus one.
  for(int i=0; i<NUMPIXELS; i++) { // For each pixel...

    // pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255
    pixels.setPixelColor(i, pixels.Color(0, 20, 150));

    // Send the updated pixel colors to the hardware.
    pixels.show();

    // Pause before next pass through loop
    delay(DELAYVAL);
  }
}

Materiale