zufällige Beleuchtungen

Da mein Fotoequipment irgendwo gelagert werden will, bot sich ein kleiner Schrank im Wohnzimmerregal an.

Und damit ich dort drin auch mal den Kameraakku laden kann, sollte auch gleich eine Steckdose mit reingelegt werden. Und wenn dann auch schon Strom da ist, warum nicht noch einen Innenbeleuchtung einbauen, um im schwarzen Schrank auch was erkennen zu können.

Soweit so Grundidee.
Um das Ladegerät nicht ausstecken zu müssen, kam noch ein Wippschalter und ein Mikroschalter mit Hebel hinzu. Diese wurden so parallel geschaltet, dass beim öffnen der Tür die Spannung eingeschaltet wird. Über den Wippschalter kann die Spannung auch bei geschlossener Tür eingeschaltet bleiben.

Die Beleuchtung selbst ist mit RGB-LED-Streifen mit HL1606 realisiert. Jeweils 2*20 LEDs pro Regalebene sind in zwei Reihen eingebaut. Auch hier kommt ein Mikroschalter mit Hebel zum Einsatz. Bei geschlossener Milchglastür werden die Ebenen farbig (rot, grün, blau, gelb, türkis, lila) im Zufallsmodus beleuchtet. Wir die Schranktür geöffnet, werden alle Regalebenen weiß beleuchtet. Angesteuert wird es über einen Arduino-Nano (Atmega 328).

Solange also das Ladegerät Spannung hat, solange wird auch farbig beleuchtet, damit man nicht vergisst, die ganze Sache auszuschalten.

#include 

// use -any- 3 pins!
#define STRIP_D 11
#define STRIP_C 12
#define STRIP_L 10


// 0 black
// 1 blue
// 2 green
// 3 teal
// 4 red
// 5 violot
// 6 yellow
// 7 white
int color=0;
// Time in Milliseconds
int waittime=1000;
// Cycles per Color (waitcycle*waittime=cycletime)
int waitcycle=60;
int c; // universal counter
bool debug = false;
bool opendoor;
int row = 20; // LED pro Ebene
int column = 6; // Regalebenen
int lednum;
int rowcount;
int columncount;

HL1606strip strip = HL1606strip(STRIP_D, STRIP_L, STRIP_C,row*column);


void setup() {
	if (debug) {
		Serial.begin(9600);
		Serial.print("Hello");
	}
	// put your setup code here, to run once:
	randomSeed(analogRead(0));
	
	for (columncount=0; columncount<column; columncount++)
	{
		color = random (1,7);
		for (rowcount=0; rowcount<row; rowcount++)
		{
			lednum = columncount*row+rowcount;
			strip.setLEDcolor(lednum, color);
			if (debug) {
				Serial.print(lednum);
				Serial.print("-");
				Serial.print(color);
				Serial.println(" ");
			}
		}
	}
	strip.writeStrip();
}

void loop() {
	// put your main code here, to run repeatedly:
	pinMode(5,INPUT_PULLUP);
	opendoor=digitalRead(5);
	
	if (opendoor == 1) {
		for (columncount=0; columncount<column; columncount++)
		{
			color = random (1,7);
			for (rowcount=0; rowcount<row; rowcount++)
			{
				lednum = columncount*row+rowcount;
				strip.setLEDcolor(lednum, color);
				if (debug) {
					Serial.print(lednum);
					Serial.print("-");
					Serial.print(color);
					Serial.println(" ");
				}
			}
			
			for (c=0; c<waitcycle; c++) {
				opendoor=digitalRead(5);
				if (opendoor == 1) {
					strip.writeStrip();
					} else {
					colorWipe(7,0);
         
				}
				delay(waittime);
			}
		}
		
	}
	else
	{
		colorWipe(7,0);
	}
}


// Functions

// fill the entire strip, with a delay between each pixel for a 'wipe' effect
void colorWipe(uint8_t color, uint8_t wait) {
	uint8_t i;
	
	for (i=0; i < strip.numLEDs(); i++) {
		strip.setLEDcolor(i, color);
		strip.writeStrip();   
	delay(wait);
	}
}

Comments are closed.

Previous Post
«