Moin,
hier beschreibe ich wie man das LCD DENSITRON PC-6749-AAW (Pollin Nr.
120818, €0,95 .. €1,50) ansteuert. Diese Anleitung zeigt auch gleich,
wie man einen Arduino nano (z.B. ebay Nr. 371179047627, €2,70) unter
Ausschluß der Arduino-Library programmiert. Also praktisch wie einen
fast nackten ATmega328p.
Ganz zu Beginn eine Warnung: die Stiftleisten die den China-Arduinos
beiliegen sind zu dick und ruinieren die Breadboard-Kontakte wenn man
sie verwendet. Besser nimmt man dünnere Kontaktstifte wie z.B. Reichelt
AW 122/20 (€0,84 / 20-polig).
Zum Start sollte man sich einen Schaltplan für den Arduino nano suchen.
Aus dem Schaltplan kann man sich die Zuordnung von Arduino-Pinnummer
(die ist auf der Platine aufgedruckt) und ATmega Portpin raussuchen.
Denn wenn man naked programmiert, greift man ja direkt auf die ATmega
Ports zu. Z.B. hängt die User-LED auf dem Board an Arduino D13 aka PB5.
Das LCD wird wie folgt mit dem Arduino nano verbunden:
1 | ATmega328 Arduino LCD Pin Nr.
|
2 | GND............GND.............GND (1)
|
3 | Vcc............+5V.............Vcc (2)
|
4 | PD4............D4..............WCLK (3)
|
5 | PD3............D3..............DATA (4)
|
6 | PD2............D2..............CS (5)
|
An Software braucht man arduino-mk (das gibt es für Debian/Ubuntu als
fertiges Paket). Es geht zwar auch ohne, aber wenn man es verwendet
kriegt man fertige Rezepte für make und eine definitiv funktionierende
Toolchain.
Der Arduino nano kommt mit einen USB-seriell Wandler. Im Original ist es
ein FT232, die China-Klone kommen teilweise mit fake-FT232, teilweise
auch mit funktionsgleichen Alternativen. Meine z.B.
1 | ~ $lsusb
|
2 | ...
|
3 | Bus 003 Device 010: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
|
Linux kennt die meisten dieser Adapter und lädt das usb-serial Modul.
Das sollte man nach dem Anstecken des Arduino an den USB überprüfen:
1 | ~ $dmesg | fgrep "attached to"
|
2 | [10034.534708] usb 3-6.2: ch341-uart converter now attached to ttyUSB0
|
Hier erscheint der Arduino also als /dev/ttyUSB0.
Jetzt kann man das angehängte ZIP auspacken und mit "make" compilieren.
Wenn das klappt kann man es mit "make upload" flashen. Wenn alles
richtig ist erscheint auf dem Display jetzt "LoL" (siehe Foto).
Nun kann man sich mit einem beliebigen Terminalprogramm mit dem Arduino
verbinden und Zeichen senden. Ich verwende z.B.
1 | ~ $picocom /dev/ttyUSB0
|
2 | picocom v1.7
|
3 |
|
4 | port is : /dev/ttyUSB0
|
5 | flowcontrol : none
|
6 | baudrate is : 9600
|
7 | parity is : none
|
8 | databits are : 8
|
9 | ...
|
Achtung: Baudrate und Datenformat (8N1) muß man u.U. vorher einstellen.
Jedes Zeichen das man eingibt, sendet der Arduino zurück. Außerdem wird
es in den 3 Zeichen fassenden Buffer eingeschoben und angezeigt. Zeichen
die im 16-Segment Zeichensatz fehlen, werden als Pseudozeichen mit allen
Segmenten eingeschaltet angezeigt.
Wenn man den seriellen Port auf ATmega und(!) Host-Seite passend
konfiguriert, kann man natürlich auch höhere Baudraten fahren. Auf jeden
Fall bekommt man zum Preis von 2 Pins (UART RxD, TXD) einen sehr
praktischen Kanal für Debug-Ausgaben.
Ich hoffe es hilft jemandem.