Looping Louie Tuning - Teil 6: Software

Posted by Tobias on 2015-02-08 at 8:03 pm

CodeDie Hardware und damit der Umbau von Louie ist jetzt abgeschlossen. Natürlich muss der Controller noch wissen, was er denn genau zu tun hat. Es ist ein Stück Software und Logik nötig, welche dann auf den Mikrocontroller übertragen wird.

Da ein Atmel ATMega328P Mikrocontroller eingesetzt wurde, war die Programmierung dank Arduino einfach. Mit C bzw. C++ Kenntnissen lässt es sich relativ einfach in die Maker-Szene einsteigen. Selbstverständlich lässt sich der Mikrocontroller auch via "lowlevel" C/C++ oder gar Assembler programmieren.

Der Quellcode selbst besteht aus vier großen Bereichen. In Teil 1 werden Konstanten und Variablen mit Standardwerten befüllt. Hier wird z.B. die maximale Geschwindigkeit von Louie festgelegt. Auch die Pins, an denen die Knöpfe angebunden werden, sind hier definiert.

Im zweiten Teil werden die einzelnen Pins und Funktionen "auf Standard gesetzt" und definiert. Ein gutes Beispiel dafür ist, dass auf dem LC-Display kurz eine "Willkommen" Meldung erscheint oder die LEDs der einzelnen Spielerwippen kurz blinken. Dieser Teil des Quellcodes wird nur einmalig zum Start des Mikrocontrollers ausgeführt.

Der dritte Teil ist der "Hauptteil" des Quellcodes. In ihm steckt sämtliche Logik und Abläufe wie z.B. die Ansteuerung des Motors, Berechnung der Geschwindigkeit, Zufallsgenerator für die automatischen Modi und auch Routinen zur Abfrage der Knöpfe und des Drehreglers.

Für die Knöpfe an den Spielerwippen ist ein vierter Bereich im Quellcode nötig - eine Interrupt-Service Routine (ISR). Diese wird benötigt, um sofort auf einen Knopfdruck zu reagieren. Beim Drücken eines Knopfes an einer Spielerwippe unterbricht der Prozessor seine aktuelle Aktivität und führt die Interrupt-Service Routine aus. Darin enthalten ist z.B. die Prüfung, ob der Spieler die "Turbo"-Funktion noch nutzen darf und falls ja, wird die Funktion aktiviert und an den Motor weitergegeben. Nach der ISR kehrt der Prozessor wieder zu seiner vorherigen Tätigkeit zurück.

Der Quellcode wurde mit einem USBasp Programmer über die ICSP Schnittstelle auf den Mikrocontroller übertragen.

Genug mit der Theorie! Im letzten Teil der Serie geht es um die Fertigstellung und ein Demo-Video...

Electronics
4 comments
Posted by Sander on 2015-12-12 at 6:19 pm

Tolles Projekt und sehr strukturierter Aufbau. Die Idee mit der Turbotaste ist super, gibt es noch ein Part wo mehr zum Code erläutert wird oder man Einsicht nehmen kann oder bleibt dieser unter Verschluss? :) Auf jeden Fall ein klasse Blog weiter so ;)

Posted by Tobias on 2015-12-14 at 11:21 pm

Hallo,

es ist geplant, dass ich dazu noch eine ausführlichere Videoserie starte. Wann steht allerdings noch nciht fest. Dort werde ich dann auch den Quellcode als vorkompilierte .hex Datei zum Download bereitstellen. Wenn du konkrete Fragen zum Quellcode hast, kannst du diese aber natürlich gerne hier stellen.

Grüße Tobi

Posted by Dominik on 2018-01-05 at 10:51 am

Hi, ne frage, könntest du mir dieses Projekt nachbauen und verkaufen? Hätte großes Interesse daran? 

Gruß Dominik

Posted by Tobias on 2018-01-05 at 11:02 am

Hi Dominik,

habe dir eine E-Mail gesendet.

Grüße Tobi

Comment on This Post