Les 10 - Lijnen tekenen
We gaan nu met een LED matrix werken.
Benodigdheden
- Arduino (Uno)
- WS2812B LED matrix
Stap 1: Hardware Aansluiten
- Voeding: Sluit de 5V van de LED matrix aan op de VIN (hetzelfde als 5V maar dan sterker) van de Arduino.
- GND: Verbind de GND aan met de GND van de Arduino
- Data: Verbind de DIN met een digitale pin op de Arduino (bijv. pin 6).
Stap 2: Tekenen met coördinaten
In dit voorbeeldprogramma maken we een horizontale lijn en een vertikale lijn en een schuine lijn
- 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);
}
- 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;
}
- 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
- Je kunt met deze voorbeelden animaties maken. Bijvoorbeeld een bewegende balletje.
- Je kunt ook je wiskunde huiswerk hiermee maken. Assenstelseltje en lijn tekenen. Hij kan zelfs parabolen tekenen.