I2C Alphanumerisches Display (14 Segmente)Von Adafruit gibt es ein alphanumerisches Display mit 14 Segmenten welches durch einen HT1638 Controller angetrieben wird. Dieser verwendet I2C als Kommunikationsbus. Um das Display zu betreiben benötigt man zwei Libraries von Adafruit:
Die I2C Addresse startet bei 0x70 und kann durch drei Lötbrücken bis zu 0x77 verändert werden:
Der Anschluss des Displays an den HelvePic32 erfolgt über den herausgführten I2C Bus: Der Democode ist mit dem Adruino-Code identisch. Lediglich in der Library Adafruit_LED_Backpack muss PROGMEM entfernt werden, da dieses Konstrukt beim PIC Prozessor nich existiert. Dementsprechend wird diese Memeory auch direkt ausgelesen. In Zeile 244 (je nach Version) muss also folgende Zeile eingefügt werden und die alte Zeile auskommentiert: // uint16_t font = pgm_read_word(alphafonttable+a); uint16_t font = alphafonttable[a]; Demo Code von Adafruit// Demo the quad alphanumeric display LED backpack kit // scrolls through every character, then scrolls Serial // input onto the display #include #include "Adafruit_LEDBackpack.h" #include "Adafruit_GFX.h" Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4(); void setup() { Serial.begin(9600); alpha4.begin(0x70); // pass in the address alpha4.writeDigitRaw(3, 0x0); alpha4.writeDigitRaw(0, 0xFFFF); alpha4.writeDisplay(); delay(200); alpha4.writeDigitRaw(0, 0x0); alpha4.writeDigitRaw(1, 0xFFFF); alpha4.writeDisplay(); delay(200); alpha4.writeDigitRaw(1, 0x0); alpha4.writeDigitRaw(2, 0xFFFF); alpha4.writeDisplay(); delay(200); alpha4.writeDigitRaw(2, 0x0); alpha4.writeDigitRaw(3, 0xFFFF); alpha4.writeDisplay(); delay(200); alpha4.clear(); alpha4.writeDisplay(); // display every character, for (uint8_t i='!'; i<='z'; i++) { alpha4.writeDigitAscii(0, i); alpha4.writeDigitAscii(1, i+1); alpha4.writeDigitAscii(2, i+2); alpha4.writeDigitAscii(3, i+3); alpha4.writeDisplay(); delay(300); } Serial.println("Start typing to display!"); } char displaybuffer[4] = {' ', ' ', ' ', ' '}; void loop() { while (! Serial.available()) return; char c = Serial.read(); if (! isprint(c)) return; // only printable! // scroll down display displaybuffer[0] = displaybuffer[1]; displaybuffer[1] = displaybuffer[2]; displaybuffer[2] = displaybuffer[3]; displaybuffer[3] = c; // set every digit to the buffer alpha4.writeDigitAscii(0, displaybuffer[0]); alpha4.writeDigitAscii(1, displaybuffer[1]); alpha4.writeDigitAscii(2, displaybuffer[2]); alpha4.writeDigitAscii(3, displaybuffer[3]); // write it out! alpha4.writeDisplay(); delay(200); } |
|||||||||||||||||||||||||||||||||||||
Letzte Aktualisierung: © boxtec internet appliances · the better security products |