Les 9 - LED matrix aansturen

We gaan nu met een LED matrix werken.

Benodigdheden

  1. Arduino (Uno)
  2. WS2812B LED matrix

Stap 1: Hardware Aansluiten

Stap 2: FastLED Bibliotheek installeren

  1. De LED matrix heeft de FastLED bibliotheek nodig. Hiermee krijgt de Arduino allemaal nieuwe functies voor het gebruik van de LED matrix.
  2. Ga via Tools naar Manage libraries, zoek de FastLED library en klik op INSTALL.

Stap 3: Programmeren van een simpel voorbeeld

  1. Open een nieuw project in de Arduino IDE.
  2. FastLED library: Als eerste (dus nog voor de setup) met je in je code aangeven dat je de FastLED library wil gebruiken.
    #include <FastLED.h>
  3. LED variabelen:
    #define LED_PIN     6      // led pin
    #define NUM_LEDS    20     // totaal aantal leds in de matrix (controleer dit met jouw matrix)
    
    CRGB leds[NUM_LEDS];
  4. Setup-functie:
    void setup()
    {
       FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
    }
  5. Loop-functie: Zet wat ledjes op kleur. Kijk goed naar de nummering van de leds!
    void loop()
    {
       // LED 0 is de eerste LED
       leds[0] = CRGB(255, 0, 0);          // De kleurvolgorde is rood (0-255), groen (0-255), blauw (0-255)
       FastLED.show();                     // toon de LEDs
       delay(500);
    
       leds[1] = CRGB(0, 255, 0);
       FastLED.show();
       delay(500);
    
       leds[2] = CRGB(0, 0, 255);
       FastLED.show();
       delay(500);
    
       leds[7] = CRGB(150, 0, 255);
       FastLED.show();
       delay(500);
    
       leds[8] = CRGB(255, 200, 20);
       FastLED.show();
       delay(500);
    
       leds[14] = CRGB(85, 60, 180);
       FastLED.show();
       delay(500);
    
       leds[19] = CRGB(50, 255, 20);
       FastLED.show();
       delay(500);
    }

Probeer wat kleuren en LED nummers te veranderen. Probeer te begrijpen wat er gebeurt.

Stap 4: Programmeer een simpel looplicht

Nu maken we een automatisch looplicht.

  1. Open een nieuw project in de Arduino IDE.
  2. FastLED library:
    #include <FastLED.h>
  3. LED gegevens:
    #define LED_PIN     6
    #define NUM_LEDS    20     // aantal LEDS
    #define BRIGHTNESS  50     // helderheid
    CRGB leds[NUM_LEDS];
  4. Setup-functie:
    void setup()
    {
      FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
      FastLED.setBrightness(BRIGHTNESS);   // pas helderheid aan
    }
  5. Loop-functie: Een eenvoudig voorbeeld met een bewegend licht.
    void loop()
    { // stap van 0 tot NUM_LEDS met variable i
      for(int i = 0; i < NUM_LEDS; i++)
      { 
        leds[i] = CRGB::Red;
        FastLED.show();        // leds aan
        delay(50);             // pauze
      }
    }

Tips en Uitbreidingen

Stap 5: Programmeer een logo

Hergebruik code uit de vorige programma's!

Bij de variabelen (dus nog voor de setup) zet je onderstaande code:


// Antonius logo van 8 x 8 leds
const uint32_t pink=  0x800635;
const uint32_t white= 0x222222;
const uint32_t cyan=  0x015660;
CRGB logo[]=
{
   pink, pink,  pink,  pink,  pink, pink,  pink,  cyan,
   pink, pink,  pink,  pink,  pink, pink,  pink,  cyan,
   pink, pink,  pink,  pink,  pink, white, white, cyan,
   pink, white, white, white, pink, white, pink,  cyan,
   pink, white, pink,  white, pink, white, white, cyan,
   pink, white, white, white, pink, pink,  pink,  cyan,
   pink, white, pink,  white, pink, pink,  pink,  cyan,
   pink, white, pink,  white, pink, pink,  pink,  cyan,
};

Onderstaande code komt in de loop:

// stap door alle kleuren in het logo
for (int i=0; i <= sizeof(logo)/sizeof(logo[0]); i++)
{
   leds[i] = logo[i];   // set de led op de kleur van het logo
}
FastLED.show();         // leds aan

Tips en Uitbreidingen

Deze les geeft je een goede start met het gebruik van de FastLED-bibliotheek en het verkennen van de mogelijkheden van programmeerbare LED-verlichting. Veel plezier met experimenteren en creƫren!