ATTiny88 + OLED

mihannnik

✩✩✩✩✩✩✩
24 Фев 2022
4
0
Здравствуйте, разбирался с ATTiny, подключил дисплей по I2C, залил пример из библиотеки Digispark OLED и столкнулся с проблемой: текст, в целом, выводится нормально, но вот изображение и заливка экрана явно работают не верно.
Видно, что часть экрана залито белым, как и должно быть после выполнения oled.fill(0xFF), но оставшаяся часть экрана сохраняет предыдущее состояние. Что можно сделать, чтобы избавиться от этой проблемы? Если залить весь экран пробелами, то он очищается, но это не выход.
 

mihannnik

✩✩✩✩✩✩✩
24 Фев 2022
4
0
@bort707,
C++:
#include <DigisparkOLED.h>
#include <Wire.h>
// ============================================================================

#include "img0_128x64c1.h"
#include "digistump_128x64c1.h"


void setup() {
  // put your setup code here, to run once:
  oled.begin();
}

void loop() {
  oled.fill(0xFF); //fill screen with color
  delay(1000);
  oled.clear(); //all black
  delay(1000);
  //usage: oled.setCursor(X IN PIXELS, Y IN ROWS OF 8 PIXELS STARTING WITH 0);
  oled.setCursor(0, 0); //top left
  oled.setFont(FONT8X16);
  oled.print(F("DIGISTUMP")); //wrap strings in F() to save RAM!
  oled.setFont(FONT6X8);
  oled.print(F(" OLED!"));
  oled.setCursor(0, 2); //two rows down because the 8x16 font takes two rows of 8
  oled.println(F("test")); //println will move the cursor 8 or 16 pixels down (based on the front) and back to X=0
  oled.print(F("test test test test test")); //lines auto wrap
 
  delay(3000);
  //usage oled.bitmap(START X IN PIXELS, START Y IN ROWS OF 8 PIXELS, END X IN PIXELS, END Y IN ROWS OF 8 PIXELS, IMAGE ARRAY);
  //oled.bitmap(0, 0, 128, 8, img0_128x64c1);
  delay(3000);
  oled.bitmap(0, 0, 128, 8, digistumplogo);
  delay(3000);
}
 

bort707

★★★★★★✩
21 Сен 2020
3,073
915
Я не очень понимаю, что вы хотите от программы, если вы СНАЧАЛА заполняете дисплей белым, а ПОТОМ его чистите и выводите надписи. В результате на дисплее вы видите результат последней операции.Чего вы ожидали?
Хотя может я не понял проблемы, тогда поясните.
 

mihannnik

✩✩✩✩✩✩✩
24 Фев 2022
4
0
@bort707, на фото видно, что операция залития белым не работает как должна. Заливается 1/3 экрана белым, хотя должен весь. Ну и оставшиеся 2/3 не очищаются командой clear()
 

Bruzzer

★★★✩✩✩✩
23 Май 2020
501
149
@mihannnik,
Если выводить только текст, то он выводится корректно в левой части? Я говорю про левую часть, которая сейчас белая.
 

mihannnik

✩✩✩✩✩✩✩
24 Фев 2022
4
0
@Bruzzer, в левой части всё выводится корректно, даже битмап изображение, а вот в правой - только текст и белый шум
 

viktor1703

★★★✩✩✩✩
9 Дек 2021
637
153
Я недавно пробовал с библиотекой GyverOLED.h так там корректно всё отрисовывать. Нужно залить экран - выводишь во весь экран залитый прямоугольник.
 

bort707

★★★★★★✩
21 Сен 2020
3,073
915
Я думаю что у ТС просто не хватает памяти. Для начала в скетче нужно убрать вывод битмапа и посмотреть, не пропадет ли проблема.
 

viktor1703

★★★✩✩✩✩
9 Дек 2021
637
153
Использование microWare.h не кисло так память (относительно Attiny88) освобождает