Доброго дня!
Помогите , плиз, разобраться с дисплеями..
Интро: за несколько последовательных покупок купил экраны с алиэкспресс, выбирал по описанию товара, чтоб чип был SSD1306 чтоб воспользоваться библиотекой GyverOLED, по факту - получил экраны с непонятно какими чипами управления..
Первый слева - работает чётко , объявлял как GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled;
!!! хотя на али он подписан как SSH1106 - хотел именно это опробовать , ибо привлекла подпись в описании библиотеки :
- TODO: Буфер на стороне дисплея (только для SSH1106!!!)
Не понял про TODO - что это значит.. ?? короче купил первые экраны как 1106, а он заработал под <SSD1306_128x64, OLED_NO_BUFFER>.
Ну ладно, вроде работает... написал код - всё норм :
-------------------------
Далее захотелось экран побольше , нашел с диагональю 1,3" - по описанию было указано , что у него чип SSD1306 - ну думаю - ништяк, чисто перекинуть экран и поехали дальше без переделок кода вообще -- но , как всегда китайские дядя передал привет с йух-ом завёрнутым в газетку (((
Переподключив экран получаем такое :
пляшущщий снег... видимо чип не 1306 , а 1106 - типо чипа не связан с типом подключения ?? Типо I2C - 4 пина и чип 1306, а SPI- 7 пинов и 1106 чип??как дело обстоит?(
Попробовал далее этот большой экран запустить как
GyverOLED<SSH1106_128x64> oled;
В итоге чето поменялось на том же самом коде стало вот что показывать :
Только заголовки меню написались, данные не вышли на экран..
Хотелось бы запустить именно большие экраны, если получится))
================================
И последний экран - по середине , по описанию на али шел как SSD1306 - но он не запускается ни с каким методом объявления (( - хз че делать , попробую еще пару экранов проверить , мож этот просто дохлый попался..
================================
Как исправить вывод когда на большой экран ?-
по примерам из библиотеки Алекса - oled_demo.ino там какраз вывод через
GyverOLED<SSH1106_128x64> oled;
Но никаких специально созданных буферов в коде на стороне адруины я не увидел, только прямой вывод на экран - что мне тоже и надо.. чисто текст и цифры выводить..
Вот кусок кода, который выводит страницу , что на фотках :
if(f_mask_sheet == false){ // проверяет - написана ли маска меню , выводит , а потом только выводит дату, без перерисовки маски.
tmp_disp=workMode;
oled.setScale(1);
oled.clear();
oled.setCursor(5,0);
oled.println(F(" ПРОГ>"));
oled.println(F("\n-УР.Д1:"));
oled.println(F("\n-УР.Д2:"));
oled.println(F("\n-УР.ФТ:")); // меню 0
oled.update();
Show_result(workMode,0);
oled.setScale(1);
oled.print(" (");
oled.setScale(2);
oled.print(status_D1_prog);
oled.setScale(1);
oled.print(":");
oled.print(status_D2_prog);
oled.print(") ");
oled.print(status_D2_drop);
oled.update();
f_mask_sheet = true;
}
if( !f_modify && My_delay(500)){ // если страница активная, что выводит инфу м датчиков
Show_result(analogRead(D1),2); // выводит напротив нужной подписи.
Show_result(analogRead(D2),4);
Show_result(analogRead(FT_PIN),6);
//oled.update();
}
//-----------------------------
boolean My_delay(uint16_t x){
if((millis()-timer_data>= x)){
timer_data = millis();
return true;
}else{
return false;
}
}
void Show_result(int32_t data, uint8_t str){
oled.clear(50,str*8,122,(str*8+15)); // очистка области от старых данных
oled.setCursor(50,str);
oled.setScale(2);
oled.print(data);
oled.update();
}
Если есть мысли - помогите плиз раскидать такое
===================================
+
попробовал к большому экрану применить пример oled_demo через объявление SSH1106 - нормально работает.
тогда почему мой код выводится странно ?
искать буду дальше))
=============================
Разобрался чуть чуть :
При объявлении GyverOLED<SSH1106_128x64> oled; в памяти ардуины сразу бронируется дополнительно 1028 байт.. 1024 байта - на каждый пиксель экрана и плюс еще 4 байта непонятно на что.
А как сделать буфер на стороне дисплея, как была "затравочка" из описания ?))
Вот нашел , что человек сделал некий вывод без буфера на SSH1106/SH1106 - но в какую библиотеку это добавлено? как понять?
Вывод без буфера на SH1106/SSH1106