Arduino

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);
	}
}

Eine gute Frage.

Hier die Antwort:  Man baut einen Würfel mit einer Kantenlänge von 5.

Da sowas aber nicht mehr „mal schnell fliegend“ aufgebaut wird, musste erstmal eine Schablone her. Also ein Holzbrett genommen und im Abstand von 15mm die 25 Löcher mit dem 5er Bohrer gebohrt.
Dort wurden die LEDs dann eingesetzt und mit Silberdraht die Kathoden miteinander verbunden.
So entstanden nach und nach die 5 Ebenen.

Als diese fertig waren, wurden an den Anoden jeweils die letzten 2mm nach innen umgebogen, damit die Ebenen verbunden werden konnten.

War nochmal ein ziemliches gefummel, aber es hat geklappt und somit war der Grundaufbau erstmal fertig.

Eine schwarze Kunststoffplatte dient als Boden. Hier noch die 25 Löcher gebohrt, die Anoden der untersten LEDs durchgesteckt und über Vorwiderstände die Flachbandkabel angelötet.
Die Ansteuerung der Ebenen erfolgt, wie beim 3x3x3 Würfel über Transistoren.

Zum Schluss wurde noch eine kleine Platine für den Atmega 32A erstellt, die Ausgänge alle auf eine Seite verlegt und mit den Flachbandkabeln verbunden.

Ein Testprogramm läuft schon, die endgültige Programmierung wird dann demnächst vorgenommen.
Später soll noch ein Plexiglasgehäuse folgen.

Ansteuerung der Ebenen

Vorwiderstände der Spalten

Der „große“ Arduino

Der Würfel von oben

 

In letzter Zeit ging es mir ja fürchterlich auf den Keks, den Atmega 328 immer aus der billigen Fassung des Arduino-Boards zu fummeln. Auch das einstecken ist nervig.
Wozu gibts aber die guten Textool Sockel. Also mal über ebay zwei bestellt, den alten Sockel ausgelötet und den Textool …
erstmal nicht eingelötet. Ein paar andere Bauteile auf dem Board sind im weg. Also doch mit einer Präzisionsfassung als Zwischensockel gearbeitet.

Durch die ganze Konstruktion, passte aber auch das Proto-Shield nicht mehr drauf, aber dafür hatte ich mir gleich längere Pfostenleisten besorgt. Hat nun zwar etwas von einer Giraffe auf Stelzen, aber die Funktion zählt.

UNO mit Textool

Proto mit langen Verbindern

Eine kleine Änderung am Programm hab ich nun endlich vorgenommen.
Bisher war es immer so, dass die Anzeigenfarbei bei jedem Einschalten gewechselt hat. Nun wird sie automatisch um Mitternacht gewechselt.
Da die RTC keine Wochentage kennt, habe ich ein Modulo-7 auf den Tag gemacht. Entsprechend sind auch 7 Farben hinterlegt. Blau, Rot, Grün, Gelb, Weiß, Türkis und Lila.

Wortuhr-Tuning

2012/09/09

Es hat sich die Gelegenheit ergeben, die letzte Änderung an der Wortuhr vorzunehmen. Das Gitter war für die Leuchtkraft der LEDs doch etwas zu schwach, und so haben die benachbarten Felder immer etwas mitgeleuchtet.

Nun konnte ich es aber mit schwarzem Lack besprühen, und nach dem wieder Einbau leuchtet nun nichts mehr durch.

Und jetzt hängt sie auch präsent über dem Fernseher.

[video src=“https://www.134.de/wp-content/uploads/2012/10/Wortuhr_Farbuebergang_small.m4v“ options=“autoplay autobuffer loop“]

Die LEDs sind da!

2012/04/18

Lange hat es gedauert, bis die bestellten LEDs endlich eingetroffen sind. Nachdem sie endlich da waren, wurden sie gleich in handliche Streifen, zu je 12 LEDs, zerschnitten und aufgeklebt.

Die LED-Streifen sind mit HL1606 IC ausgestattet, die jeweils ein LED-Paar ansteuern. Die IC sind Schieberegister, die ihren Farbwert einfach an den dahinter liegenden IC weitergeben, sobald sie einen neuen erhalten.

Nun durfte der Lötkolben wieder geschwungen werden, um die vorher getrennten Streifen wieder elektronisch in Reihe zu bringen.
Und die Stromversorgung musste ja auch durchgeschleift werden. Dafür wurden etwas dickere Drähte verwendet, was aber eher den Gründen der Handhabbarkeit, als der technischen Notwendigkeit geschuldet ist.

Ich selbst hab mir den Luxus gegönnt, und die Streifen nochmals in der Mitte getrennt, um es etwas besser an das vorhandene Raster anzupassen. Das werde ich aber sicherlich nicht noch einmal machen. Die Lötarbeit dabei ist doch recht intensiv, der Vorteil gering.

In Zukunft wird hier das Raster und die Frontplatte einfach dem Abstand der LEDs angepasst.

LED Bänder geklebt

… und verdrahtet

Verdrahtung detailiert

Vorbereitungen

2012/04/18

Um später die LEDs richtig anzuordnen haben wir uns mit einem Raster beholfen. Dies wurde im Format von 31,27 mm * 35 mm über die Rückplatte des Bilderrahmens gezeichnet. Da das Raster nicht exakt die ganze Fläche beinhaltet wurde es sowohl senkrecht als auch waagrecht gemittelt.
Dementsprechend bleibt oben und unten jeweils ein Rand von 5 mm und links und rechts ein Rand von 15,475 mm stehen.

Einige Kästchen hab ich mir erspart, da diese sowieso leer bleiben.

(Die Bilder hier sind von der V1, bei der der Abstand geringfügig anders war.)

Gitter festgelegt

Es beginnt.

2012/04/18

Nun geht es also langsam mit dem Nachbau der Wortuhr los. Es gibt zwar schon jede Menge Nachbauten, die auch teilweise gut beschrieben sind, aber an jeder findet sich etwas, was uns nicht gefallen hat.

Deshalb wird sich der Nachbau auch noch etwas hinziehen.

Als Grundgerüst wird ein Bilderrahmen eines schwedischen Möbelhauses genommen. Dieser legt somit die Größe auf 50cm*50cm fest.

Damit die insgesamt 114 LEDs nicht in benachbarte Bereiche leuchten, müssen diese optisch getrennt werden.

Hierzu wurde eine Kunststoffplatte in 20mm Streifen geschnitten und anschliessend mit der Kreissäge eingeschnitten, damit sie zu einem Raster zusammengesetzt werden konnte.

Das Raster

Rasterverbinder

Ein Fehler ist mir noch aufgefallen.

Irgendwie hatte ich mich schon gewundert, warum immer mindestens 2 LED aus verschiedenen Ebenen gleichzeitig geleuchtet haben.

Der Grund dafür war, dass ich drei Transistoren an den Analogen Pins übersehen hatte. Dadurch wurde die Ebenenansteuerung NICHT invertiert.
Also noch schnell die drei Transistoren eingebaut, und siehe da, nun können auch einzelne LEDs leuchten.

Und zur Vervollständigung hier noch der endgültige Schaltplan. Die Pin-Bezeichnungen sind so, wie sie bei mir aufgebaut sind.
Da die Library in der Beziehung aber sehr komfortabel ist, kann man hier auch beliebig andere Pins verwenden.

Schaltplan