Hi,
ups ja natürlich darf da nicht const stehen.
Ich will gelesene Daten zu einem uint8[] casten.
Die Funktion braucht ein Byte Array in der Eingabe(myImage) => Hier zu sehen:u8g.drawBitmapP( 0, 0, 16, 64, myImage);
siehe: void U8GLIB::drawBitmapP(u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap)
Das Problem ist ja , ich habe eine Textdatei auf der SD-Karte, die muss das Byte Array des Bildes enthalten. Dieses Byte Array muss irgendwie in die Funktion drawBitmapP.
Die Frage ist ja wie kann man das direkt Casten?
Normlerweise wird das ByteArray direkt im Sketch abgelegt und bei drawBitmap verwendet.(siehe folgenden Sketch)
Oder muss ich die ganze Textdatei auslesen und jeden Wert mit der Trennung Komma nacheinander auslesen,casten in uint8_t und einem ByteArray hinzufügen?U8GLIB_PCD8544 u8g(13, 11, 10, 9,; // SPI communication: SCK = 13, MOSI = 11, CS = 10, A0 = 9, Reset = 8
const uint8_t rook_bitmap[] U8G_PROGMEM = {
0x00, // 00000000
0x55, // 01010101
0x7f, // 01111111
0x3e, // 00111110
0x3e, // 00111110
0x3e, // 00111110
0x3e, // 00111110
0x7f // 01111111
};
void draw(void) {
// graphic commands to redraw the complete screen should be placed here
u8g.drawBitmapP( 0, 0, 1, 8, rook_bitmap);
}
void setup(void) {
}
void loop(void) {
// picture loop
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
// rebuild the picture after some delay
delay(1000);
}
Ich weiß nicht genau wie ich das mache soll ... Oder gibt es eine bessere Lösung?
Ich habe nämlich 34 Bilder, die ich später nacheinander auf dem Oled abspielen möchte. Da ich aber einen Arduino nano (32 kb memory) verwende und mein Sketch nicht klein ist , habe ich nur noch 7 kb frei. Deswegen kam mir die Idee , alle Bilder auf eine SD Karte zu speichern und diese dann nacheinander einzulesen.
Lesezeichen