Die Entwicklung

Ursprünglich hatte ich vor W2812-RGB LEDs zu verwenden, um nicht auf fixe Farben der LEDs festgelegt zu sei, aber auch nach längerer, intensiver Suche habe ich keine entsprechende LED als 3mm Variante gefunden.
Dazu hätten die Cherry, bzw. Gateron Tasten entsprechend bearbeitet werden müssen.

Bei meiner Schaltung sollten nun wie beim original normale 3mm LEDs unter den Tastenkappen zum Einsatz kommen.
Jedoch sollten alle LEDs einzeln mit Strom versorgt werden, bzw. separat für sich leuchten können ohne sich die Spannung mit einer weiteren LED teilen zu müssen, damit die volle Helligkeit erreicht werden kann.

Da das unter Umständen doch etwas ZU hell werden könnte wollte ich die LEDs per Pulsweitenmodulation „dimmen“ können.

Dies sollte unabhängig von der eigentlichen Tastaturabfrage des C64 Betriebssystems mit einzelnen Tastenkombinationen möglich sein.

Ich wollte drei verschiedene Leuchtkreise unabhängig voneinander „dimmen“ können.
Die normale Tastatur, die F-Tasten und die Shift/Lock Taste für sich.

So ist es möglich seine Tastatur z.B. mit translucent blauen Kappen und blauen LEDs, sowie die F-Tasten mit translucent roten Kappen und roten LEDs zu bestücken, und unabhängig voneinander zu „dimmen“, um eine gleichmässige Helligkeit der verschiedenfarbigen LEDs zur ermöglichen.

Bei der Shift/Locktaste ist es ähnlich. Unter der Tastenkappe sitzen zwei LEDs, die beide über den dritten Kreis gedimmt werden können. Ist die Shift/Lock Taste nicht betätigt leuchtet die linke LED – wenn die Shift/Locktaste aktiv ist leuchtet die rechte LED.

Zusätzlich musste noch eine Möglichkeit her um die Shift/Lock Taste zu „emulieren“, da die Cherry Tasten keine Rastfunktion besitzen.
Also einmal draufdrücken – Signalzustand speichern, über ein Relais die „gedrückte“ Taste emulieren und bei erneutem drücken der Taste das Ganze rückgängig machen. Auf deutsch: eine monostabile Kippstufe, bzw. FlipFlop musste her.

Beide Funktionen wollte ich mit einem Atmega8 Mikrocontroller umsetzen.

Erste Gedankengänge wurden zu Papier gebracht und nach längerem überlegen schnell verworfen 🤷‍♂️

Wenn man sich einmal intensiver mit der Tastaturabfrage des C64 Betriebssystems beschäftigt tauchen auf einmal ganz neue Möglichkeiten auf 😀

irgendwann existierte so etwas wie „Krickel Krackel“ auf dem Block auf dessen Basis ich dann anfing zu eperimentieren:

Da ja nun auch irgendwas passieren sollte musste ich noch ein „wenig“ programmieren. Den Atmega8 ließ ich dafür mit 8Mhz takten. Ein Versuch. 8x schneller als der C64 – das sollte wohl ausreichend sein um die Tastatureingaben „abzufangen“ 🤪

Das erste Ziel war drei separate LEDs über verschiedene Tastenkombinationen anzusteuen.

Ach ja, die grünen LEDs rechts oben auf dem Steckboard haben mit diesem Projekt nichts zu tun. Die steckten halt noch auf dem Board 😉

es dauerte eine Weile, aber irgendwann war das erste Etappenziel erreicht 😎

Nun ging es weiter zum „dimmen“ der LEDs. Der ATmega8 besitzt die Möglichkeit über einen 16 Bit und einen 8 Bit Timer an drei separaten Ausgängen ein PWM-Signal zur Verfügung zu stellen.
Auch das funktionierte mit speziellen Tastenkombinationen irgendwann wie es sollte, allerdings erst mit jeweils einer LED an jedem der drei Ausgänge.

Für den zweiten und dritten Ausgang zum Ansteuern der drei Lichtkreise wählte ich meinen Lieblingstransistor, den BC 338. Dieser kann einen max. Strom von 800 mA schalten.
Allerdings musste für den ersten Ausgang etwas anderes her, da dieser alle LEDs, ausser die LED der Shift/Locktaste und der F-Tasten ansteuern sollte.
Das wären dann um die 60 LEDs.
Rechnet man grob mit einem Strom von 20mA / LED ist für den BC 338 relativ schnell Schicht im Schacht.
Ich hatte mir verschiedene Transistortypen zum experimentieren besorgt und bin bei dem BD 131 hängen geblieben.
Der kann bis zu 3A schalten und funktioniert gegenüber den anderen Test-Transistoren am besten, bzw. die geschalteten LEDs waren bei diesem am hellsten.

Bis hier hin war ich sehr zu frieden 😊 Was noch fehlte war die Funktion der Shift/Locktaste.
Das war relativ schnell erledigt.

Etwas enttäuscht war ich dann ja doch irgendwie, da auf einmal das Programm fertig war 🙄
Hab ich was vergessen ? Könnte ich noch etwas verbessern ?

Da kam mir die Idee, dass es doch Sinn machen würde die eingestellten Helligkeitswerte der LEDs zu speichern 😀
Gesagt, getan…
und hier ist das Ergebnis vom fertig Versuchsaufbau:

Schreibe einen Kommentar