Дисплей на SSD1309

#include <Wire.h>
#include <Adafruit_GFX.h>     // https://github.com/adafruit/Adafruit-GFX-Library
#include <Adafruit_SSD1306.h> // https://github.com/adafruit/Adafruit_SSD1306
 Adafruit_SSD1306 display(128, 32, &Wire);

 int an_izm_r,an_izm_l;
 int ur_l,urr_l,ur_r,urr_r;

void setup() {
 Serial.begin(9600);
 Wire.begin();Wire.setClock(800000L);
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
 analogReadResolution(8);
 analogReference(INTERNAL1V024);
 pinMode(A0,INPUT);
 pinMode(A1,INPUT);
}

void loop() {
 an_izm_r = analogRead(A0);
 an_izm_l = analogRead(A1);
   urr_l = an_izm_l;
   urr_r = an_izm_r;
  if(urr_l<ur_l){ur_l=ur_l-4;}else{ur_l = an_izm_l;}
  if(urr_r<ur_r){ur_r=ur_r-4;}else{ur_r = an_izm_r;}
 testfillrect();
}


void testfillrect(void) {
  display.clearDisplay();
for(int i=0;i<=ur_l;i+=4){
  display.fillRect(i, 0, 2, 8, SSD1306_INVERSE);
}
  display.setTextSize(1); 
  display.setTextColor(SSD1306_WHITE);
  display.drawLine(0, 9, 125, 9, SSD1306_WHITE);
  display.setCursor(0,11);   
  display.println("-20  -10   -3");
  display.drawLine(90, 10, 125, 10, SSD1306_WHITE);
  display.setCursor(90,11);   
  display.setTextColor(SSD1306_BLACK, SSD1306_WHITE);
  display.println(" 0  +3");
  display.drawLine(0, 19, 125, 19, SSD1306_WHITE);
for(int i=0;i<=ur_r;i+=4){
  display.fillRect(i, 21, 2, 8, SSD1306_INVERSE);
}
  display.display();
}

Я думал об адаптации вот этого скетча к иным библиотекам :frowning:

тест0

тест1

Вот откуда эта какашка :slightly_smiling_face:

Откуда?

image

Надоб @Alexander рассказать. Хоть по описанию так и должно, но как то криво относительно раннего и обще принятого. :roll_eyes:

:face_with_monocle:

спойлер
спойлер

Спойлер

скрыть подробности
скрыть подробности

Обновил я тут движок

Тест2

Тест3

Залил таки тест под 1305, там да всё корректно, за исключением того, что он для 128х64, если ставлю 128х32 сдвиг картинки в право на несколько пикселей.

короче это функция

Спойлер

“скрыть подробности”, но потом это называется спойлер в тексте. Глюк перевода что ли?!

Молодцом(с) Теперь переделывайте скетч.

Ну не зря там человек писал, что пришлось ему немного библиотеку «под шаманить»..

Ну так пробуйте скетч проекта адаптировать, зачем исправлять 64 на 32 если будет работать без искажений на 64?

По поводу переделки скетча под 1305, автор оригинального проекта ответил мне: “В библиотеке Adafruit_SSD1305 нет функции, которая выполняет инверсию строки. Только всего экрана.”

Спойлер

Тест5

“Семён Семёныч” :face_with_diagonal_mouth:. Спасибо.
Тут случай был, когда в тексте сами собой строки заменялись на “мутности.”

А функция вывода картинки есть?

…проще неизменную часть индикатора картинкой вывести, предварительно по своему желанию нарисовав.

Судя по всему это полоски индикатора уровня так рисуются… А не картинка в центре.

Это такой способ построения полосок уровня сигнала. Рисуем палку белую - инверсия ( палка чёрная ) - снова инверсия ( палка белая ) и т.д.

Бросьте вы, это простая графика, полоски это прямоугольники отрисованные на фоне и всё. Их конечно тоже можно рисовать как маленькие картинки. Посмотрите в файле h. библиотеки название функций, есть там функция нарисовать картинку в точке такой то, шириной и высотой такой то?

…вам сначала по скетчу понять авторскую анимацию, потом свою переделать и всё.

Там действительно нет такой фиги(не так работает). Ему надо сдвинуть/сплюшшить типа как вы делали в библиотеках для не стандартного разрешения, - типа в 0.49 и длиннющем цветном.

Ну да, там просто редактирование скетча на предмет сдвига координат в рисуемых объектах. Редактировать и искать где это в библиотеке подправить смысла нет.

Я к тому, что графика индикатора данного проекта не сложная, это одна (неизменная картинка в центре) и два набора закрашенных прямоугольников, которые с каждым циклом после опроса входов стираются и отрисовываются вновь.

Так, похоже мы зашли в тупик… ))