OLED: бегущий график

Значение с потенциометра рисуется полосой, экран прокручивается влево.

Продвинутый уровень Arduino Uno C++
Схема подключения: OLED: бегущий график
Схема в симуляторе. Нажмите «Открыть в симуляторе», чтобы запустить её и поменять.

Что понадобится

Как подключить

ОткудаКуда
Arduino Uno5V→OLED 128×64 (SSD1306)VCC
Arduino UnoGND→OLED 128×64 (SSD1306)GND
Arduino UnoA4→OLED 128×64 (SSD1306)SDA
Arduino UnoA5→OLED 128×64 (SSD1306)SCL
Arduino Uno5V→ПотенциометрVCC
Arduino UnoGND→ПотенциометрGND
Arduino UnoA0→Потенциометр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: бегущий график» в симуляторе