Nachdem ich nun wirklich viel Zeit habe, habe ich mich doch tatsächlich mit Arduino beschäftig (grundsätzlicher Natur). Das erste "Projekt" das ich also mit Arduino gemacht habe möchte ich hier "vorstellen" und es ist entstanden aus einem Mißverständniss meinerseits in einem Nachbarthread. Hier geht es darum, mit einem Arduino einen zweiten Arduino anzusteuern, an den ein HD44780 kompatibles Textdisplay angeschlossen ist. Grundsätzlich habe ich so etwas funktionierend in reinem C auf einem PFS154 realisiert gehabt und hier ging es darum, das mit Arduino zu realisieren mit den (wenigen) Kenntnissen, die ich über Arduino habe. Die Datenübertragung wird mittels SoftwareSerial hergestellt, so dass auf Sender- sowie auf Empfängerseite der Harware-Uart für andere Zwecke frei bleibt. Zur Hardwareansteuerung des LC-Displays wird die arduinoeigene LiquidCrystal.h verwendet. Da der Empfänger-Arduino zum Sender keinen Wert zurückgeben kann, genügt eine einzelne Daten- plus Masseleitung zum Senden. Somit ist der Verdrahtungsaufwand, sollte mit dem Empfänger so etwas wie eine Backplane-Platine entsthen noch geringer als mit den gängigen I2C Adaptern mit PCF8574. Empfängerseitig habe ich nur einen Sketch programmiert und aus der darin enthaltenen Klasse ganz bewußt keine Library gemacht, da das Display-Interface in sich nur eine Firmware darstellt, aus der eben nur diese eine Funktion gemacht wird und deshalb die Wiederverwertbarkeit eher nicht gegeben ist. Grundsätzlich kann der Empfänger von jedem UART Zeichen empfangen. Das serielle Protokoll ist bewußt "langsam" gewählt, damit die Übertragung stabil bleibt, aber dennoch schnell genug ist um die (wenigen) Zeichen gut anzeigen zu können. Das serielle Protokoll ist: 4800 Baud, 8 N 1 Was kann das Display-Interface: Das Interface verarbeitet Steuercodes eines Terminals, das heißt ein \n \r \t \b wird als NewLine, Carriage Return, Tabulator, Backspace interpretiert. Befindet sich der Cursor in der 2. Zeile des Displays, wird der Inhalt auch tatsächlich nach oben gescrollt. Zusätzlich kann über Methoden der Klasse der Cursor ein/ausgeschaltet werden, das Display gelöscht, der Cursor positioniert werden. Zudem kann ein userdefiniertes Bitmap als Zeichen in das Display eingesetzt werden und im Empfänger selbst sind bereits Bitmaps definiert, die u.a. deutsche Umlaute, Ohm-, Sigma- hochgestelltes "o" abbilden können. Außerdem (weil mir das in der Handhabung einfach lieber ist) beiinhaltet die Klasse ein schlankes printf, mit ein paar speziell an das Interface angepasste Platzhalter. Vieles aus einem "originalen" printf wurde entfernt, damit der Flashbedarf klein bleibt. Dafür wurde ein "Pseudofloat" eingeführt, welches schlicht eine Dezimalzahl ausgibt, bei der aber bestimmt werden kann, an welcher Stelle ein Dezimalpunkt eingefügt wird. Diejenigen, die so etwas ablehnen, können den gewohnten Stream aus Arduino verwenden, der ebenso funktioniert, weil die Klasse diesen Stream erbt. Im Anhang gibt es ein Archiv, in dem zum einen der Empfängersketch enthalten ist: stxlcdrecv_uart.ino sowie eine weitere gepackte Zip-Datei, die mittels der Libraryverwaltung on Arduino installiert werden kann. Jetzt bin ich am überlegen gewesen, ob ich jede einzelne Sourcedatei hier noch einmal getrennt mit anhänge, aber ich denke dass das irgendwie zu viel ist. Denjenigen, den das interessiert, kann sich wirklich die Zip-Datei herunterladen und sich das ansehen (eventuell sieht das ja auch Arduino F. und Veit .... und geben ihre Kommentare ab, von diesen beiden habe etwas über Arduino gelernt). Aus diesem Grund hier zusätzlich zur Dokumentation (die fast länger gebraucht hat als der Code) nur die 3 Demo-Programme aus der Library. Das LCD-Interface (Receiver) bestimmt den Arduino-Pin A4 als RxD (der jedoch geändert werden kann), für Demoprogramme des Senders wird ebenfalls A4 verwendet, hier ist A4 dann logischerweise der TxD. Grundsätzlich müssen also nur die beiden A4 Leitungen der Arduinos und die Masse miteinander verbunden werden. ----------------------------------------- Ich sehe schon: ich habe fast schon wieder zu viel geschrieben und meine Finger sind irgendwie zu schnell. Ich wünsche Euch, je nachdem was Ihr macht, entweder viel Spaß beim Ausprobieren, beim Analysieren oder wenn es euch gefällt auch beim Stänkern und Meckern. Viele Grüße, Ralph
n bisschen arg viel Code, aber schöne PDF
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.