Что мне нужно сделать, простите, я не совсем понимаю…
исправить в библиотеке этот файл -
Adafruit_SSD1306.h
и в скетче изменить как я привел, не факт, что поможет, ну а вдруг
На своём 1309 запустить мой код
ЧТД - Кривая библиотека у Вас …
Вместо процедуры инициализации дисплея - передайте на устройство массив из моего кода …
А как и что исправить в ней, да и она же закрыта для редактирования…
и как я тогда её правил?
Я новичок, я не знаю как править… Но могу загуглить например…
Всё что написано в Setup моего кода - перенесите в свой ПОСЛЕ строки инициализации дисплея !!! Может переинициализируется и заработает как надо …
Или используйте НОРМАЛЬНУЮ библиотеку, а не обрубок …
Wire.begin();
Wire.setClock(800000);
Wire.beginTransmission(ssd1306_addr);
Имеется ввиду - это заменить?
Он вот это имеет ввиду:
#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 ?

