OLED: бегущий график
Значение с потенциометра рисуется полосой, экран прокручивается влево.

Что понадобится
Как подключить
| Откуда | Куда | |||
|---|---|---|---|---|
| Arduino Uno | 5V | → | OLED 128×64 (SSD1306) | VCC |
| Arduino Uno | GND | → | OLED 128×64 (SSD1306) | GND |
| Arduino Uno | A4 | → | OLED 128×64 (SSD1306) | SDA |
| Arduino Uno | A5 | → | OLED 128×64 (SSD1306) | SCL |
| Arduino Uno | 5V | → | Потенциометр | VCC |
| Arduino Uno | GND | → | Потенциометр | GND |
| Arduino Uno | A0 | → | Потенциометр | SIG |
Скетч
#include <Adafruit_SSD1306.h>
// График строится из кольцевого буфера: новая точка справа, старые уезжают
// влево. Крутите потенциометр — линия пойдёт вверх или вниз.
Adafruit_SSD1306 display(128, 64, &Wire, -1);
const int W = 128;
int values[W];
int head = 0;
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextColor(SSD1306_WHITE);
for (int i = 0; i < W; i++) values[i] = 0;
}
void loop() {
values[head] = map(analogRead(A0), 0, 1023, 0, 47);
head = (head + 1) % W;
display.clearDisplay();
display.setCursor(0, 0);
display.print("A0: ");
display.print(analogRead(A0));
for (int x = 0; x < W; x++) {
int v = values[(head + x) % W];
display.drawPixel(x, 63 - v, SSD1306_WHITE);
}
display.drawFastHLine(0, 63, W, SSD1306_WHITE);
display.display();
delay(60);
}
Коротко о детали: OLED 128×64 (SSD1306)
Графический OLED-дисплей 128×64 точки, подключается по I2C всего двумя сигнальными проводами. Рисование — через библиотеку Adafruit_SSD1306: текст, линии, фигуры, картинки. Экран оживает, только если SDA и SCL действительно подключены к выводам I2C платы.
Ещё примеры с деталью «OLED 128×64 (SSD1306)»
Попробуйте сами
Симулятор работает прямо в браузере: схему можно менять, код — править, а результат видно сразу. Бесплатно, без установки и регистрации.
Открыть «OLED: бегущий график» в симуляторе