PicAsSo-Adventskalender: Das dritte Türchen darf endlich geöffnet werden

Seite 3: Bild übertragen

Inhaltsverzeichnis

Nun benötigen wir ein Picaxe-Programm, das auf der seriellen Schnittstelle die Daten entgegennimmt und in das I2C-EEPROM schreibt. Dafür laden wir das Programm picasso_3_xmodem_bin.bas in den Picaxe. Die gelbe LED auf dem Steckbrett sowie die blaue LED auf dem Nano-Axe leuchten nun und auf dem OLED erscheinen zwei Textzeilen:

1) Start XMODEM
2) Press BUTTON

Zuerst muss man das XMODEM-Programm auf dem PC starten. Das im Picaxe-Editor integrierte Terminal unterstützt jedoch kein XMODEM-Protokoll. Deshalb verwenden wir das Tool TeraTerm. Es wird auch als portable Version im zip-Format angeboten. Beim Start erscheint gleich ein Dialogfenster für die zu öffnende Verbindung, hier klicken wir auf Abbrechen. Im Menü wählen wir Einstellungen - Serieller Port und wählen den passenden COM-Port aus. Die Baudrate wird auf 38400 Bd eingestellt und es werden 2 Stopbits ausgewählt. Das ist wichtig, da so kurze Lücken mit der Dauer einer Bitzeit zwischen den Datenbytes entstehen, sodass der Picaxe nach jedem Byte kurz verschnaufen kann. Mit nur einem Stopbit ist der Datenstrom für ihn zu schnell.

Im Menü klicken wir dann auf Datei - Transfer - XMODEM - Senden und wählen die gewünschte Binärdatei aus, im Beispiel make_logo_128x64.bin.

Teraterm (3 Bilder)

Teraterm Einstellungen für den seriellen Port

TeraTerm wartet nun auf den Beginn der Datenübertragung, die von der Gegenstelle initiiert werden muss. Wir drücken kurz auf den Taster auf dem Steckbrett, um die Übertragung zu starten. Die gelbe und blaue LED sollten nun flackern und in TeraTerm sollte sich der Fortschrittsbalken auf 100% zubewegen.

Nachdem die Übertragung beendet ist, leuchten die gelbe und blaue LED und das übertragene Bild ist auf dem OLED sichtbar. Ebenso wurde es ins externe I2C-EEPROM ab Adresse 0 (entsprechend der Variablen eepromAddr) kopiert. Wenn man ein weiteres Bild schickt, wird es hinter das erste Bild ins EEPROM kopiert, also ab Adresse 1024. Die Variable eepromAddr wird fortlaufend hochgezählt.

Solange TeraTerm den COM-Port geöffnet hat, ist kein weiterer Download eines Programms aus dem Picaxe-Editor heraus möglich (Fehlermeldung „Can’t open port“). Um die Verbindung von TeraTerm zu trennen, wählt man im Menü unter Datei - Trennen (Tastenkombination Alt-I) aus.

Damit wir mehrere Bilder in einem Rutsch ins EEPROM kopieren können, verwenden wir die Batchdatei _generate_one_file.bat. Hiermit kann eine zusammenhängende Binärdatei erstellt werden. Um die Bilder in der gewünschten Reihenfolge anzuordnen, fügt man im Dateinamen einen zweistelligen Index 00_, 01_ bis xx_ vorne an. Das Batchfile hängt alle im Verzeichnis vorhandenen Bild-Binärdateien mit der Dateiendung *.bin in alphabetischer Reihenfolge aneinander und erzeugt die Datei _complete.bin. Im Beispiel besteht diese aus acht Bildern.

Bevor wir diese Datei übertragen, lösen wir einen Spannungs-Reset am Picaxe aus, indem wir das USB-Kabel des Nano-Axe-Boards kurz vom PC abziehen und wieder einstecken. Das Picaxe-Programm startet dann neu und die Speicherung der Bilder beginnt wieder ab EEPROM-Adresse 0. Nun wählen wir in TeraTerm wieder Datei - Transfer - XMODEM - Senden und wählen die Binärdatei picasso3_complete.bin aus, um in einem Rutsch die acht Bilder per XMODEM zu übertragen, ohne alle Einzelbilder nacheinander selektieren zu müssen. Während der Übertragung sieht man kurz das jeweilige Bild auf dem OLED. Am Ende wird das letzte Bild angezeigt.

Damit wir die übertragenen Bilder als Diashow sehen, laden wir das Programm picasso_3_xmodem_diashow.bas in den Picaxe. Daraufhin werden sie abgespielt. Im Beispiel werden die ersten 4 Bilder 0 bis 3 mit jeweils ca. einer Sekunde Pause durchgeschaltet und die nächsten 4 Bilder 4 bis 7 mit jeweils ca. 100ms Pause, sodass sich eine kleine weihnachtliche Animation ergibt. Was ist wohl zu sehen?

Um neue Bilder ins EEPROM zu laden, drückt man den Taster auf dem Steckbrett solange, bis die gelbe und blaue LED leuchten. Dadurch wird der bekannte Bildübertragungsmodus mit dem zweizeiligen Hinweis auf dem OLED gestartet. Werden nun Bilder übertragen, dann werden diese ab EEPROM-Adresse 0 nacheinander gespeichert. Um die Diashow mit den 8 Bildern (4x langsamer, 4x schneller Wechsel) erneut abzuspielen, ist ein Spannungsreset notwendig – also USB-Kabel kurz abziehen und wieder einstecken.

Als Beispiel, wie man per eigenem Programm auf bereits vorhandene EEPROM-Bilder zugreifen kann, laden wir picasso_3_eeprom_diashow.bas in den Picaxe. Hier werden dann die ersten acht Bilder fortlaufend mit ca. einer Sekunde Pause dazwischen auf dem OLED angezeigt. Um ein Bild aus dem EEPROM zu laden und auf dem OLED darzustellen, gibt es das Makro OLED_IMAGE(x), dem man die gewünschte Bildnummer 0..x übergibt, so wie im Beispiel in der for-Schleife zu sehen.

for imageNumber = 0 to 7
OLED_IMAGE(imageNumber)
pause IMAGE_DELAY
next imageNumber

Weihnachtliche Animation auf dem OLED: Die Rentiere sind schon los ...