Hallo Gemeinde
möchte die Adresse eines Gerätes auf dem Diplay mit I2C darstellen. Dazu
geb ich Daten ein:
1
#define adr1_w 0x40 // Adresse I2C 0x40
Die Anzeige soll damit kommen:
1
lcd_putcharlc(4,10,(adr1_w));
Habe das gleich auch mit
lcd_printlc
lcd_printlc_P
lcd_printlcc
lcd_printlcc_P
getestet. Kommt immer eine Fehlermeldung. Was ist falsch?
Ausgabe eines Textes geht ohne Probleme
Proramm in C Atmega
LG Pl
wenn ich
lcd_printlc_P(4,10,(adr1_w));
schreibe, erscheint B und ein Zwischending von 9 und deinem Zeichen
(undefiniert). Hatte angenommen, das auch 0x40 bzw 64 dargestellt wird.
Denkfehler?
mit diesem
lcd_putchar(adr1_w);
bekomme ich das Zeichen
Pete K. schrieb:> 0x40 müsste das @-sign sein. Ist das im Zeichenvorrat des LCD vorhanden?
Wie mach ich daraus 0x40?
Zum Beispiel durch den Einsatz von sprintf(...). Diese Funktion wandelt
eine Zahl in einen String um.
Du könntest Dir auch eine Funktion schreiben, die eine Ganzzahl in einen
Hexstring wandelt oder eine Zahl (0..15) in (0..F).
Ohne zusätzliche Funktion sieht es Quick'n'Dirty so aus:
auf und wunderst dich über einen Fehler ?
Erwartest du, daß eine 4-Zeichen-Folge "0x40" ausgegeben wird
oder erwartest du, daß ein @ ausgegeben wird ?
lcd_putcharlc wäre für die Ausgabe eines @ richtig,
du wolltest wohl lcd_putcharlcc aufrufen.
Besorge dir mal ein C Grundlagenbuch.
Aber nein, lcc passt nicht zu lc, an statt zu verschweigen was du
verwendest, könntest du es wenigstens mal nennen:
https://www.mikrocontroller.net/attachment/280346/i2clcd.c
Aus einem
1
#define adr1_w 0x40
wird niemals eine 4-Zeichen Folge "0x40" ausgegeben.
Zumindest eine Umwandlung wie durch
Habe den Code
Michael B. schrieb:> char text[8];> text[0]='0';> text[1]='x';> itoa(adr1_w,text+2,16)> lcd_putcharlcc(4,10,text);
in mein Programm eingebaut. Gabe noch ein paar kleine Fehlermeldungen,
geht jetzt aber super. Verwende es bereits in anderen Teilen meines
Programmes. Sieht jetzt so aus:
1
chartext[8];
2
lcd_putcharlc(4,10,'0');
3
lcd_putcharlc(4,11,'x');
4
itoa(adr1_w,text,16);
5
lcd_printlc(4,12,text);
noch das rein und es gibt keine Fehlermeldung:
#include "stdlib.h"
Danke für deine Hilfe.
LG Paul
PS. Musst nicht gleich mit einem C Buch drohen. Es gibt genug Schrott
auf den Markt