آرڈوینو کوڈ اور ویڈیو SSD1306 OLED 128 x 32 ڈسپلے کے لیے I2C کے ساتھ
اس ٹیوٹوریل میں، ہم دریافت کریں گے کہ Arduino پر I2C کمیونیکیشن کے ساتھ SSD1306 OLED 128 x 32 ڈسپلے کو کیسے استعمال کیا جائے۔ مقصد اسکرین پر مختلف عناصر جیسے متن، مستطیل، اور وولٹیج اور درجہ حرارت جیسی متحرک قدریں دکھانا ہے۔ یہ سیٹ اپ ان پروجیکٹس کے لیے مثالی ہے جنہیں کمپیکٹ اور موثر ڈسپلے حل کی ضرورت ہوتی ہے۔

ہم ضروری ہارڈویئر اجزاء، وائرنگ ہدایات، اور Arduino کوڈ کے ذریعے آگے بڑھیں گے تاکہ سب کچھ چل سکے۔ بصری رہنمائی کے لیے، اس ٹیوٹوریل کے ساتھ موجود ویڈیو ضرور دیکھیں (ویڈیو میں 00:00 پر)۔
ہارڈویئر کی وضاحت
اس پروجیکٹ کے اہم اجزاء میں SSD1306 OLED ڈسپلے شامل ہے، جو ایک کم بجلی استعمال کرنے والا ڈسپلے ہے جو آسان انٹرفیسنگ کے لیے I2C کمیونیکیشن استعمال کرتا ہے۔ ڈسپلے میں 128 x 32 پکسلز کی ریزولوشن ہے، جو متن اور سادہ گرافکس دکھانے کے لیے موزوں ہے۔
ڈسپلے کو کنٹرول کرنے کے لیے، ہم Arduino بورڈ استعمال کریں گے، جو I2C کے ذریعے کمانڈز اور ڈیٹا بھیجے گا۔ Arduino معلومات دکھانے کی منطق کو Adafruit_GFX اور Adafruit_SSD1306 جیسی لائبریریوں کا استعمال کرکے سنبھالتا ہے۔ یہ لائبریریاں کمیونیکیشن کے عمل کو آسان بناتی ہیں اور شکلیں اور متن آسانی سے کھینچنے کی اجازت دیتی ہیں۔
ڈیٹاشیٹ کی تفصیلات
| مینوفیکچرر | Adafruit |
|---|---|
| پارٹ نمبر | SSD1306 |
| لاجک/آئی او وولٹیج | 3.3 - 5 V |
| سپلائی وولٹیج | 3.3 - 5 V |
| کرنٹ کی کھپت | ~20 mA (عام) |
| ڈسپلے ریزولوشن | 128 x 32 پکسلز |
| انٹرفیس | I2C |
| طول و عرض | 128 x 32 ملی میٹر |
| نوٹس / مختلف شکلیں | مختلف سائز اور انٹرفیس میں دستیاب |
- I2C ایڈریس چیک کریں، عام طور پر OLEDs کے لیے 0x3C ہوتا ہے۔
- نقصان سے بچنے کے لیے مناسب بجلی کی فراہمی یقینی بنائیں۔
- اگر ضرورت ہو تو SDA اور SCL لائنوں کے لیے پل-اپ ریزسٹر استعمال کریں۔
- I2C سگنل میں شور کم کرنے کے لیے وائرنگ مختصر رکھیں۔
- اگر ایک سے زیادہ ماڈیولز کو بجلی دی جا رہی ہو تو گرمی کی تقسیم پر غور کریں۔
وائرنگ ہدایات

SSD1306 OLED ڈسپلے کو وائر کرنے کے لیے، پہلے ڈسپلے کے VCC پن کو Arduino کے 5V آؤٹ پٹ سے جوڑیں۔ اگلا، GND پن کو Arduino کے کسی ایک گراؤنڈ پن سے جوڑیں۔ I2C کمیونیکیشن کے لیے، ڈسپلے کے SDA پن کو Arduino کے SDA پن سے جوڑیں، جو UNO کے لیے A4 ہے۔ پھر، ڈسپلے کے SCL پن کو Arduino کے SCL پن سے جوڑیں، جو UNO کے لیے A5 ہے۔ اگر آپ ایک مختلف Arduino ماڈل استعمال کر رہے ہیں، تو SDA اور SCL کے لیے مخصوص پن میپنگ دیکھیں۔
اضافی اجزاء کے لیے، اگر آپ کے پاس ایک LED ہے جسے آپ کنٹرول کرنا چاہتے ہیں، تو اسے 330-اوہم ریزسٹر کے ذریعے پن 9 سے جوڑیں۔ یقینی بنائیں کہ ریزسٹر کا دوسرا سرا LED کے اینوڈ سے جڑا ہوا ہے، جبکہ کیتھوڈ گراؤنڈ پر جانا چاہیے۔ یہ سیٹ اپ LED کو روشن کرنے کی اجازت دے گا جب پن 9 فعال ہوگا۔
کوڈ مثالیں اور واک تھرو
Arduino کوڈ میں، ہم OLED ڈسپلے کے لیے ضروری لائبریریوں کو شامل کرکے شروع کرتے ہیں۔ ایک اہم شناخت کنندہ display ہے، جو Adafruit_SSD1306 کلاس کا ایک انسٹینس ہے۔ ڈسپلے کو setup() فنکشن میں ابتدائی کیا جاتا ہے، جہاں ہم ڈرائنگ کی تیاری کے لیے ڈسپلے کو صاف بھی کرتے ہیں۔

void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
delay(2000);
display.clearDisplay();
}
loop() فنکشن میں، ہم وولٹیج کی قدر رکھنے کے لیے ایک سٹرنگ متغیر vString کی وضاحت کرتے ہیں، جو متحرک طور پر اپڈیٹ ہوتی ہے۔ robojaxText() فنکشن اسکرین پر مخصوص کوآرڈینیٹس پر متن دکھانے کے لیے استعمال ہوتا ہے۔
void loop() {
String vString = String(count, 3);
display.clearDisplay();
robojaxText("Voltage: ", 4, 3, 1, false);
robojaxText(vString, 72, 3, 1, false);
display.display();
count += 0.173;
delay(2000);
}
robojaxText() فنکشن متن کی پوزیشننگ اور ڈسپلے کے لیے اہم ہے۔ یہ متن کی سٹرنگ، x اور y کوآرڈینیٹس، متن کا سائز، اور ایک بولین کے لیے پیرامیٹرز لیتا ہے تاکہ یہ طے کیا جا سکے کہ ڈسپلے کو فوری طور پر اپڈیٹ کیا جائے۔
void robojaxText(String text, int x, int y, int size, boolean d) {
display.setTextSize(size);
display.setTextColor(WHITE);
display.setCursor(x, y);
display.println(text);
if(d) {
display.display();
}
}
یہ فنکشن متن پرنٹ کرنے سے پہلے متن کا سائز، رنگ، اور کرسر کی پوزیشن سیٹ کرتا ہے۔ کوڈ کے مکمل واک تھرو کے لیے ویڈیو ضرور دیکھیں (ویڈیو میں 10:00 پر)۔
ڈیمونسٹریشن / کیا توقع کریں
جب کوڈ Arduino پر اپ لوڈ ہوتا ہے، تو OLED ڈسپلے کو وولٹیج، درجہ حرارت، اور صلاحیت کی قدریں ہر دو سیکنڈ میں متحرک طور پر اپڈیٹ ہوتی دکھانی چاہئیں۔ آپ کو متن کے عناصر کے ارد گرد ایک مستطیل بھی کھینچا ہوا نظر آنا چاہیے۔ اگر ڈسپلے کچھ نہیں دکھاتا ہے، تو یقینی بنائیں کہ کنکشن درست ہیں اور I2C ایڈریس کوڈ میں مخصوص کردہ سے مماثل ہے۔
ویڈیو ٹائم اسٹیمپس
- 00:00 - پروجیکٹ کا تعارف
- 02:00 - وائرنگ ہدایات
- 05:00 - کوڈ واک تھرو
- 10:00 - آؤٹ پٹ کا ڈیمونسٹریشن
/*********************************************************************
This is an example for our monochrome OLEDs based on SSD1306 drivers.
This example is for a 128x32 size display using I2C.
If you get the error: Adafruit_GFX.h not found, download the Adafruit-GFX Library
https://github.com/adafruit/Adafruit-GFX-Library
Purchase this OLED module from Amazon: https://amzn.to/36zFvTb
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, check license.txt for more information.
All text above, and the splash screen must be included in any redistribution.
* Watch the video for this code to learn it fully.
* Watch the video here: https://youtu.be/RjyulqVsz2o
* This code is offered "as is" without any warranty.
* Updated by Ahmad Shamshiri for Robojax.com video tutorial
* on March 18, 2018 at 10:21 in Ajax, Ontario, Canada.
* Please view other Robojax codes and videos at http://robojax.com/learn/arduino
* If you are sharing this code, you must keep this copyright note.
*
*********************************************************************/
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2
double count=0;
/*
* PIN connection:
* Pin connection see: https://www.arduino.cc/en/Reference/Wire
* for UNO: SDA to A4, SCL to A5
* for Mega2560: SDA to 20, SCL to 21
* for Leonardo: SDA to 2, SCL to 3
* for Due: SDA to 20, SCL to 21
* VCC to 5V
* GND to GND :-)
*/
// this is the Width and Height of Display which is 128 x 32
#define LOGO16_GLCD_HEIGHT 32
#define LOGO16_GLCD_WIDTH 128
#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
void setup() {
Serial.begin(9600);
// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32)
display.display();
delay(2000);
// Clear the buffer.
display.clearDisplay();
}
void loop() {
String vString = String(count, 3);// using a float and the
display.clearDisplay();
robojaxText("Voltage: ", 4, 3, 1, false);
robojaxText(vString, 72, 3, 1, false);
robojaxText("V", 110, 3, 1, false);
robojaxText("Temperature: 32C", 4, 11, 1, false);
robojaxText("Capacity: 92.86L", 4, 21, 1, false);
//display.drawLine(1, 37, 100, 37, WHITE);
display.drawRect(1, 1, 126,31, WHITE);
//display.drawCircle(63,31, 31, WHITE);
//display.startscrollright(0x00, 0x0F);
display.display();
count +=0.173;
delay(2000);
}
/*
* robojaxText(String text, int x, int y,int size, boolean d)
* text is the text string to be printed
* x is the integer x position of text
* y is the integer y position of text
* size is the text size, 1, 2, 3 etc
* d is either true or false. If true, the display is updated.
*/
void robojaxText(String text, int x, int y,int size, boolean d) {
display.setTextSize(size);
display.setTextColor(WHITE);
display.setCursor(x,y);
display.println(text);
if(d){
display.display();
}
//delay(100);
}
آپ کو جن چیزوں کی ضرورت ہو سکتی ہے
-
ایمیزونPurchase OLED 128x32 from Amazonamzn.to
-
علی ایکسپریسPurchase SSD1306 OLED 128x32 from AliExpresss.click.aliexpress.com
وسائل اور حوالہ جات
-
باہرونیAdafruit-GFX library (from GitHub)github.com
-
باہرونیSSD1306 library (from GitHub)github.com
فائلیں📁
ڈیٹا شیٹ (پی ڈی ایف)
-
SSD1306 display datasheetSSD1306 is a single-chip CMOS OLED/PLED driver with controller for organic / polymer light emitting diode dot-matrix graphic display system. It consists of 128 segments and 64commons. This IC is designed for Common Cathode type OLED panel. The SSD1306 embeds with contrast control, display RAM and oscillator, which reduces the number of external components and power consumption. It has 256-step brightness control. Data/Commands are sent from general MCU through the hardware selectable 6800/8000 series compatible Parallel Interface, I2C interface or Serial Peripheral Interface. It is suitable for many compact portable applications, such as mobile phone sub-display, MP3 player and calculator, etc.
SSD1306_display_datasheet.pdf1.79 MB
فریٹزنگ فائل
-
SSD1306 128x32 OLED WiringFritzing wiring diagram for an SSD1306 128x32 OLED display, showing connections to a microcontroller (likely Arduino). Useful for breadboard prototyping and verifying I2C or SPI wiring.
SSD1306_128x32_wiring.fzz
Wiring diagram
-
SSD1306 128x32 OLED WiringFritzing wiring diagram for an SSD1306 128x32 OLED display, showing connections to a microcontroller (likely Arduino). Useful for breadboard prototyping and verifying I2C or SPI wiring.
SSD1306_128x32_wiring.fzz