- ابزارآلات و آهنربا
-
ابزارآلات
- ابزار اندازه گیری (مولتیمتر، کولیس و . . .)
- ابزار سوراخکاری (مته، سه نظام، چهار نظام، پنج نظام و . . .)
- ابزار و تجهیزات کار (پیچ گوشتی، انبردست، سیمچین، پنس و . . .)
- برد بورد، فیبر خام و سوراخدار (فیبر مدار چاپی و PCB)
- پیچ و اسپیسر (پیچ و مهره رباتیک و اسپیسر پلاستیکی و فلزی)
- سیم و کابل (سیم افشان، فلت، باندی، کابل شارژ، پرینتر، و . . .)
- لحیمکاری (هویه، نوک هویه، پایه هویه، سیم لحیم، روغن لحیم و . . . )
- منبع تغذیه، باتری و جاباتری (باتری قلمی، نیم قلمی، کتابی و . . . )
-
ابزارآلات
- برد هوشمند
- پرینتر سه بعدی
- رباتیک و پروازی
- ماژول
- قطعات الکترونیک
- کیت الکترونیکی و انواع جعبه
- موتور
- اصناف مختلف
آموزش راهاندازی ماژول نمایشگر OLED با آردوینو
سلام به همه عاشقان علم و دانش! امروز با شما هستیم تا با یک پروژه عالی، دانش و تجربهتان را در زمینه الکترونیک و آردوینو بالا ببریم. پروژهای که امروز برای شما آماده کردهایم، راه اندازی ماژول نمایشگر OLED با آردوینو است. ماژول نمایشگر OLED یا همان LCD کاراکتری، نمایشگری است که با پروتکل I2C کار میکند.
اینک این مقاله نحوه استفاده از نمایشگر 0.96 اینچ OLED مدل SSD1306 با سریال I2C به وسیله آردوینو را نشان میدهد. ما در ادامه، برخی از ویژگیهای صفحه نمایش OLED، نحوه اتصال آن به صفحه آردوینو و نحوه نوشتن متن، رسم اشکال و نمایش تصاویر bitmap را به شما نشان خواهیم داد. در انتها نیز یک نمونه پروژه خواهیم ساخت که قرائت دما و رطوبت را نشان میدهد.
فهرست مطالب
مشخصات فنی ماژول نمایشگر OLED
سایز: 0.96 اینچ
رزولوشن: 128 × 64 پیکسل
نوع: صفحه نمایش تک رنگ
مدل: OSD SSD1306
پروتکل ارتباطی: I2C
نمایشگر OLED نیازی به نور پسزمینه ندارد به همین دلیل در فضاهای تاریک، تضاد بسیار خوبی ایجاد میشود. به علاوه، پیکسلهای آن فقط هنگام روشن بودن انرژی مصرف میکنند بنابراین صفحه نمایش OLED در مقایسه با سایر نمایشگرها، مصرف برق کمتری دارد.
مدلی که ما در اینجا استفاده کردهایم، فقط چهار پایه دارد و با استفاده از پروتکل ارتباطی I2C با آردوینو ارتباط برقرار میکند. در این بین، مدلهایی هستند که دارای یک پین RESET اضافی میباشند. نمایشگرهای OLED دیگری نیز در بازار یافت خواهند شد که با استفاده از پروتکل ارتباطی، SPI ارتباط برقرار میکنند.
مرحله اول؛ تامین قطعات مورد نیاز برای راه اندازی ماژول نمایشگر OLED با آردوینو
مرحله دوم؛ بستن مدار برای راه اندازی ماژول نمایشگر OLED با آردوینو
اولین گام در مسیر بستن مدار، ایجاد اتصالات مدار و سیمکشی میباشد. مدار را مانند شکل زیر ببندید. البته به جای آردوینو UNO میتوانید از سایر بردهای آردوینو هم استفاده کنید.
- GND به GND (سیم سیاه)
- VCC به 5v (سیم قرمز)
- SCL به A5 در بردهای UNO و NANO (سیم سفید)
- SCL به 21 در بردهای MEGA و Leonardo (سیم سفید)
- SDA به A4 در بردهای UNO و NANO (سیم زرد)
- SDA به 20 در بردهای MEGA و Leonardo (سیم زرد)
اضافه کردن کتابخانه ماژول نمایشگر OLED برای راه اندازی ماژول نمایشگر OLED با آردوینو
برای کنترل نمایشگر OLED، به کتابخانههای adafruit_SSD1306.h و adafruit_GFX.h نیاز خواهید داشت. برای نصب کتابخانههای نامبرده، 4 دستورالعمل زیر را به ترتیب انجام دهید:
- Arduino IDE خود را باز کرده و به Sketch> Include Library> Manage Libraries بروید. مدیر کتابخانه باید باز شود. منظور از مدیر کتابخانه همان LIBRARY MANAGER است.
- SSD1306 را در کادر جستجو تایپ و کتابخانه SSD1306 را از Adafruit نصب کنید.
3. حالا بعد از نصب adafruit_SSD1306.h، نوبت نصب کتابخانه adafruit_GFX.h رسیده است. در ادامه، در جعبه جستجو واژه GFX را تایپ و کتابخانه را نصب کنید.
4. پس از نصب کتابخانهها، Arduino IDE خود را ریست کنید.
نکات مهم کدنویسی کتابخانهها پیش از راهاندازی ماژول نمایشگر OLED با آردوینو
در اینجا برخی کد توابع آورده شده که به شما کمک میکنند تا نمایشگر OLED خود را برای نوشتن متن یا نشان دادن رسم گرافیک ساده پیکربندی کنید.
display.clearDisplay() // همه پیکسل ها را خاموش میکند
display.drawPixel(x,y, color) // بک پیکسل X و Y را در مختصات رسم میکند
display.setTextSize(n) // اندازه فونت را میتوانیم مشخص کنیم ( 1 تا 8 )
display.setCursor(x,y) // x و y شروع نوشتن متن در مختصات
display.print(“message”) // نوشتن متن دلخواه
display.display() // این تابع را برای نمایش تغییرات بر روی نمایشگر فراخوانی میکنیم
تست ماژول نمایشگر OLED
پس از سیمکشی نمایشگر OLED به آردوینو و نصب همه کتابخانههای مورد نیاز، میتوانید از یک نمونه کتابخانه استفاده کنید تا ببینید آیا همه چیز درست است یا خیر.
در Arduino IDE خود، به مسیر File> Examples> Adafruit SSD1306 بروید و نمونه کد نمایشگر مورد استفاده را انتخاب کنید.
مرحله سوم؛ کد نویسی پروژه برای راه اندازی ماژول نمایشگر OLED با آردوینو
کدهایی که در ابتدا بایستی لود شوند.
/********* این یک مثال برای راهاندازی نمایشگرهای بر پایه اولد میباشد
*********/ #include #include #include #include #define SCREEN_WIDTH 128 // عرض نمایشگر اولد به پیکسل #define SCREEN_HEIGHT 64 // طول نمایشگر اولد به پیکسل #define OLED_RESET -1 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); #define NUMFLAKES 10 #define LOGO_HEIGHT 16 #define LOGO_WIDTH 16 static const unsigned char PROGMEM logo_bmp[] = { B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B11111111, B00110011, B10011111, B00011111, B11111100, B00001101, B01110000, B00011011, B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000 }; void setup() { Serial.begin(115200); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); for(;;); // Don't proceed, loop forever } display.display(); delay(2000); // تاخیر به مدت 2 ثانیه display.clearDisplay(); display.drawPixel(10, 10, WHITE); display.display(); delay(2000); // display.display() این تابع که کارش نشان دادن پیکسل شما روی نمایشگر است را لازم نیست بعد از هر بار دادن مختصات پیکسل فراخوانی کنید بلکه در انتهای کار، برای جلوگیری از تکرار میتوان با یک بار فراخوانی همه پیکسلها را نمایش داد testdrawline(); // ایجاد خط testdrawrect(); // ایجاد چهارگوشهای گوشه تیز تو خالی testfillrect(); // ایجاد چهارگوشهای گوشه تیز تو پر testdrawcircle(); // ایجاد دایرههای تو خالی testfillcircle(); // ایجاد دایرههای تو پر testdrawroundrect(); // ایجاد چهارگوشهای گوشه گرد تو خالی testfillroundrect(); // ایجاد چهارگوشهای گوشه گرد تو پر testdrawtriangle(); // ایجاد مثلثهای تو خالی testfilltriangle(); // ایجاد مثلثهای تو پر testdrawchar(); // ایجاد یک کاراکتر با فونت ثبت شده testdrawstyles(); // ایجاد یک کاراکتر سبکسازی شده testscrolltext(); // یک متن چرخان در صفحه ایجاد کنید testdrawbitmap(); // یک عکس به فرمت بیت مپ میتوانید رسم کنید // !!! معکوس کردن صفحه نمایشگر همراه با تاخیر که واقعا کاربردی است display.invertDisplay(true); delay(1000); display.invertDisplay(false); delay(1000); testanimate(logo_bmp, LOGO_WIDTH, LOGO_HEIGHT); // متحرک نمودن تصاویر بیت مپ }
چنانچه نمایشگر OLED شما پین ریست ندارد، بایستی کد زیر را حذف کنید.
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
کد را در صفحه Arduino خود بارگذاری کنید. به خاطر داشته باشید که از منوی Tools، پورت COM مناسب را برگزینید.
عیبیابی پروژه پس از راه اندازی ماژول نمایشگر OLED با آردوینو
چنانچه صفحه LCD کاراکتری شما چیزی را نشان نمیدهد،
- اتصالات فیزیکی مانند سیمها و پینها را بررسی کنید و از اتصال آنها مطمئن شوید.
- کد زیر را لود کرده و مانیتور سریال IDE را دوباره بررسی کنید.
/*********
Complete project by behnamrobotic.com
*********/
#include
void setup() {
Wire.begin();
Serial.begin(115200);
Serial.println("nI2C Scanner");
}
void loop() {
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ ) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
if (address<16) {
Serial.print("0");
}
Serial.println(address,HEX);
nDevices++;
}
else if (error==4) {
Serial.print("Unknow error at address 0x");
if (address<16) {
Serial.print("0");
}
Serial.println(address,HEX);
}
}
if (nDevices == 0) {
Serial.println("No I2C devices foundn");
}
else {
Serial.println("donen");
}
delay(5000);
}
و در آخر آدرس I2C که سریال مانیتور به شما میدهد، بایستی در کد اصلی جایگزین آدرس قبلی شود.
کد زیر جایگاه آدرس I2C را در کد اصلی نشان میدهد.
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
نوشتن متن با ماژول نمایشگر OLED
کتابخانه Adafruit برای صفحه نمایش OLED دارای چندین توابع برای نوشتن متن است . کلا این کتابخانه از این نظر خیلی کامل میباشد. در این بخش نحوه نوشتن و پیمایش متن را با استفاده از توابع کتابخانه یاد خواهید گرفت .
نوشتن متن "!Hello, world"
شما با لود کردن کد زیر میتوانید هر نوشتهای که از کد پیج 437 پشتیبانی کند را به نمایش دربیاورید!!!
#include
#include
#include
#define SCREEN_WIDTH 128 // عرض نمایشگر به پیکسل
#define SCREEN_HEIGHT 64 // طول نمایشگر به پیکسل
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(115200);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 10);
// Display static text
display.println("Hello, world!");
display.display();
}
void loop() {
}
بعد ار لود کردن کد، تصویری مانند تصویر زیر، مشاهده خواهید کرد.