Hallo allerseits,
ich habe erst vor ca. 3-4 Monaten angefangen mit dem Arduino Uno zu "programmieren" und die ganzen Lernprojekte zu verwirklichen. Da wird einem Anfänger ja schon ein kleiner Überblick geboten, was alles mit dem Arduino möglich ist.
Es hat nicht lange gedauert, bis mir die Seiten von Peter Nieheus und Stephan Heß untergekommen sind. So kam es, dass ich mir mein eigenes Driver Display, nur mit mehr Funktionen bauen wollte.
Die Features bisher sind:
- Fahrerauswahl (1-6), für den das Display gelten soll
- mehrere LEDs für die Geschwindigkeitsanzeige
- mehrere LEDs für den Tankinhalt (mit Blinken bei fast leer)
- eine 7 Segmentanzeige für die Position des Fahrers
- zwei 7 Segmentanzeigen, für die Runden des Fahrers
- Countdown der Startampel wird an den 7 Segmentanzeigen mit runtergezählt
- ein 20x4 LC-Display, auf dem Rundenzeit, Bestzeit, Runde der Bestzeit und Rundenabstand zum Führenden angezeigt werden
Ohne die Seiten von Peter Niehues und Stephan Heß wäre es für mich als Laien mit meinem begrenzten Wissen und Verständnis zu der Materie überhaupt nicht möglich gewesen: Die Erklärungen zu den Datenworten und die "einfachen, kleinen" Programme zum Auslesen der Bahndaten hätte ich nie im Leben selber herausfinden, geschweige denn programmieren können. Vielen Dank dafür an beide (vllt. bekommen sie es ja irgendwie mit)!
Ich habe zwischenzeitlich viele Stolpersteine gehabt, deswegen viel recherchiert und sehr viel gelesen. Im Prinzip lief bei mir das meiste dann aber doch durch try & error, weil es für viele Problemchen dann doch einfach noch keine 1:1 Lösung gab. - Ein bißchen eigener Gehirnschmalz muss dann doch mit einfließen ... macht ja auch mehr Spaß, besonders, wenn man das Problem dann doch alleine lösen kann. Einige Programmschnipsel von Peter Niehues konnte ich aber doch direkt verwenden. Lange Rede, kurzer Sinn: Ich bin kein Programmierer, möchte mich da aber trotzdem reinfuchsen. Aber jetzt bin ich an einem Punkt, an dem ich gerade gar nicht weiter weiß.
Kurz zum Aufbau und Problem:
Ich habe die zweistellige 7-Segmentanzeige (f. Runden) und die einstellige 7-Segmentanzeige (f. Position des Fahrers) über zwei Schieberegister und zusätzlich ein 20x4 LC-Display über ein I2C an meinen Arduino Uno angeschlossen.
Ohne das LCD werden die Runden und Position genau richtig wiedergegeben. Mit dem LCD werden zwar die Runden, aber die Position nicht mehr richtig angezeigt: Die Position verschlechtert sich zwar, wenn ein Gegner mich überholt, jedoch wird die Position nicht verbessert, sobald ich den Gegner überhole. Und jetzt das Kuriose: Das Auslesen der Datenworte zeigt, dass nur noch dann die "Positionsdatenworte" gesendet (bwz. empfangen?) werden, wenn ich in der Position abfalle - aber nicht, wenn ich aufsteige. Würde das Datenwort empfangen werden und die Anzeige zeigt einfach nicht das richtige an, würde ich den Fehler sicherlich finden ... aber so bin ich mit meinem Latein völlig am Ende. Ich habe das mit mehreren Autos und vielen Runden getestet: Es wird nur das Positionsdatenwort empfangen, wenn ich abfalle. Sobald das LCD aus ist, wird das Positionsdatenwort auch empfangen, wenn ich in der Position aufsteige.
Hat dafür vllt. jemand einen Rat? Kann es sein, dass sich mit dem I2C-Shield (Analogpins A4 und A5) und dem einlesen der Daten (Input 2 am Arduino) irgendwas überschneidet, dass zufälligerweise genau dieses Datenwort dann nicht mehr empfangen wird?
Ich bin für jeden Tip/Hinweis dankbar.
Viele Grüße,
Faddi