Zahlensysteme - Display als Lernhilfe
Ob Ausbildung, Studium oder Hobby. Ohne Grundlagen weiß man nur bedingt was man tut.
Am Anfang jeder Einführung in die Informatik stehen die Zahlensysteme. Trotz trockener Mathematik
kann man sich dem Thema auch praktisch nähern. Oder zumindest ein Tool zur Überprüfung der Umrechnung
programmieren.
Die folgende Anwendung stellt eine Erweiterung des Programms aus dem Artikel
"Lauflicht" dar.
Die Darstellung und Formatierung der einzelnen Werte übernimmt die Funktion
"sprintf" (siehe Anwendung "Metering" aus dem Lernpaket)
Bedienung
Die Eingabe der Werte geht über die beiden Displaytasten. Dabei werden wie bei einem Schieberegister
die einzelnen Bits von rechts eingeschoben. Eine "0" mit der rechten Taste und eine "1" mit der linken.
Und hier geht's zum Download.
#include "Display.h" #include "SPI.h" #define LCD_BUTTON_LEFT A4 #define LCD_BUTTON_RIGHT A5 const PROGMEM byte ledOn [] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }; const PROGMEM byte ledOff [] = { 0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF, }; Display lcd = Display(); byte x = 0; void setup() { lcd.init(20); pinMode(LCD_BUTTON_LEFT, INPUT_PULLUP); pinMode(LCD_BUTTON_RIGHT, INPUT_PULLUP); draw(); } void loop() { if (!digitalRead(LCD_BUTTON_LEFT)) { x = x<<1; x = x | 0b00000001; draw(); delay(200); } else if (!digitalRead(LCD_BUTTON_RIGHT)) { x = x<<1; draw(); delay(200); } } void draw() { lcd.clearVideoBuffer(); for (byte i=0; i<8; i++) { if (x & (1<<i)) { lcd.drawBitmap(120 - (i*16), 8, 8, 8, ledOn); } else { lcd.drawBitmap(120 - (i*16), 8, 8, 8, ledOff); } } char buffer[50]; sprintf(buffer, "Dec: %03d ", x); lcd.drawString(8, 30, buffer); sprintf(buffer, "Hex: 0x%02X", x); lcd.drawString(8, 40, buffer); lcd.show(); }
Links und Referenzen: