Les 10 - Lijnen tekenen

We gaan nu met een LED matrix werken.

Benodigdheden

  1. Arduino (Uno)
  2. WS2812B LED matrix

Stap 1: Hardware Aansluiten

Stap 2: Tekenen met coördinaten

In dit voorbeeldprogramma maken we een horizontale lijn en een vertikale lijn en een schuine lijn

  1. De setup:
#include <FastLED.h>

#define X_LEDS 16
#define Y_LEDS 16
#define NUM_LEDS X_LEDS * Y_LEDS
#define DATA_PIN 6

CRGB leds[NUM_LEDS];

void setup() {
    FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
    FastLED.setBrightness(10);
}
  1. De functie: coordinaten Hiermee maken we een nieuwe functie waarmee we coördinaten omzetten naar een lednummer. Dit is handig voor heel veel verschillende toepassingen.

// bereken lednummer van x en y coordinaten
int coordinaten(int x , int y)
{
  int lednummer;

  // als y is even
  if (y % 2 == 0)
  {
    lednummer =  x + (X_LEDS * y);
  }
  // als y is oneven
  else 
  {
    lednummer = (X_LEDS * y) + (X_LEDS - x - 1);
  }
  return lednummer;
}
  1. Het hoofdprogramma met de drie verschillende lijnen:

void loop() {
    int x;
    int y;
    // horizontale lijn
    y = 3;
    for(x=1; x < 10; x++)
    { // toon rode led
      leds[coordinaten(x,y)]=CRGB::Red;
      FastLED.show();
      delay(50);
      // zet led weer uit na pauze
      leds[coordinaten(x,y)]=CRGB::Black;
    }

    delay(100);

    // vertikale lijn
    x=10;
    for(y=3; y < 16; y++)
    { // toon blauwe led
      leds[coordinaten(x,y)]=CRGB::Blue;
      FastLED.show();
      delay(50);
      // zet led weer uit na pauze
      leds[coordinaten(x,y)]=CRGB::Black;
    }

    delay(100);

    // schuine lijn
    float a=0.5;
    float b=3;
    for(x=0; x < 16; x++)
    { // lijnformule
      y = a * x + b;
      // toon groene led
      leds[coordinaten(x,y)]=CRGB::Green;
      FastLED.show();
      delay(50);
      // zet led weer uit na pauze
      leds[coordinaten(x,y)]=CRGB::Black;
    }

    delay(100);
}

Tips en Uitbreidingen