Heute kam der erste Teil des Innenlebens an. Obwohl ich keine Zeit hatte, habe ich ihn gleich ausgepackt und eine Chaoskonstruktion auf dem Sofa aufgebaut.
Der Arduino:
Der „Arduino nano v3“ ist ein Einplatinencomputer der mit C bzw C++ programmiert wird und sein Programm kontinuierlich bis zur Aufspielung eines neuen Scripts durchläuft. Fleißig wie ein Bienchen loopt er. Er startet mit 3 – 12 Volt und verbraucht so wenig, dass er beispielsweise mit einem Powerpack für Smartphones stunden- bzw. tagelang durchlaufen könnte. Das Script spielt man einfach mit der freien Software direkt per USB auf. Durch seine zahlreichen Pins kann man diverse LEDs, Schalter, Motoren etc damit ansteuern.
In meinem Fall soll der Computer sich um die Steuerung der LEDs kümmern und auf einen Magnetschalter reagieren, der in der Klappe verbaut sein wird. Vielleicht wird er zu einem späteren Zeitpunkt auch Sound abspielen können, äbhängig davon ob das dafür notwendige Soundboard noch mit in den Tricorder passt.
Es sollen über 30 LEDs gesteuert werden, aber da ich nur über 13 freie Ports verfüge, müssen einige davon mit zwei oder drei LEDs belegt werden.
Der Aufbau:
Der Code:
Die Programmierung für 3 LEDs die als Lauflicht fungieren sieht so aus:
[pastacode lang=“cpp“ message=““ highlight=““ provider=“manual“]
// Die LEDs ihren Pins zuordnen
const int LED1 = 13;
const int LED2 = 12;
const int LED3 = 11;
void setup() {
// Die Pins dann als Output definieren
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
// Die Endlosschleife
void loop() {
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
delay(400);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
delay(400);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
delay(400);
}
[/pastacode]
Das Video:
Zuallererst ist ein Arduino natürlich auch ein Microcontroller – bloß eben auf einer Platine mit Spannungsregulierung, externem Oszillator und einer RS232-Schnittstelle (und ist zudem nicht teurer als ein alleiniger ATmega, wenn man den Arduino für unter 2 € aus China bestellt). Falls Platz ein Problem sein könnte, wäre der Pro Mini eine Alternative. Der ist ein Stück kürzer als der Nano und ohne Pinheader schön flach.
Mit 30 LEDs hast du aber mehrere Probleme: Anzahl der Ports und Stromverbrauch. Der Arduino (bzw. der ATmega) schafft nur 200 mA. Angenommen, du würdest die LEDs mit 10 mA betreiben, wäre nach 20 Stück Schluss. Pro Pin darf es maximal 40 mA sein, du kannst also auch nicht beliebig viele parallel schalten.
Beide Probleme löst du relativ elegant mittels Multiplexing. Schau mal unter dem Stichwort „Charlieplexing“. Damit könntest du über 100 LEDs mit dem Arduino betreiben (wobei es voll ausgereizt doch recht unübersichtlich wird).
PS: Zum Testen würde ich ein strombegrenztes Netzteil nehmen. Läuft bei der Programmierung etwas schief, zieht deine Schaltung mit etwas Pech mehr als den maximalen Strom und der Arduino ist kaputt.
Das mit dem Plexing schaue ich mir mal an. Das es eng wird konnte ich mir denken, aber wie weit muss ich schauen, da ich ohne das Gehäuse nicht mal weiß welche LEDs ich nehme und wie dick die Folie ausfallen wird. Man soll ja nicht blind werden beim ansehen. PWM ist ja auch begrenzt verfügbar.
Zum testen läuft er an einem begrenzten Akkupack. Das geht beim übersaugen einfach aus. Das er ein Kontroller ist war klar, ist vielleicht etwas unglücklich geschrieben. Die Programmierung ist so halt etwas einfacher über die Schnittstelle.
Ich danke dir auf alle fälle für deinen Text, jeder Tip ist hilfreich 🙂