// https://www.youtube.com/watch?v=QXlNZXMwl30
// Anas Kuzechie - Creating Arduino Library for WS2812
// WS2812B_LED_Strip.ino
#include "WS2812B_LED_Strip.h" // include file
byte DIN = 2; // Arduino digital pin 2
WS2812B_LED_Strip WS2812B(DIN); // DIN pin
// byte DEBUG = 0; // original
byte DEBUG = 1; // testing
void setup() {
pinMode(DIN, OUTPUT); // DIN connects only D2 >> D7 pins
setDIN_high(DIN); // send byte to set DIN pin HIGH
clearLEDs(48, 1); // turn off all LEDs and reset WS2812B
if (DEBUG)
fade();
else {
color(255, 0, 0); // grn
color(0, 255, 0); // red
color(0, 0, 255); // blu
}
}
void loop() {
}
void setDIN_high(byte DIN) {
byte pinByte;
switch (DIN) {
case 0: break; // TX
case 1: break; // RX
case 2: pinByte = 0b00000100; break; // set DIN @ D2 HIGH
case 3: pinByte = 0b00001000; break; // set DIN @ D3 HIGH
case 4: pinByte = 0b00010000; break; // set DIN @ D4 HIGH
case 5: pinByte = 0b00100000; break; // set DIN @ D5 HIGH
case 6: pinByte = 0b01000000; break; // set DIN @ D6 HIGH
case 7: pinByte = 0b10000000; break; // set DIN @ D7 HIGH
}
}
void clearLEDs (byte numLEDs, boolean resetPulse) {
for (byte i = 1; i <= numLEDs; i++)
color (0, 0, 0); // turn off all LEDs
if (resetPulse == true)
delayMicroseconds(60); // send reset pulse > 50us
}
void color (byte Gbyte, byte Rbyte, byte Bbyte) {
ColorByte(Gbyte); // send grn byte
ColorByte(Rbyte); // send red byte
ColorByte(Bbyte); // send blu byte
}
void fade() {
// THIS LOOP DESTROYS TIMING
// for (int i = 0; i < 10; i++) {
// int q = 255 / (1.0 + i * 0.1);
// color (q, 0, 0);
// }
color(255 / 1.0, 0, 0); // grn
color(255 / 1.1, 0, 0); // grn
color(255 / 1.2, 0, 0); // grn
color(255 / 1.3, 0, 0); // grn
color(255 / 1.4, 0, 0); // grn
color(255 / 1.5, 0, 0); // grn
color(255 / 1.6, 0, 0); // grn
color(255 / 1.7, 0, 0); // grn
color(255 / 1.8, 0, 0); // grn
color(255 / 1.9, 0, 0); // grn
color(255 / 1.0, 255 / 1.0, 0); // yel
color(255 / 1.1, 255 / 1.1, 0); // yel
color(255 / 1.2, 255 / 1.2, 0); // yel
color(255 / 1.3, 255 / 1.3, 0); // yel
color(255 / 1.4, 255 / 1.4, 0); // yel
color(255 / 1.5, 255 / 1.5, 0); // yel
color(255 / 1.6, 255 / 1.6, 0); // yel
color(255 / 1.7, 255 / 1.7, 0); // yel
color(255 / 1.8, 255 / 1.8, 0); // yel
color(255 / 1.9, 255 / 1.9, 0); // yel
color(0, 255 / 1.0, 0); // red
color(0, 255 / 1.1, 0); // red
color(0, 255 / 1.2, 0); // red
color(0, 255 / 1.3, 0); // red
color(0, 255 / 1.4, 0); // red
color(0, 255 / 1.5, 0); // red
color(0, 255 / 1.6, 0); // red
color(0, 255 / 1.7, 0); // red
color(0, 255 / 1.8, 0); // red
color(0, 255 / 1.9, 0); // red
color(0, 255 / 1.0, 255 / 1.0); // mag
color(0, 255 / 1.1, 255 / 1.1); // mag
color(0, 255 / 1.2, 255 / 1.2); // mag
color(0, 255 / 1.3, 255 / 1.3); // mag
color(0, 255 / 1.4, 255 / 1.4); // mag
color(0, 255 / 1.5, 255 / 1.5); // mag
color(0, 255 / 1.6, 255 / 1.6); // mag
color(0, 255 / 1.7, 255 / 1.7); // mag
color(0, 255 / 1.8, 255 / 1.8); // mag
color(0, 255 / 1.9, 255 / 1.9); // mag
color(0, 0, 255 / 1.0); // blu
color(0, 0, 255 / 1.1); // blu
color(0, 0, 255 / 1.2); // blu
color(0, 0, 255 / 1.3); // blu
color(0, 0, 255 / 1.4); // blu
color(0, 0, 255 / 1.5); // blu
color(0, 0, 255 / 1.6); // blu
color(0, 0, 255 / 1.7); // blu
color(0, 0, 255 / 1.8); // blu
color(0, 0, 255 / 1.9); // blu
color(255 / 1.0, 0, 255 / 1.0); // cyn
color(255 / 1.1, 0, 255 / 1.1); // cyn
color(255 / 1.2, 0, 255 / 1.2); // cyn
color(255 / 1.3, 0, 255 / 1.3); // cyn
color(255 / 1.4, 0, 255 / 1.4); // cyn
color(255 / 1.5, 0, 255 / 1.5); // cyn
color(255 / 1.6, 0, 255 / 1.6); // cyn
color(255 / 1.7, 0, 255 / 1.7); // cyn
color(255 / 1.8, 0, 255 / 1.8); // cyn
color(255 / 1.9, 0, 255 / 1.9); // cyn
}