Hi
Ne, ich bekomme Es nicht hin.
Im Programm werden die Zeichen in Arrays gepackt:
//dafont.com 5x5-dots.font
//0x21 = 33dez "!"
const byte _AUSRUF[] = { B00100,
B00100,
B00100,
B00000,
B00100
};
//0x22 = 34dez """
const byte _DOPPELHOCHKOMMA[] = { B01010,
B01010,
B00000,
B00000,
B00000
};
Im Code sind die Zeichen 0x21 (!) - 0x7A (z) lückenlos enthalten, sollte also aus einem String heraus 'einfach' an die Bitmuster kommen können.
Leider meckert die IDE laufend, wenn ich versuche, mit einem Pointer auf _AUSRUF[] zu zeigen.
int zeichen;
zeichen=&_AUSRUF;//[0];// + id;
/*
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs" "-IE:\Arduino\sketchbook\libraries\LedControl\src" "C:\Users\posti\AppData\Local\Temp\arduino_build_806571\sketch\MAX7219_DotMatrix_Library_umgeschrieben.ino.cpp" -o "C:\Users\posti\AppData\Local\Temp\arduino_build_806571\sketch\MAX7219_DotMatrix_Library_umgeschrieben.ino.cpp.o"
E:\Arduino\sketchbook\own_sketch\MAX7219_DotMatrix_Library_umgeschrieben\MAX7219_DotMatrix_Library_umgeschrieben.ino: In function 'void setzezeichen(byte, byte, byte, byte, boolean)':
E:\Arduino\sketchbook\own_sketch\MAX7219_DotMatrix_Library_umgeschrieben\MAX7219_DotMatrix_Library_umgeschrieben.ino:764:12: warning: invalid conversion from 'const byte (*)[5] {aka const unsigned char (*)[5]}' to 'int' [-fpermissive]
zeichen=&_AUSRUF;//[0];// + id;
^
E:\Arduino\sketchbook\own_sketch\MAX7219_DotMatrix_Library_umgeschrieben\MAX7219_DotMatrix_Library_umgeschrieben.ino:763:9: warning: variable 'zeichen' set but not used [-Wunused-but-set-variable]
int zeichen;
^
Wobei die Declaration int zeichen; eine Zeile VOR der Pointer-Zuweisung steht, somit die Warnung, daß 'zeichen' nicht benutzt wird, eigentlich so nicht sein kann.
Mein Vorhaben war eigentlich, daß ich so an den Anfang des gewünschten Zeichen springen kann
Startadresse + (ID-33)*5 (das erste mögliche Zeichen ist ASCII 33 = ! somit Position 0, *5, da jeweils 5 Byte übersprungen werden müsen)
wobei 'zeichen' der Pointer sein soll und ich die Entfernung zum gewünschten Startbyte addiere.
- klappt nicht wirklich -
Von da wollte ich die 5 Bytes lesen, um an die Bitmuster zu kommen - soweit komme ich aber noch nicht.
Wie kann ich mit dem Pointer arbeiten (das Beispiel in der Referenz läuft mit einer Variable, daran habe ich mich eigentlich orientiert, wobei dort der Pointer nicht verändert wird) Referenz Pointer
Oder bin ich auf einem Irrweg und Das geht viel einfacher?
Dann noch: Egal, wie viele Zeichen ich per const byte als Array im Code angebe, die Programmgröße verändert sich NICHT - habe somit zusätzlich die Befürchtung, daß die Arrays gar nicht angelegt werden, wobei die Fehlermeldung (in den Code als Kommentar kopiert, die IDE ist in einer VM) von ungleichen Dateitypen spricht, das Anfangs-Array _AUSRUF[] also vorhanden sein müsste.
Im Anhang (wenn Alles klappt) der 5x5-Font als Array-Haufen, Zeichen 0x21 (!) bis 0x7A (z) lückenlos enthalten - vll. kann's Wer gebrauchen.
(diese Datei hätte ich gerne per Include eingebunden, so als Schmankerl - klappt natürlich auch nicht, da Es sich hierbei nicht um eine C++-Datei handelt)
MfG
font5x5.txt (16 KB)