📈 ماموریت ۷۷: نمودار زنده روی OLED
پتانسیومتر را به A0 بده. مقدارش را با map به ارتفاع صفحه ببر و با drawLine نقطهها را به هم وصل کن.
سطح: متوسط ⭐⭐ · مود: آردوینو — با کد
هدفها
- ☐ یه آردوینو روی صحنه باشه
- ☐ یه نمایشگر OLED
- ☐ یه پتانسیومتر
- ☐ خط یا نقطه کشیده بشه
- ☐ مقدار به ارتفاع صفحه برده بشه (map)
- ☐ شبیهسازی در حال اجرا
قطعههای لازم
- Arduino Uno
- OLED 0.96" (SSD1306)
- پتانسیومتر
💡 گیر کردی؟ داخل شبیهساز راهنما را ببین، و اگر باز هم نشد دکمهی «برام حلش کن» مدار را برایت میچیند تا ببینی چطور کار میکند.
جواب کامل
اول خودت امتحان کن! بعد جواب را ببین 👀
سیمکشی
- Arduino Uno (VCC5) ⟷ OLED 0.96" (SSD1306) (VCC)
- OLED 0.96" (SSD1306) (GND) ⟷ Arduino Uno (GND1)
- Arduino Uno (A4) ⟷ OLED 0.96" (SSD1306) (SDA)
- Arduino Uno (A5) ⟷ OLED 0.96" (SSD1306) (SCL)
- Arduino Uno (VCC5) ⟷ پتانسیومتر (VCC)
- Arduino Uno (A0) ⟷ پتانسیومتر (WIPER)
- پتانسیومتر (GND) ⟷ Arduino Uno (GND1)
کد
// OLED live graph: the knob drawn as a moving line
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(128, 64, &Wire, -1);
int x = 0;
int lastY = 63;
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.display();
}
void loop() {
int y = map(analogRead(A0), 0, 1023, 63, 10); // high value = near the top
if (x == 0) {
display.clearDisplay(); // new screen: start again
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.print("Knob graph");
}
display.drawLine(x - 1, lastY, x, y, SSD1306_WHITE);
display.display();
lastY = y;
x++;
if (x >= 128) x = 0;
delay(50);
}
ماموریتهای مشابه
🖥️
ماموریت ۷۶: سلام روی نمایشگر OLED
🌡️
ماموریت ۷۸: ایستگاه هوا: دما و رطوبت
🕰️
ماموریت ۷۹: ساعت واقعی با DS3231
😊
ماموریت ۸۱: شکلک روی ماتریس ۸×۸
📚 برای یاد گرفتن پایهها سری به دورهی آموزش آردوینو بزن · 🎯 همهی ماموریتها