📈 درس 72: نمودار زنده روی OLED

عدد پتانسیومتر را مثل دستگاه نوار قلب روی صفحه بکش — خطی که از راست وارد می‌شود.

سطح: پیشرفته · زمان: حدود 20 دقیقه · مفاهیم: OLED، آرایه، نمودار

قدم‌های این درس

  1. چرا نمودار؟
  2. قدم ۱ — OLED و پتانسیومتر
  3. قدم ۲ — کد نمودار
  4. اشتباه رایج: نمودار وارونه یا بیرون از صفحه
  5. چالش: خط هشدار

نمونه‌ای از کد این درس

// Live graph: the knob on A0 drawn as a line that scrolls across the OLED.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(128, 64, &Wire, -1);

int points[128];          // one y value for every column of pixels
int count = 0;            // how many points we have so far

void setup() {
  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.setTextColor(SSD1306_WHITE);
}

void loop() {
  int value = analogRead(A0);              // 0..1023
  int y = map(value, 0, 1023, 63, 12);     // big value = high on screen

  if (count < 128) {
    points[count] = y;                     // still filling the screen
    count++;
  } else {
    for (int i = 0; i < 127; i++) {        // shift everything one step left
      points[i] = points[i + 1];
    }
    points[127] = y;                       // newest point on the right
  }

  display.clearDisplay();
  display.setTextSize(1);
  display.setCursor(0, 0);
  display.print("A0 = ");
  display.print(value);
  for (int x = 1; x < count; x++) {        // join each point to the one before
    display.drawLine(x - 1, points[x - 1], x, points[x], SSD1306_WHITE);
  }
  display.display();
  delay(50);
}

چرا این درس؟

دوره‌ی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیه‌ساز انجام می‌دهی — مدار واقعی می‌چینی، کد واقعی اجرا می‌کنی و نتیجه را همان لحظه می‌بینی. این درس روی درس‌های قبلی ساخته شده، پس اگر تازه شروع کرده‌ای از درس ۱ بیا!

این درس را رایگان در شبیه‌ساز شروع کن 🎓

درس‌های دیگر دوره

🖥️

درس 71: نمایشگر OLED: متن و شکل

🌡️

درس 73: دما و رطوبت با DHT