Meine ersten Schritte in der Arduino-Programmierung mit meinem Elegoo begannen mit einem einfachen LED-Projekt. Es war eine einzelne LED mit einem Vorwiderstand von ca. 220Ohm – also eine der einfachsten Schaltungen, die man aufbauen kann. Das mag auf den ersten Blick furchtbar langweilig wirken, doch man kann mit so einem Projekt bereits viele spannende Dinge ausprobieren und lernen. Dabei werde ich an dieser Stelle jedoch nicht auf elektrotechnische Feinheiten eingehen, sondern den Fokus auf die Programmierung legen.
Neben der Möglichkeit per delay() eine LED zum Blinken zu bringen, kann man an dieser Stelle bereits ausprobieren dies per millis() zu bewerkstelligen. Der Unterschied liegt darin, dass mit millis() das Programm nicht pausiert bzw. angehalten wird und wir z.B. nebenbei Sensoren in Echtzeit auslesen könnten.
Eine andere Möglichkeit wäre die LED nicht nur Blinken zu lassen, sondern dies mit einem Dimmer-Effekt zu verbinden. An dieser Stelle macht man sich die Pulsdauermodulation zu nutze, die auch als Pulsweitenmodulation oder kurz PWM bezeichnet wird. Hierzu wird am Digitalausgang 500x pro Sekunde eine Rechteckkurve ausgegeben. Das bedeutet, dass wir 500x pro Sekunde den Ausgang ein- und ausgeschaltet, wobei wir das Verhältnis von ein- zu ausgeschaltet bestimmen. Je höher der Anteil an ausgeschaltet ist, desto seltener leuchtet die LED und es entsteht der Eindruck sie würde weniger hell leuchten. Tatsächlich sind für unser Auge die kurzen Momente, in denen die LED ausgeschaltet ist, nicht wahrnehmbar.
Nachdem beides ausprobiert wurde, musste natürlich ein weiteres Projekt her. Eine Ampelschaltung wäre hierbei naheliegend gewesen, doch hatte ich eine solche bereits Jahre zuvor per Assembler und einem ATTiny realisiert.
Daher entschied ich mich eine der beigelegten RGB-LEDs als nächstes Testobjekt zu erklären. Auf diese Weise entstand ein einfacher LED-Crossfader, um einen Farbwechsel zu ermöglichen. Tatsächlich war ich jedoch recht schnell von diesen Spielereien gelangweilt und wollte eine echte Herausforderung. Auf diese Weise entstand ein Prototyp, um mit der RGB-LED einen Morsecode auszugeben, welchen ich dann weiter verbessert habe als ich mich für den Einsatz eines aktiven Summers entschied. Dazu jedoch mehr im nächsten Beitrag.