Hallo Ein ePaper von EA vom Typ eLabel20 kann über SPI oder I2C programmiert werden. Bei der Auswahl des Font wird der Befehl DC1, ESC und Z und F übertragen. Danach erfolgt die Auswahl von 0-15. Es sind vom Hersteller 7 Fonts bereits vorgesehen. Nach einem Reset wird immer der Font 0 verwendet. Leider kann ich kann keinen andeen Font auswählen, es kommt immer nur der Font 0. Warum? mfg Kla
Wie gibst Du den Parameter für DC1,ESC,Z,F an? Als ASCII-Ziffer? Das sähe dann so aus: 0x11 0x1b 0x5A 0x46 0x31 (für '1'). Probier' mal den Wert, d.h. 0x11 0x1b 0x5A 0x46 0x01 bis 0x11 0x1b 0x5A 0x46 0x06 für die sechs anderen Fonts als 0.
Halo Rufus Mache es so
1 | int8_t bcc; |
2 | bcc = 0x11 + 0x04 + 0x1b + 'Z' + 'F' + x; |
3 | i2c_start(slave_adresse_1); |
4 | i2c_write(0x11); // DC1 0x11 |
5 | i2c_write(0x04); // 04 len |
6 | i2c_write(0x1b); // ESC |
7 | i2c_write('Z'); // Z |
8 | i2c_write('F'); // F |
9 | i2c_write(x); |
10 | i2c_write(bcc); |
Der Aufruf erfolgt dabei durch:
1 | eP_Font_Auswahl(2); // Auswahl Schriftart Z + F 0-8 |
2 | eP_Text_L( 35, 26, "Test L"); // Ausgabe Text links Z + L |
Mit x gebe ich die Schriftart an. Habe so ziemlich jeden Befehl für das ePaper von EA so aufgebaut. Alles andere funktionieren, nur die Schrift bereitet mir Probleme. Bei anderen Display, z.B. edip128 oder edipTFT32 geht das ohne Probleme Kl
Ah, ich hatte mir nur Deine Kurzbeschreibung und nicht das Manual angesehen. Das, was Du da machst, sieht soweit sinnvoll aus, das Grundprotokoll stimmt offensichtlich, da sonst nichts anderes funktionieren sollte. Andererseits steht im Manual (S.6) etwas von einem einzulesenden ACK - wertest Du das aus?
Hallo Rufus ich werte es damit aus und lasse es zusätzlich auf einem zweiten Display anzeigen. Damit bekomme ich auch die Feheleranzeige zurück. Bei 6 alles ok. Bei 21 ist ein Fehler drin.
1 | i2c_start(slave_adresse_2); |
2 | e = i2c_readAck(); |
3 | i2c_stop(); |
4 | itoa( e, Buffer, 10 ); |
5 | lcd_printlc(1,12,Buffer); |
6 | _delay_us(100); |
Klaus schrieb: > Bei 6 alles ok. Bei 21 ist ein Fehler drin. Was meinst Du damit? Sind das die Werte, die Du als Font-Nummer übergibst?
Das sind nicht die Fontnummern. Das Display überprüft die Werte die übergeben werden. Wenn die übergebene Summe mit der Summeder Werte stimmt, kommt eine 6 zurück. In dem Code wird es als len bzw. bcc geschrieben.
Ah. Das sind die Codes für ACK und NAK. Mit bcc bzw. len hat das nichts zu tun.
Sorry, habe mir das Problem noch mal vorgenommen. Das Datenblatt des Herstellers steht am Anfang. Noch mal der ganze Aufruf:
1 | void eP_Font_Auswahl(int8_t x) // Auswahl Font Z + F |
2 | {
|
3 | int8_t bcc; |
4 | bcc = DC1 + 0x04 + ESC + 'Z' + 'F' + x ; |
5 | i2c_start(slave_adresse_1); |
6 | i2c_write(DC1); // DC1 |
7 | i2c_write(0x04); // 04 |
8 | i2c_write(ESC); // ESC |
9 | i2c_write('Z'); // Z |
10 | i2c_write('F'); // F |
11 | i2c_write(x); |
12 | i2c_write(bcc); |
13 | i2c_stop(); |
14 | |
15 | _delay_us(40); |
16 | |
17 | i2c_start(slave_adresse_2); |
18 | e = i2c_readAck(); |
19 | i2c_stop(); |
20 | itoa( e, Buffer, 10 ); |
21 | lcd_printlc(1,10,Buffer); |
22 | _delay_us(200); |
23 | }
|
Dabei ist:
1 | #define DC1 0x11
|
2 | #define ESC 0x1B
|
Angabe der Fonts:
1 | eP_Font_Auswahl(0); // Auswahl Schriftart Z + F 0-8 |
2 | eP_Text_L( 35, 6, "Test L0"); // Ausgabe Text links Z + L |
3 | _delay_ms(5); |
4 | |
5 | eP_Font_Auswahl(1); // Auswahl Schriftart Z + F 0-8 |
6 | eP_Text_R( 35, 26, "Test L1"); // Ausgabe Text links Z + L |
7 | _delay_ms(5); |
8 | |
9 | eP_Font_Auswahl(4); // Auswahl Schriftart Z + F 0-8 |
10 | eP_Text_C( 35, 46, "Test L2"); // Ausgabe Text links Z + L |
Hat jemand eine Idee dazu? LG Kl
Keine Ahnung, ob es damit zusammenhängt, nur so ein Gedanke: Die Variable bcc zur Berechnung der Checksumme deklarierst Du als signed 8-Bit-Wert; im Beispiel-Code im Datenblatt hingegen wird diese Variable als unsigned deklariert.
Sehe ich mir sofort an, bei allen anderen Befehlen geht das mit int.
Habe es eingegeben und denn Font mehrfach geändert. Hat scheinbar kein Einfluss auf die Ausgabe
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.