In meinem Post zum Faller Stellwerk 120120 Klick hier! habe ich das beleuchtete Stellpult gezeigt. Es werden diverse Weichenstellungen und Fahrstrassen simultan angezeigt. Die Steuerung der LED´s übernimmt ein ATtiny84, den ich mit dem Arduino UNO R3 programmiert habe. Eine Anleitung dazu habe ich hier gepostet: ATtiny 84 mit dem Arduino UNO R3 programmieren.
Die Schaltung habe ich auf eine Streifenrasterplatine aufgebaut. Zu sehen sind auf der Platinenoberseite der ATtiny84A, ein Spannungsregler 12V für die direkte Ansteuerung der SMD LED - Aussenlampe und der Spannungsregler 5V für die Spannungsversorgung des ATtiny84A und die daran angeschlossenen SMD LED´s. Auf der Platinenunterseite (nicht im Bild) befinden sich die benötigten SMD Widerstände. Damit die Ausleuchtung nicht so hell ist habe ich für die SMD LED´s 0604 Orange je 1kOhm und für die 0604 Warmweiß je 4,7kOhm verwendet.
Nachfolgend veröffentliche ich den Sketch, gültig für den ATtiny 84A, programmiert mit dem Arduino UNO R3.
Anmerkung: Port 6 ist für die dimmbare Innenbeleuchtung (SMD LED´s)!
// ATtiny84 Stellwerk/Tableau // Programming by https://meine-modelleisenbahn-digitalisiert.blogspot.com // © 2019 // // An dieser Stelle noch der Hinweis: // der Nachbau geschieht auf eigene Gefahr. // Ich übernehme keine Haftung für eventuell entstandene Schäden! // const byte InnenLED = 6; //LED für Innenbeleuchtung int ledPins[8] = {10, 9, 8, 7, 2, 3, 5, 4}; int Stellwerkphasen[24][8] = { {1, 0, 0, 0, 0, 0, 1, 0}, // state 1 5000 {1, 0, 1, 0, 0, 0, 1, 0}, // state 2 2000 {1, 0, 1, 1, 0, 0, 1, 0}, // state 3 6000 {0, 1, 1, 1, 0, 0, 1, 0}, // state 4 4000 {0, 1, 1, 1, 1, 0, 1, 0}, // state 5 2000 {0, 1, 1, 1, 1, 1, 1, 0}, // state 6 6000 {0, 1, 1, 1, 1, 1, 0, 1}, // state 7 4000 {0, 1, 0, 1, 1, 1, 0, 1}, // state 8 3000 {0, 1, 0, 0, 1, 1, 0, 1}, // state 9 5000 {0, 1, 0, 0, 1, 1, 1, 0}, // state 10 5000 {0, 1, 0, 0, 0, 1, 1, 0}, // state 11 2500 {0, 1, 0, 0, 0, 0, 1, 0}, // state 12 6000 {0, 1, 0, 0, 0, 0, 0, 1}, // state 13 5000 {0, 1, 0, 1, 0, 0, 0, 1}, // state 14 2000 {0, 1, 1, 1, 0, 0, 0, 1}, // state 15 5000 {1, 0, 1, 1, 0, 0, 0, 1}, // state 16 6000 {1, 0, 1, 0, 0, 0, 0, 1}, // state 17 2000 {1, 0, 0, 0, 0, 0, 0, 1}, // state 18 6000 {0, 1, 0, 0, 0, 0, 0, 1}, // state 19 3000 {0, 1, 0, 0, 1, 0, 0, 1}, // state 20 2500 {0, 1, 0, 0, 1, 1, 0, 1}, // state 21 2500 {0, 1, 0, 0, 1, 1, 1, 0}, // state 22 3000 {0, 1, 0, 0, 0, 1, 1, 0}, // state 23 2000 {0, 1, 0, 0, 0, 0, 1, 0} // state 24 2000 }; int wartezeiten[24] = {5000, 2000, 6000, 4000, 2000, 6000, 4000, 3000, 5000, 5000, 2500, 6000, 5000, 2000, 5000, 6000, 2000, 6000, 3000, 2500, 2500, 3000, 2000, 2000}; int myState = 0; void setup() { pinMode(InnenLED, OUTPUT); //LED am Ausgang PB6 deklariert for (int i = 0; i < 8; i++) { pinMode(ledPins[i], OUTPUT); } } void zeigeStellwerkphase() { for (int i = 0; i < 24; i++) { digitalWrite(ledPins[i], Stellwerkphasen[myState][i]); } delay(wartezeiten[myState]); } void loop() { analogWrite(InnenLED, 100); //gedimmte Innenbeleuchtung zeigeStellwerkphase(); myState++; if (myState >= 24) myState = 0; }
An dieser Stelle noch der Hinweis: |
Keine Kommentare:
Kommentar veröffentlichen