Дисплей на SSD1309

Что мне нужно сделать, простите, я не совсем понимаю…

исправить в библиотеке этот файл -

Adafruit_SSD1306.h

и в скетче изменить как я привел, не факт, что поможет, ну а вдруг

На своём 1309 запустить мой код

1 лайк

Код работает.

ЧТД - Кривая библиотека у Вас …

Вместо процедуры инициализации дисплея - передайте на устройство массив из моего кода …

А как и что исправить в ней, да и она же закрыта для редактирования…

и как я тогда её правил?

Я новичок, я не знаю как править… Но могу загуглить например…

Всё что написано в Setup моего кода - перенесите в свой ПОСЛЕ строки инициализации дисплея !!! Может переинициализируется и заработает как надо …

Или используйте НОРМАЛЬНУЮ библиотеку, а не обрубок …

Wire.begin();

Wire.setClock(800000);

Wire.beginTransmission(ssd1306_addr);

Имеется ввиду - это заменить?

1 лайк

Он вот это имеет ввиду:

#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);

#define ssd1306_addr 0x3C

// Массив инициализации 1306
static const uint8_t PROGMEM init_bytes[] = {0x00, 0xAE, 0xD5, 0x80, 0xA8, 0x3F, 0xD3, 0x00, 0x40, 0x8D, 0x14, 0x20, 0x00, 0xA1, 0xC8,
                                             0xDA, 0x12, 0xD9, 0xF1, 0xDB, 0x40, 0xA4, 0xA6, 0xAF
                                            };

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);
// --- Блок от komandir (начало) ---
  Wire.beginTransmission(ssd1306_addr);
  for (uint8_t i = 0; i < sizeof(init_bytes); i++) {
    Wire.write(pgm_read_byte(init_bytes + i));
  }
  Wire.endTransmission();
// --- Блок от komandir (окончание) ---
  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();
}

для начала я бы попробовал просто повернуть изображение на родной библиотеке:
display.setRotation(1);
цифра от 0 до 3 видимо может быть

На кой, ТС даже совместные фотки привёл - видно же, что дело в сдвиге/масштабе/пропуске.
@Ivan79 Если библиотека поддерживает SSD1305, то попробуйте заменить на неё.

я не такой прозорливый однако, по мне так “прыгать надо”.

Вставка массива инициализации не помогла. Ничего не изменилось.

Экран не поддерживает библиотеку SSD1305, я пробовал…

Тогда остаётся только одно:

))))

Прямо по вашей ссылке

Может он 800 не тянет…

пробуй тогда повращать:


#include <Wire.h>
#include <Adafruit_GFX.h>     // https://github.com/adafruit/Adafruit-GFX-Library
#include <Adafruit_SSD1306.h> // https://github.com/adafruit/Adafruit_SSD1306

//#define SSD1306_32_128
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);
 display.setRotation(1);
 analogReadResolution(8);
 analogReference(INTERNAL1V024); //WAVGAT
 //analogReference(INTERNAL); // nano, uno
 pinMode(A0,INPUT);
 pinMode(A1,INPUT);
}

И что за зверь SSD1306_SWITCHCAPVCC ?