Код (Javascript): #include "U8glib.h" //settings U8GLIB_ST7920_128X64 u8g(13, 11, 10, U8G_PIN_NONE); //SPI #define LINE_MAX 128 #define ROW_MAX 64 uint8_t screen[ROW_MAX][LINE_MAX]; //******** void draw(void) { u8g.setFont(u8g_font_6x10); u8g.drawStr( 0, 10, "Hello World!"); clear_screen(); } void setup(void) { if ( u8g.getMode() == U8G_MODE_R3G3B2 ) { u8g.setColorIndex(255); // white } else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) { u8g.setColorIndex(3); // max intensity } else if ( u8g.getMode() == U8G_MODE_BW ) { u8g.setColorIndex(1); // pixel on } else if ( u8g.getMode() == U8G_MODE_HICOLOR ) { u8g.setHiColorByRGB(255,255,255); } } void clear_screen(void) { uint8_t i, j; for( i = 0; i < ROW_MAX; i++ ) for( j = 0; j < LINE_MAX; j++ ) screen[i][j] = 0; } void loop(void) { u8g.firstPage(); do { draw(); } while( u8g.nextPage() ); }
Я очищаю так: Код (C++): void SSD1306_gLIB_RAM_clear (void) { uint8_t buffer[128]; uint8_t buffer1[6]; uint8_t a = 128; buffer1[0] = SSD1306_CMD_SET_PAGE_ADDRESS; buffer1[2] = 0x07; buffer1[3] = SSD1306_CMD_SET_COLUMN_ADDRESS; buffer1[4] = 0; buffer1[5] = 0x7F; while (a) { a--; buffer[a] = 0x00; } a = 8; while (a) { a--; buffer1[1] = a; SSD1306_SendCommand(6, buffer1); SSD1306_SendData(128, buffer); } } и не надо читать до обеда совецких газет.
а зачем? Памяти не хватает? Тут всего 128 байт под одну строчку (column) и 6 байт под команду. шо, простите????
Да вот Код (Javascript): #include <iarduino_RTC.h> #include "U8glib.h" //settings U8GLIB_ST7920_128X64 u8g(13, 11, 10, U8G_PIN_NONE); //SPI iarduino_RTC time(RTC_DS1302,6,8,7); //******** void loader(void) { time.settime(0, 30, 18, 12, 6, 20, 5); } void comobi(void){ u8g.setFont(u8g_font_6x10); u8g.drawLine(0, 10, 128, 10); Serial.println(time.gettime("H:i:s")); u8g.drawStr( 0, 9, time.gettime("H:i:s")); } void setup(void) { if ( u8g.getMode() == U8G_MODE_R3G3B2 ) { u8g.setColorIndex(255); // white } else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) { u8g.setColorIndex(3); // max intensity } else if ( u8g.getMode() == U8G_MODE_BW ) { u8g.setColorIndex(1); // pixel on } else if ( u8g.getMode() == U8G_MODE_HICOLOR ) { u8g.setHiColorByRGB(255,255,255); } u8g.firstPage(); do { loader(); } while( u8g.nextPage() ); delay(2000); } void loop(void) { u8g.firstPage(); do { comobi(); } while( u8g.nextPage() ); }
Также я решил проблему с оптимизацией, по сути убрав clear_screen() и сделав несколько циклов. Оказалось что после каждого цикла Код (Javascript): do{ draw(); } while( u8g.nextPage()); автоматически очищается экран, и делает это быстрее. Плюс оказалось что контакт был не плотный и провода ещё чуть-чуть и отвалились бы, теперь всё работает отлично!