- ابزارآلات و آهنربا
-
ابزارآلات
- ابزار اندازه گیری (مولتیمتر، کولیس و . . .)
- ابزار سوراخکاری (مته، سه نظام، چهار نظام، پنج نظام و . . .)
- ابزار و تجهیزات کار (پیچ گوشتی، انبردست، سیمچین، پنس و . . .)
- برد بورد، فیبر خام و سوراخدار (فیبر مدار چاپی و PCB)
- پیچ و اسپیسر (پیچ و مهره رباتیک و اسپیسر پلاستیکی و فلزی)
- سیم و کابل (سیم افشان، فلت، باندی، کابل شارژ، پرینتر، و . . .)
- لحیمکاری (هویه، نوک هویه، پایه هویه، سیم لحیم، روغن لحیم و . . . )
- منبع تغذیه، باتری و جاباتری (باتری قلمی، نیم قلمی، کتابی و . . . )
-
ابزارآلات
- برد هوشمند
- پرینتر سه بعدی
- رباتیک و پروازی
- ماژول
- قطعات الکترونیک
- کیت الکترونیکی و انواع جعبه
- موتور
- اصناف مختلف
آموزش راه اندازی نمایشگر Nokia 5110 با آردوینو
به دوران پیش از آیفونها فکر کنید که در آن زمان فقط میتوانستیم صفحه نمایش LCD را لمس و آن را تمیز کنیم. در آن موقع، گوشیهای نوکیا 3310 و نوکیا 5110 از این نمایشگرها بهره میبردند. حالا و پس از پیشرفت تکنولوژی، این صفحه نمایشها وارد پروژههای دانشجویی مانند پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو شدهاند. این LCDها خیلی سریع مورد استقبال دانشجویان قرار گرفتند زیرا هم کوچک و ارزان هستند، هم کاربری آسانی دارند و هم انرژی کمی مصرف میکنند و میتوانند متنهای دلخواه ما را نشان دهند.
فهرست مطالب
لوازم مورد نیاز برای پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
نگاهی به سختافزارهای موجود در پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
درایور LCD PCD8544
در دل این ماژول، یک کنترلر درایور قدرتمند و کم مصرف از نوع LCD CMOS وجود دارد که تنها به یک چیپ مجهز است.
PCD8544 از پروتکل ارتباطی سریال شبیه SPI بهره میبرد تا بتواند با میکروکنترلرها ارتباط برقرار نماید و به شکلی طراحی شده تا یک نمایشگر 48×84 پیکسلی راهاندازی کند.
LCD دارای چیپ و ارائهدهنده ولتاژ معکوس که در درایور نامبرده وجود دارند، آن را برای استفاده در پروژههای حساس به انرژی ایدهآل میکنند. این صفحه نمایش معمولاً 6 تا 7 میلیآمپر جریان مصرف خواهد کرد.
آنطور که در دیتاشیت آمده، چیپ این درایور با ولتاژ 2.7 تا 3.3 ولت سازگار است و دارای سطح ارتباطی 3 ولتی میباشد. بر این اساس، به منظور وصل کردن آن به یک میکروکنترلر 5 ولتی منطقی مانند آردوینو، میبایست برخی از فرآیندهای خاص صورت پذیرند.
بکلایت LCD
این LCD یک بکلایت دارد که در چهار رنگ قرمز، سبز، آبی و سفید در دسترس قرار گرفته است.
بکلایت از چهار LED جای گرفته در دورتادور لبههای نمایشگر تشکیل شده است. برای تغییر بکلایت، LCD را با فشار دادن گیره های فلزی موجود در پشت جدا کنید. با این کار متوجه چهار LED لحیم شده در لبههای نمایشگر خواهید شد. شما میتوانید به جای این LEDها، LEDهای دلخواه خود را قرار دهید.
نقشه حافظه نمایشگر LCD نوکیا 5110
درایور PCD8544 یک رم 504 بایتی Graphic Display Data RAM یا GDDRAM دارد که هر آنچه که باید در نمایشگر پخش شود را ذخیره میکند. این قسمتِ حافظهای به 6 بخش (از 0 تا 5) تقسیم میشود که هر کدام از آنها 84 ستون یا قسمت (از 0 تا 83) دارند. هر کدام از ستونها هم میتوانند 8 بیت داده (از 0 تا 7) را ذخیره کنند. این عملیات نشاندهنده وجود فرمول زیر است:
6 ذخیرهکننده × 84 قسمت × 8 بیت داده = 4032 بیت = 504 بایت
تمامی قسمتهای حافظهای این نمایشگر که شامل ذخیرهکننده، قسمتها و دادهها میشوند، در تصویر زیر قابل مشاهده هستند.
هر بیت نشاندهنده یک پیکسل OLED در نمایشگری است که میتواند طبق فرمولهای برنامهنویسی، خاموش و روشن شود.
مشخصات فنی نمایشگر Nokia 5110
تکنولوژی صفحه نمایش |
LCD دات ماتریکس |
پروتکل ارتباطی MCU |
SPI |
سایز صفحه نمایش |
1.5 اینچ |
رزولوشن |
48×84 پیکسل |
ولتاژ کاری |
2.7 تا 3.3 ولت |
جریان کاری |
حداکثر 50 میلیآمپر |
زاویه دید |
180 درجه |
آشنایی با پینها پیش از شروع پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
پینهای نمایشگر LCD نوکیا 5110 مانند تصویر زیر است:
- RST: برای ریست کردن صفحه نمایش. چنانچه آن را به وضعیت LOW درآورید، نمایشگر ریست میشود. در صورتی که به پین ریست آردوینو وصل گردد، به طور خودکار ریست خواهد شد.
- CE (Chip Enabled): برای انتخاب یکی از چندین ماژول متصل که پروتکل ارتباطی SPI دارند.
- D/C (Data/Command): برای جداسازی دستورات از دادهها که توسط کتابخانه استفاده میشود.
- DIN: پین سریال دیتا.
- CLK: پین سریال کلاک.
- VCC: برای تأمین انرژی نمایشگر که باید 3.3 ولت باشد.
- BL (Backlight): برای کنترل بکلایت نمایشگر. با وصل کردن این پین به هر پین مخصوص PWM در آردوینو و با استفاده از یک پتانسیومتر، میتوان مقدار روشنایی را کم یا زیاد کرد.
- GND: اتصال به زمین
سیمکشی مدار پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
حال بیایید نمایشگر LCD را به آردوینو وصل کنیم.
اتصالات و سیمکشی مدار پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو بسیار آسان است. پینهای سریال کلاک (CLK)، سریال داده (DIN)، داده یا دستور (D/C)، چیپ فعال (CE) و ریست (RST) به پینهای 7 تا 3 آردوینو وصل میشوند.
متأسفانه خودِ نمایشگر LCD حداکثر ولتاژ 3.6 ولت دارد بنابراین نمیتوانیم آن را مستقیماً به آردوینو بزنیم پس باید از قابلیت شیفت سطح استفاده کنیم.
یکی از آسانترین روشهای انجام این کار، اضافه کردن مقاومت در امتداد پینهای دادهها است. فقط کافی است تا یک مقاومت 10 کیلو اهم را همسو با پینهای CLK، DIN، D/C و RST و یک مقاومت 1000 اهم را همسو با پین CE بگذارید.
در نهایت، پین بکلایت (BL) نیز از طریق یک مقاومت محدودکننده 330 اهم، به پین 3.3 ولت وصل میشود. چنانچه میخواهید میزان روشنایی نمایشگر LCD را تنظیم کنید، یک پتانسیومتر بیفزایید و یا این پین را به هر پین PWM آردوینو بزنید.
مداری که در پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو طراحی میکنید، باید چیزی شبیه تصویر زیر باشد.
نصب کتابخانه پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
کنترلر نمایشگر PCD8544 درایورهای انعطافپذیر ولی پیچیدهای دارد که برای دستور دادن به آن به دانش تخصصی نیاز خواهد بود. با این حال، خوشبختانه با کتابخانه Adafruit PCD8544 Nokia 5110 LCD پیچیدگیهای نامبرده به چشم نخواهند آمد و به ما اجازه خواهند داد با چند دستور ساده، صفحه نمایش را کنترل کنیم.
برای نصب کتابخانه پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو، به آدرس Sketch> Include Library> Manage Libraries … بروید و منتظر بمانید تا لیست کتابخانههای دانلود شده بروز شود.
با نوشتن کلمه nokia جستجوهای خود را فیلتر کنید. از میان نتایج، به دنبال Adafruit PCD8544 Nokia 5110 LCD بگردید. روی آن کلیک و گزینه Install را انتخاب کنید.
این یک کتابخانه مخصوص سختافزار است که توابع سطح پایین را کنترل میکند. برای نمایش موارد گرافیکی نظیر نقاط، خطوط، دایرهها و مستطیلها، باید کتابخانه Adafruit GFX نیز نصب شود تا دو کتابخانه با همدیگر جفت گردند.
نکته دیگر اینکه، کتابخانه Adafruit PCD8544 از کتابخانه Adafruit Bus IO نیز بهره میبرد بنابراین آن کتابخانه را هم نصب کنید.
مرحله اول کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو؛ نمایش متن
حالا به قسمت جذاب ماجرا میرسیم! کدهایی که در ادامه میدهیم، فعالیتهای زیر را انجام خواهند داد:
- نمایش متن ساده
- نمایش متن وارونه
- نمایش اعداد
- نمایش اعداد با پایه
- نمایش نمادهای مختلف
- چرخاندن متن
این چند خط کد به شما میفهمانند که چگونه نمایشگر LCD نوکیا 5110 کار میکند و میتواند در پروژههای آزمایشی مورد استفاده واقع شود. از این کد چند خط کد بهره ببرید تا در ادامه آن را با جزئیات کامل شرح دهیم.
#include
#include
#include
// Declare LCD object for software SPI
// Adafruit_PCD8544(CLK,DIN,D/C,CE,RST);
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
int rotatetext = 1;
void setup() {
Serial.begin(9600);
//Initialize Display
display.begin();
// you can change the contrast around to adapt the display for the best viewing!
display.setContrast(57);
// Clear the buffer.
display.clearDisplay();
// Display Text
display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor(0,0);
display.println("Hello world!");
display.display();
delay(2000);
display.clearDisplay();
// Display Inverted Text
display.setTextColor(WHITE, BLACK); // 'inverted' text
display.setCursor(0,0);
display.println("Hello world!");
display.display();
delay(2000);
display.clearDisplay();
// Scaling Font Size
display.setTextColor(BLACK);
display.setCursor(0,0);
display.setTextSize(2);
display.println("Hello!");
display.display();
delay(2000);
display.clearDisplay();
// Display Numbers
display.setTextSize(1);
display.setCursor(0,0);
display.println(123456789);
display.display();
delay(2000);
display.clearDisplay();
// Specifying Base For Numbers
display.setCursor(0,0);
display.print("0x"); display.print(0xFF, HEX);
display.print("(HEX) = ");
display.print(0xFF, DEC);
display.println("(DEC)");
display.display();
delay(2000);
display.clearDisplay();
// Display ASCII Characters
display.setCursor(0,0);
display.setTextSize(2);
display.write(3);
display.display();
delay(2000);
display.clearDisplay();
// Text Rotation
while(1)
{
display.clearDisplay();
display.setRotation(rotatetext); // rotate 90 degrees counter clockwise, can also use values of 2 and 3 to go further.
display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor(0,0);
display.println("Text Rotation");
display.display();
delay(1000);
display.clearDisplay();
rotatetext++;
}
}
void loop() {
}
گیف زیر خروجی کدهایی که ارائه دادیم میباشد.
توضیحات کدهای مرحله اول پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
کدهای داده شده با سه کتابخانه SPI.h، Adafruit_GFX.h و Adafruit_PCD8544.h آغاز میشوند.
#include
#include
#include
مرحله بعد، ایجاد یک هدف از کتابخانه Adafruit_PCD8544.h میباشد. ساختار این کتابخانه قابلیت تأیید پنج پین عددی آردوینو که به پینهای CLK، DIN، D/C، CE و RST نمایشگر وصل میشوند را داراست. به علاوه، متغیر rotatetext نیز وجود دارد که دلیل اهمیت آن را در ادامه توضیح میدهیم.
// Initialize LCD object for software SPI
// Adafruit_PCD8544(CLK,DIN,D/C,CE,RST);
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
int rotatetext = 1;
در قسمت Setup، هدف نمایشگر LCD را با تابع begin() شروع میکنیم. به علاوه، کنتراست صفحه نمایش را با استفاده از تابع setContrast(value) تنظیم خواهیم کرد و به جای value عددی بین 0 تا 100 را قرار خواهیم داد. معمولاً مقادیر 50 تا 60 نتیجه فوقالعادهای در اختیار ما قرار میدهند.
سپس، قبل از نمایش اولین متن مدنظر روی نمایشگر، بافر را پاک میکنیم.
//Initialize Display
display.begin();
// you can change the contrast around to adapt the display for the best viewing!
display.setContrast(57);
// Clear the buffer.
display.clearDisplay();
نمایش متن Hello World در مرحله اول کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
// Display Text
display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor(0,0);
display.println("Hello world!");
display.display();
delay(2000);
display.clearDisplay();
برای نمایش متن روی نمایشگر، ابتدا باید سایز فونت را مشخص کنیم. انجام این کار با استفاده از تابع setTextSize() و نوشتن یک عدد غیر منفی بزرگتر از 1 امکانپذیر خواهد بود.
اینک رنگ متن را با تابع setTextColor() تنظیم خواهیم کرد. برای رنگ تیره از BLACK و برای رنگ روشن از WHITE استفاده کنید.
پیش از نمایش متن، باید محل قرارگیری نشانگر را با تابع setCursur(X,Y) تعیین نماییم. میتوان پیکسلهای صفحه نمایش را با X به صورت افقی و با Y به صورت عمودی مشخص نمود. مقدار اولیه (0,0) سبب قرارگیری متن در گوشه بالا سمت چپ میشود. لازم به ذکر است که افزودن مقدار به X متن را به سمت راست و افزودن مقدار به Y متن را به سمت پایین هدایت میکند.
برای نمایش متن، میتوانیم از یکی از دو تابع print(“ “) یا printIn(“ “) بهره ببریم؛ یعنی دقیقاً شبیه روشی که از طریق آن روی سریال مانیتور متن پرینت میکنیم. به خاطر بسپارید که تابع printIn() نشانگر را به خط بعد منتقل میکند.
مرحله نهایی، استفاده از دستور display() برای انتقال گسترده بافر نمایشگر به مقدار حافظه داخلی کنترلر PCD8544 و نمایش محتواها روی LCD توسط کتابخانه میباشد.
نمایش متن وارونه در مرحله اول کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
// Display Inverted Text
display.setTextColor(WHITE, BLACK);
display.setCursor(0,0);
display.println("Hello world!");
display.display();
delay(2000);
display.clearDisplay();
برای نمایش متن وارونه، از تابع setTextColor (FontColor, BackgroundColor) استفاده میکنیم. اگر توجه کرده باشید، دیدهاید که پیشتر یک پارامتر به این تابع دادیم ولی حالا دو پارامتر به آن دادهایم.
در این حالت، نوشتن تابع به شکل setTextColor(Black, White) سبب میشود تا متن سفید روی پسزمینه مشکی نمایش داده شود.
تنظیم سایز فونت در مرحله اول کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
// Scaling Font Size
display.setTextColor(BLACK);
display.setCursor(0,0);
display.setTextSize(2);
display.println("Hello!");
display.display();
delay(2000);
display.clearDisplay();
پیشتر در این مطلب آموزشی از تابع setTextSize() برای تنظیم اندازه فونت استفاده کرده بودیم. شما میتوانید سایز متون نوشته شده را با وارد کردن یک عدد غیر منفی به این تابع، تغییر دهید.
کاراکترها با نسبت 5:7 نمایش داده میشوند. به عبارت دیگر، انتخاب عدد 1 به عنوان سایز فونت، هر کاراکتر را با ابعاد 7×5 پیکسل نمایش خواهد داد و تبدیل این عدد به 2، ابعاد هر پیکسل به 14×10 خواهد رسید و به همین ترتیب ادامه خواهد یافت.
نمایش اعداد در مرحله اول کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
// Display Numbers
display.setTextSize(1);
display.setCursor(0,0);
display.println(123456789);
display.display();
delay(2000);
display.clearDisplay();
توابع print() یا printIn() را میتوان برای نمایش اعداد در نمایشگر LCD به کار برد. از آن جایی که اضافه کردن توابع اینچنینی مقادیر 32 بیتی نامشخصی را اعمال خواهد کرد و سایز نمایشگر زیاد بزرگ نیست، شما تنها میتوانید اعدادی را نمایش دهید که بین 0 تا 4294967295 هستند.
مشخص کردن پایه برای اعداد در مرحله اول کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
// Specifying Base For Numbers
display.setCursor(0,0);
display.print("0x"); display.print(0xFF, HEX);
display.print("(HEX) = ");
display.print(0xFF, DEC);
display.println("(DEC)");
display.display();
delay(2000);
display.clearDisplay();
توابع print() یا printIn() یک پارامتر ثانویه و انتخابی دارند که پایه یا فرمت اعداد را مشخص میکند. برای اعداد اعشاری، این توابع تا چند رقم بعد از اعشار را تعیین خواهند کرد.
BIN |
باینری یا پایه 2 |
OCT |
هشتی یا پایه 8 |
DEC |
اعشاری یا پایه 10 |
HEX |
هگزادسیمال یا پایه 16 |
- تابع print(78, BIN) عدد 1001110 را نمایش میدهد
- تابع print(78, OCT) عدد 116 را نمایش میدهد
- تابع print(78, DEC) عدد 78 را نمایش میدهد
- تابع print(78, HEX) عدد 4E را نمایش میدهد
- تابع printIn(1.23456, 0) عدد 1 را نمایش میدهد
- تابع printIn(1.23456, 2) عدد 1.23 را نمایش میدهد
تابع printIn(1.23456, 4) عدد 1.2346 را نمایش میدهد
نمایش نمادهای ASCII در مرحله اول کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
// Display ASCII Characters
display.setCursor(0,0);
display.setTextSize(2);
display.write(3);
display.display();
delay(2000);
display.clearDisplay();
توابع print() و printIn() دادههایی را به نمایشگر میفرستند که توسط انسانها قابل خواندن هستند حال آنکه تابع write() دادههای باینری به نمایشگر ارسال میکند. از این تابع میتوان برای نوشتن نمادهای ASCII استفاده کرد. مثلاً ارسال عدد 3، نماد قلب را نشان خواهد داد.
چرخش متون در مرحله اول کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
// Text Rotation
while(1)
{
display.clearDisplay();
display.setRotation(rotatetext);
display.setTextSize(1);
display.setTextColor(BLACK);
display.setCursor(0,0);
display.println("Text Rotation");
display.display();
delay(1000);
display.clearDisplay();
rotatetext++;
}
مرحله دوم کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو؛ نقاشی ابتدایی
کدهایی که در ادامه میبینید، نشان میدهند که چگونه اشکال هندسی مبتدی مانند دایره، مستطیل یا مثلث را در نمایشگر LCD نوکیا 5110 بکشید. از این چند خط کد استفاده کنید تا در ادامه در مورد آنها توضیح دهیم.
#include
#include
#include
// Declare LCD object for software SPI
// Adafruit_PCD8544(CLK,DIN,D/C,CE,RST);
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
void setup() {
Serial.begin(9600);
//Initialize Display
display.begin();
// you can change the contrast around to adapt the display for the best viewing!
display.setContrast(57);
// Clear the buffer.
display.clearDisplay();
// Draw Rectangle
display.drawRect(0, 0, 60, 40, BLACK);
display.display();
delay(2000);
display.clearDisplay();
//Draw Filled Rectangle
display.fillRect(0, 0, 60, 40, BLACK);
display.display();
delay(2000);
display.clearDisplay();
//Draw Round Rectangle
display.drawRoundRect(0, 0, 60, 40, 8, BLACK);
display.display();
delay(2000);
display.clearDisplay();
//Draw Filled Round Rectangle
display.fillRoundRect(0, 0, 60, 40, 8, BLACK);
display.display();
delay(2000);
display.clearDisplay();
//Draw Circle
display.drawCircle(20, 20, 20, BLACK);
display.display();
delay(2000);
display.clearDisplay();
//Draw Filled Circle
display.fillCircle(20, 20, 20, BLACK);
display.display();
delay(2000);
display.clearDisplay();
//Draw Triangle
display.drawTriangle(20, 0, 0, 40, 40, 40, BLACK);
display.display();
delay(2000);
display.clearDisplay();
//Draw Filled Triangle
display.fillTriangle(20, 0, 0, 40, 40, 40, BLACK);
display.display();
delay(2000);
display.clearDisplay();
}
void loop() {
}
در گیف زیر خروجی کدهای داده شده را میبینید.
اکثر کدها، شبیه همانهایی هستند که در بالا توضیح دادیم اما آنهایی که برای طراحی اشکال ساده به کار میروند، تفاوت دارند.
توضیحات کدهای مرحله دوم پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
طراحی مستطیل در مرحله دوم کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
// Draw Rectangle
display.drawRect(0, 0, 60, 40, BLACK);
display.display();
delay(2000);
display.clearDisplay();
//Draw Filled Rectangle
display.fillRect(0, 0, 60, 40, BLACK);
display.display();
delay(2000);
display.clearDisplay();
تابع drawRect() برای کشیدن مستطیل روی صفحه نمایش به کار میرود. این تابع پنج پارامتر X، Y، عرض ارتفاع و رنگ را قبول میکند. با این تابع مستطیلی خواهید کشید که حاشیه 1 پیکسلی دارد. البته تابع fillRect() یک مستطیل تو پر طراحی خواهد کرد.
طراحی مستطیل با گوشههای گرد در مرحله دوم کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
console.log( 'Code is Poetry' );
تابع drawRoundRect() برای طراحی مستطیل با گوشههای گرد استفاده میشود. برای بهرهگیری از آن، به همان پارامترهای مشخص نیاز خواهیم داشت به اضافه پارامتر تعیین گوشههای گرد. این تابع در واقع مستطیل با گوشههای گرد تو خالی را طراحی میکند اما با fillRoundRect() میتوان مستطیل تو پر با گوشه های گرد کشید.
طراحی دایره در مرحله دوم کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
//Draw Circle
display.drawCircle(20, 20, 20, BLACK);
display.display();
delay(2000);
display.clearDisplay();
//Draw Filled Circle
display.fillCircle(20, 20, 20, BLACK);
display.display();
delay(2000);
display.clearDisplay();
برای طراحی دایره در پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو، باید از تابع drawCircle() استفاده کنید. این تابع چهار پارامتر X برای مرکز، Y برای مرکز، رادیوس و رنگ دارد. با این تابع دایره تو خالی خواهید کشید که حاشیه 1 پیکسلی خواهد داشت اما برای کشیدن دایره تو پر، میبایست از تابع fillCircle() بهره ببرید.
طراحی مثلث در مرحله دوم کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
//Draw Triangle
display.drawTriangle(20, 0, 0, 40, 40, 40, BLACK);
display.display();
delay(2000);
display.clearDisplay();
//Draw Filled Triangle
display.fillTriangle(20, 0, 0, 40, 40, 40, BLACK);
display.display();
delay(2000);
display.clearDisplay();
تابع drawTriangle() برای کشیدن مثلث استفاده میشود. این تابع دارای هفت پارامتر است؛ سه عدد X و Y (شامل x0، y0، x1، y1، x2 و y2) برای گوشههای مثلث و یک پارامتر برای رنگ. x0 و y0 برای گوشه بالایی، x1 و y1 برای گوشه سمت چپ و x2 و y2 برای گوشه سمت راست.
تابع نامبرده مثلث تو خالی طراحی میکند. برای طراحی یک مثلث تو پر باید از تابع fillTriangle() استفاده کنید.
مرحله سوم کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو؛ نمایش تصویر
آخرین مرحله از کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو، نشان دادن تصویر روی نمایشگر LCD نوکیا 5110 است. در مواقعی که میخواهید آیکون، لوگو، اینفوگرافیک و . . . را در این صفحه نمایش نشان دهید، کدهای زیر به کار خواهند آمد:
#include
#include
#include
// Declare LCD object for software SPI
// Adafruit_PCD8544(CLK,DIN,D/C,CE,RST);
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
// 'Marilyn Monroe 84x48', 84x48px
const unsigned char MarilynMonroe [] PROGMEM = {
0x00, 0x00, 0x00, 0x7f, 0x00, 0x02, 0xfe, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x00,
0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x1f, 0xe1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
0x00, 0x00, 0x0f, 0xf1, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xd8, 0xe0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x07, 0xe0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03,
0x3f, 0xe0, 0x00, 0x07, 0xf0, 0x78, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x70, 0x00, 0x0f, 0xee,
0x7c, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x0f, 0xf7, 0x1c, 0x00, 0x00, 0x00, 0x00,
0x07, 0x80, 0x00, 0x0f, 0xc7, 0xf3, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x0f, 0xf3,
0xdf, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x08, 0x7d, 0xef, 0xff, 0xc0, 0x00, 0x00,
0x00, 0x7f, 0xff, 0x80, 0x30, 0x0f, 0xfc, 0xe0, 0xc0, 0x00, 0x00, 0x01, 0x9e, 0x73, 0xc0, 0xe0,
0x07, 0xf8, 0xc1, 0xc0, 0x00, 0x00, 0x03, 0xfc, 0x00, 0x01, 0xc0, 0x0f, 0xfd, 0xe1, 0x80, 0x00,
0x00, 0x03, 0xf8, 0x00, 0x01, 0x9c, 0x0f, 0xff, 0xc1, 0xc0, 0x00, 0x00, 0x02, 0xc0, 0x00, 0x01,
0x9f, 0xbf, 0xfe, 0x01, 0x40, 0x00, 0x00, 0x02, 0x60, 0x00, 0x03, 0x07, 0xef, 0xff, 0x01, 0x40,
0x00, 0x00, 0x00, 0x60, 0x00, 0x07, 0x01, 0xf7, 0xff, 0x80, 0xc0, 0x00, 0x00, 0x00, 0x50, 0x01,
0xdf, 0x00, 0x7f, 0xff, 0x1c, 0x80, 0x00, 0x00, 0x00, 0x40, 0x01, 0xff, 0x00, 0x1f, 0xff, 0x1e,
0xe0, 0x00, 0x00, 0x02, 0x08, 0x00, 0x3f, 0x80, 0x07, 0xef, 0x03, 0xe0, 0x00, 0x00, 0x06, 0x08,
0x00, 0x03, 0xc0, 0x07, 0xdf, 0x07, 0xc0, 0x00, 0x00, 0x06, 0x08, 0x0f, 0x81, 0x80, 0x1f, 0xdf,
0x1f, 0x80, 0x00, 0x00, 0x03, 0x08, 0x1f, 0x98, 0x00, 0x3f, 0xfe, 0x19, 0x80, 0x00, 0x00, 0x18,
0x08, 0x3f, 0xfe, 0x00, 0x7f, 0xfe, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x08, 0x30, 0x3f, 0x00, 0xff,
0xff, 0x3f, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x76, 0x0f, 0x89, 0xff, 0xff, 0x9f, 0x00, 0x00, 0x00,
0x03, 0xe0, 0x7f, 0xc3, 0x81, 0xff, 0xfe, 0x9f, 0x80, 0x00, 0x00, 0x03, 0xf0, 0x7f, 0xf3, 0xc3,
0xff, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x7f, 0xfd, 0xc3, 0xff, 0xfe, 0x5e, 0x00, 0x00,
0x00, 0x03, 0xf0, 0x7f, 0xff, 0xc3, 0xff, 0xf3, 0x1e, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x71, 0xff,
0x87, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x7c, 0x3f, 0x87, 0xff, 0xe3, 0xfe, 0x00,
0x00, 0x00, 0x0f, 0xf0, 0x3c, 0xff, 0x05, 0xff, 0xf3, 0xfc, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x0f,
0xfe, 0x09, 0xff, 0xf7, 0xfc, 0x00, 0x00, 0x00, 0x08, 0xf8, 0x01, 0xfc, 0x19, 0xff, 0xff, 0xf8,
0x00, 0x00, 0x00, 0x0c, 0x78, 0x00, 0x00, 0x13, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x0e, 0x78,
0x00, 0x00, 0x23, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x0e, 0xf8, 0x00, 0x00, 0x47, 0xff, 0xff,
0xf0, 0x00, 0x00, 0x00, 0x0c, 0xfa, 0x00, 0x01, 0x8f, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x08,
0x7b, 0x00, 0x03, 0x3f, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x0c, 0x3b, 0xf8, 0x0f, 0xff, 0xff,
0xff, 0xe0, 0x00, 0x00, 0x00, 0x0f, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00,
0x07, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x71, 0xff, 0xff, 0xff,
0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00
};
void setup() {
Serial.begin(9600);
//Initialize Display
display.begin();
// you can change the contrast around to adapt the display for the best viewing!
display.setContrast(57);
// Clear the buffer.
display.clearDisplay();
// Display bitmap
display.drawBitmap(0, 0, MarilynMonroe, 84, 48, BLACK);
display.display();
// Invert Display
//display.invertDisplay(1);
}
void loop() {
}
خروجی این کدها را در تصویر زیر میبینید:
توضیحات مرحله سوم کدنویسی پروژه راه اندازی نمایشگر Nokia 5110 با آردوینو
تابع drawBitmap() برای نمایش یک تصویر در LCD به کار میرود. این تابع دارای پارامترهای X و Y برای گوشه بالا سمت چپ، پارامتر مخصوص رنگ مونوکروم، پارامتر عرض بر حسب پیکسل، پارامتر ارتفاع بر حسب پیکسل و پارامتر مخصوص رنگ.
تصویر استفاده شده در این کدها دارای ابعاد 48×84 است بنابراین X و Y روی 0 تنظیم شدهاند و عرض و ارتفاع به ترتیب 84 و 48 پیکسل هستند.
// Display bitmap
display.drawBitmap(0, 0, MarilynMonroe, 84, 48, BLACK);
display.display();
پیش از آنکه بتوانیم از تابع drawBitmap() بهره ببریم، باید یک عکس طراحی کنیم. به خاطر داشته باشید که رزولوشن نمایشگر 48×84 پیکسل است به همین علت تصاویر بزرگتر از این سایز به خوبی پخش نخواهند شد. برای اینکه یک تصویر با ابعاد گفته شده بکشید، یک نرمافزار مانند فتوشاپ یا نقاشی ویندوز را اجرا کنید.
یک تصویر از اینترنت دانلود نمایید و سایز آن را در نرمافزار مدنظر، به 48×84 پیکسل تغییر دهید و با فرمت .bmp ذخیره کنید.
وقتی عکس دلخواه را پیدا کردید و سایز را تغییر دادید، آن را باید به آرایهای تبدیل کنید که کنترلر PCD8544 بتواند تشخیص دهد. یکی از روشهای انجام این کار، استفاده از ابزار آنلاین image2cpp میباشد.
برای شروع، اسم ابزار نامبرده را در مرورگر نوشته و وارد سایت شوید و تصویر دلخواه را در آن آپلود کنید.
ابعاد عکس انتخاب شده در بخش Canvas size زیر Image Settings قابل مشاهده خواهد بود. چنانچه تصویر بزرگتر از 48×84 پیکسل بود، با گزینه Scaling آن را به ابعاد دلخواه درآورید و پیشنمایشی از خروجی نهایی را در بخش Preview ببینید.
اگر لازم بود، میتوانید رنگ پسزمینه تصویر یا رنگ خودِ تصویر را تغییر دهید.
در نهایت، مهمترین گزینه تنظیمات یعنی شروع روشنایی را عوض کنید. وقتی آپشن شروع روشنایی را تنظیم میکنید، اعداد بالاتر از آن سفید و اعداد کمتر از آن سیاه خواهند شد.
در پنجره Preview میتوانید خروجی نهایی را با تنظیمات اعمال شده ببینید.
وقتی عکس آن چیزی که میخواستید شد، آرایههای دادهای را تنظیم کنید. برای این کار، گزینه Arduino Code را به عنوان فرمت خروجی مشخص و روی گزینه Generate کلیک نمایید.
با طی کردن مراحل گفته شده، تصویر دلخواه آماده شده است. اینک با کدهایی که ارائه دادیم، عکس را در نمایشگر LCD نوکیا 5110 پخش کنید. به خاطر داشته باشید که برای آن اسم مناسبی گذاشته و مقادیر مربوطه را در تابع drawBitmap() قرار دهید.