Indirekte Beleuchtung am elektronischen Schreibtisch
Es war irgendwie immer zu dunkel wenn ich da sitze, Hmm also Lösung her, Klick machte es und ich habe begonnen Reste zusammen zu suchen. Einen Arduino Nano, 1,6 m LED Stripe 28b12 mit 60LED/m, 2 Taster, Gehäuse aus dem Drucker fertig.
So nun noch ein Programm ( recht Überschaubar ) Taster 1 Ein oder Aus, Taster 2 Farbe auswählen die Fest gespeichert ist im Controller. Der Pure Luxus... beim einachalten der Spannung geht das Licht automatisch An die LED'S laufen die hoch beim Ausschalten runter, ganz netter Effekt. darum hier das Video dazu.
/*
// LED Strip Werkstatt Schreibtisch
// Stefan Zilt 01.11.2023
#include FastLED.h
#include EEPROM.h
// Stipe Konfig
#define NUM_LEDS 94
#define DATA_PIN 3
CRGB leds[NUM_LEDS];
CRGB colors_w;
int Red = 0;
int Green = 0;
int Blue = 0;
// Variabeln
int farbe= 0;
int Taster1;
int Taster2;
long Auswahl_entprellen1 = millis();
bool t1= false;
long Auswahl_entprellen2 = millis();
bool t2= true;
bool startstop = false;
bool led_aenderung = false;
bool led_run = false;
// This function sets up the ledsand tells the controller about them
void setup() {
Serial.begin(9600);
// sanity check delay - allows reprogramming if accidently blowing power w/leds
delay(2000);
FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS); // GRB ordering is typical
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
Red = read_int(0);
Green = read_int(2);
Blue = read_int(4);
}
void loop() {
Taster1 = digitalRead(11);
Taster2 = digitalRead(10);
if(Taster1 == LOW && Auswahl_entprellen1 < millis() && startstop == true){
Auswahl_entprellen1 = 140 + millis();
t1 = true;
Serial.println(F("t1"));
}
if(Taster2 == LOW && Auswahl_entprellen2 < millis()){
Auswahl_entprellen2 = 140 + millis();
t2 = true;
Serial.println(F("t1"));
}
// Einschalten
if (t2 == true && startstop == false){
startstop = true;
colors_w = CRGB(Red,Green,Blue);
for (int whiteLed = 0; whiteLed < NUM_LEDS/2; whiteLed = whiteLed + 2) {
leds[whiteLed] = colors_w;
leds[whiteLed+1] = colors_w;
leds[NUM_LEDS - whiteLed] = colors_w;
leds[NUM_LEDS - whiteLed- 1] = colors_w;
FastLED.show();
delay(25);
}
t2 = false;
}
// Ausschalten mit Farbwert speichern
if (t2 == true && startstop == true){
startstop = false;
colors_w = CRGB(0,0,0);
for (int whiteLed = 0; whiteLed < NUM_LEDS/2; whiteLed = whiteLed + 2) {
leds[whiteLed] = colors_w;
leds[whiteLed+1] = colors_w;
leds[NUM_LEDS - whiteLed] = colors_w;
leds[NUM_LEDS - whiteLed- 1] = colors_w;
FastLED.show();
delay(25);
}
write_int(0, Red );
write_int(2, Green );
write_int(4, Blue );
t2 = false;
}
if(t1 == true && led_aenderung == false && startstop == true){
Serial.println(F("wechsel"));
switch (farbe)
{
case 0:
Red = 255;
Green = 255;
Blue = 255;
colors_w = CRGB(Red,Green,Blue);
led_aenderung = true;
break;
case 1:
Red = 255;
Green = 255;
Blue = 150;
colors_w = CRGB(Red,Green,Blue);
led_aenderung = true;
break;
case 2:
Red = 255;
Green = 0;
Blue = 0;
colors_w = CRGB(Red,Green,Blue);
led_aenderung = true;
break;
case 3:
Red = 0;
Green = 255;
Blue = 0;
colors_w = CRGB(Red,Green,Blue);
led_aenderung = true;
break;
case 4:
Red = 0;
Green = 0;
Blue = 255;
colors_w = CRGB(Red,Green,Blue);
led_aenderung = true;
break;
default:
break;
}
t1 = false;
farbe++;
if(farbe==5){farbe=0;}
}
if(led_aenderung == true && led_run == false){
Serial.println(F("leds"));
led_run = true;
for (int whiteLed = 0; whiteLed < NUM_LEDS; whiteLed = whiteLed + 1) {
leds[whiteLed] = colors_w;
}
FastLED.show();
led_run = false;
led_aenderung = false;
delay(200);
}
}
// Lesen aus EEPROM
int read_int(int address)
{
long byte_2 = EEPROM.read(address);
long byte_1 = EEPROM.read(address + 1);
int val = ((byte_2 << 0) & 0xFFFFFF) + ((byte_1 << 8) & 0xFFFFFFFF);
return val;
}
// Schreibe in EEPROM
void write_int(int address, int value)
{
byte byte_2 = (value & 0xFF);
byte byte_1 = ((value >> 8) & 0xFF);
EEPROM.update(address, byte_2);
EEPROM.update(address + 1, byte_1);
}