Arduino programmeren
Deze pagina geeft beschrijvingen van opstellingen die draaien via het Arduino platform.
LED cube
De LED cube bestaat uit een 3x3x3 array van LEDs en kan worden aangestuurd met een Arduino Uno of Nano.
8x8 LED matrix
Met de 8×8 LED matrix kan je kleine plaatjes of patronen creeren. Het programmeren doe je via de FastLED library. Je kan ook de voorbeelden van de FastLED library gebruiken. Zorg dan wel dat de volgende dingen kloppen:
- data-pin:9
- chipset: WS28112b
- COLOR_ORDER volgorde naar GRB.
Hele scherm van kleur veranderen
Dit voorbeeld laat het hele scherm een elke halve seconde van kleur veranderen.
- uno_matrix_blink.ino
#include <FastLED.h> #define LED_PIN 9 #define COLOR_ORDER GRB #define CHIPSET WS2812 #define NUM_LEDS 64 #define BRIGHTNESS 64 CRGB leds[NUM_LEDS]; CRGB colors[] = {CRGB::White, CRGB::White, CRGB::Red ,CRGB::Green ,CRGB::Blue}; void setup() { FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalSMD5050); FastLED.setBrightness( BRIGHTNESS ); } void loop() { int i=0; int j=0; for (j=0;j<=4;j++) { for (i=0;i<=NUM_LEDS;i++) { leds[i]= colors[j]; } FastLED.show(); delay(500); } }
Rondjes draaien
In dit voorbeeld licht er maar 1 LED op. Deze gaat rond langs de buitenkant van het bordje. Bij elke volgende positie veranderd de kleur van de LED.
- uno_matrix_round_and_round.ino
#include <FastLED.h> #define LED_PIN 9 #define COLOR_ORDER GRB #define CHIPSET WS2812 #define NUM_LEDS 64 #define BRIGHTNESS 64 #define NUM_ROWS 8 #define NUM_COLS 8 CRGB leds[NUM_LEDS]; int color_idx = 0; void setup() { int index = 0; Serial.begin(115200); FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalSMD5050); FastLED.setBrightness( BRIGHTNESS ); // Zet alles uit. fill_solid(leds, NUM_LEDS, CRGB(0,0,25)); FastLED.show(); delay(200); fill_solid(leds, NUM_LEDS, CRGB::Black); FastLED.show(); delay(400); } void LED_uit(int x, int y) { int index = x; index += y*8; leds[index] = CRGB::Black ; FastLED.show(); } void LED_aan(int x, int y, CRGB& color) { int index = x; index += y*8; leds[index] = color ; FastLED.show(); } int color_idx_inc(int color_idx) { color_idx = color_idx + 4; if (color_idx >= 255) return 0; else return color_idx; } int direction_find(int x, int y) { int direction = 90; if ((x == 0) && (y > 0)) direction = 0; if ((x == NUM_COLS -1) && (y < NUM_COLS-1)) direction = 180; if ((x < NUM_COLS-1)&& (y == 0)) direction = 90; if ((x > 0) && (y == NUM_ROWS -1)) direction = 270 ; return direction; } int next_x(int x, int direction){ if (direction == 90 ) return ++x; else if (direction == 270) return --x; else return x; } int next_y(int y, int direction){ if (direction == 180 ) return ++y; else if (direction == 0) return --y; else return y; } void loop() { char error_string[256]; static int x = 0; static int y = 0; struct CRGB color = CHSV(0,255,255) ; static int color_idx =0 ; int direction = 90; direction = direction_find(x,y); x = next_x(x, direction ); y = next_y(y, direction ); sprintf(error_string, "x: %i, y: %i direction: %03i, color_idx: %03i", x, y, direction, color_idx); Serial.println(error_string); color_idx = color_idx_inc(color_idx); color = CHSV(color_idx,255,255); LED_aan(x, y, color); FastLED.show(); delay(100); LED_uit(x, y); }