آموزش آردوینو جلسه پنجم
در جلسات گذشته با کار با آردوینو را یاد گرفتیم و در جلسه قبل اطلاعاتی را از آردوینو به کامپیوتر فرستادیم؛ اما همیشه امکان استفاده از کامپیوتر برای نمایش اطلاعات وجود ندارد. برای همین از نمایشگر استفاده میکنیم. در این جلسه نمایشگر 1602 را با آردوینو راه اندازی میکنیم.

مرور متغیر ها
int: این متغیر از نوع عدد صحیح است؛ یعنی میتواند عدد های 0، کوچک تر از 0 و بزرگتر از 0 را درون خود ذخیره کند و در شرایط لازم مقدار آن را تغییر و یا از مقدار آن استفاده کنیم.
bool: از این متغیر برای ذخیره درستی یا نادرستی استفاده میشود؛ یعنی این متغیر توانایی ذخیره سازی دو مقدار true یا 1 یا درست و false یا 0 یا نادرست را در خود دارد.
String: این متغیر رشته ها را در خود ذخیره میکند؛ رشته ها شامل حروف، اعداد و یا کاراکتر ها هستند. رشته های میتوانند شامل یک یا چند کاراکتر باشند!
uint8_t و uint16_t: این اعداد برای ذخیره اعداد 8 و 16 بیت هستند؛ تعداد بیت های قابل ذخیره سازی در نام متغیر ها آمده است. فعلا با این دو متغیر کاری نداریم…
byte: از این متغیر برای ذخیره سازی مجموعه ای از اعداد باینری استفاده میکنیم؛ از این متغیر میتوانیم برای ذخیره بیت مپ ها استفاده کنیم که در جلسات دیگر توضیح خواهیم داد.
float: این متغیر اعداد اعشاری را در خود نگهداری میکند؛ مثلا برای ذخیره سازی عدد پی از این متغیر میتوانیم استفاده کنیم.
char: این متغیر میتواند کاراکتر ها را درخود ذخیره کند؛ مثلا برای ذخیره کاراکتر A و یا ساخت مجموعه ای از اعداد و کاراکتر های از این متغیر استفاده میکنیم.
نمایشگر کاراکتری 1602
این نوع از نمایشگر ها، قیمت پایین تری نسبت به دیگر نمایشگر ها دارد و راه اندازی بسیار ساده ای دارد! این نمایشگر کاربرد های بسیاری دارد و تقریبا در همه فروشگاه های قطعات یافت میشود…
تصویر این نمایشگر را در زیر مشاهده میکنید:
این نمایشگر دارای 16 پین است:
نام پین | شماره پین |
تغذیه منفی | 1-VSS (-) |
تغذیه مثبت | 2-VDD (+) |
تنظیم کنتراست | 3-VE (Contrast) |
انتخاب رجیستر | 4-RS (Register Select) |
نوشتن / خواندن | 5-RW (Read/Write) |
فعال کردن | 6-E (Enable) |
دیتا 0 | 7-D0 (DATA0) |
دیتا 1 | 8-D1 (DATA1) |
دیتا 2 | 9-D2 (DATA2) |
دیتا 3 | 10-D3 (DATA3) |
دیتا 4 | 11-D4 (DATA4) |
دیتا 5 | 12-D5 (DATA5) |
دیتا 6 | 13-D6 (DATA6) |
دیتا 7 | 14-D7 (DATA7) |
مثبت LED پس زمینه | 15-Anode (Backlight+) |
منفی LED پس زمینه | 16-Katode (Backlight-) |
برای جلوگیری از سردرگمی شما، به صورت ساده توضیح میدهیم اما در جلسات آینده به توضیحات تخصصی تر به توضیح آنها میپردازیم…
پین VSS پین منفی تغذیه LCD است که باید به GND آردوینو متصل شود و پین VDD پین مثبت LCD است که باید به پین 5 ولت آردوینو وصل شود.
پین VE برای تنظیم کنتراست یا شدت نور پیکسل ها است که میتوانید مستقیما به پین GND آردوینو متصل کنید و یا توسط یک پوتانسیومتر شدت آن را کم و زیاد کرد.
پین RS برای انتخاب رجیستر ها است؛ رجیستر ها برای انتخاب این که کدام کاراکتر در نمایشگر انتخاب شود و کاراکتر بر روی آن نمایش داده شود است.
پین RW برای تایین حالت نوشتن و خواندن روی LCD است که ما آن را به GND متصل میکنیم اما در جلسه بعد به آن نیاز نخواهیم داشت(به دلیل استفاده از ماژول I2C)
پین EN برای فعالسازی نمایشگر است؛ یعنی با خاموش و روشن یا اصطلاحا HIGH و LOW کردن این پین میتوانیم نمایشگر را فعال یا غیرفعال کنیم.
پین های D0 تا D7 برای ارسال دیتا یا اطلاعات است که آن ها را به پین های دیجیتال دلخواه متصل میکنیم؛ لازم به ذکر است از پین های D0 تا D3 استفاده نخواهیم کرد!
دو پین آخر متعلق به پین های بک لایت یا نور پس زمینه است؛ پین Katode را به GND و پین Anode را به مثبت وصل میکنیم و یا برای کنترل آن از یک پوتانسیومتر استفاده میکنیم.
راه اندازی LCD1602
LCD به معنای Liquid Crystal Display است؛ این نمایشگر دارای دو سطر و 16 ستون است!
مدار:
اتصالات:
VSS – GND
VDD – +5V
VE – GND
RS – 10
RW – GND
E – 9
D4 – 8
D5 – 7
D6 – 6
D7 – 5
کد:
#include <liquidCrystal.h>
int rs = 10, en = 9, d4 = 8, d5 = 7, d6 = 6, d7 = 5;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
lcd.begin(16, 2);
lcd.print("hello, world!");
}
void loop(){
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
}
نتیجه:
توضیحات:
کد بالا یک نمونه ساده برای درک بهتر شما است؛ در آخر همین آموزش لینک دانلود کد های اصلی را قرار میدهیم.
در خط اول کتابخانه را اضافه میکنیم؛ کتابخانه ها مجموعه ای از کد ها و توایع هستند که کد نوشتن را ساده تر میکنند و باعث میشوند حجم کمتری از کد ها را استفاده کنیم.
برای اضافه کردن کتابخانه ابتدا کتابخانه مورد نظر را دانلود و از مسیر
Sketch > Include Library > Add .ZIP Library
کتابخانه مورد نظر را انتخاب کنید تا به صورت خودکار نصب شود و یا به قسمت Manage Libraries رفته و کتابخانه را به صورت آنلاین به روزرسانی و یا دانلود کنید.
کتابخانه LiquidCrystal به طور پیشفرض بر روی نرم افزار آردوینو نصب میباشد.
#include <liquidCrystal.h>
آموزش نصب کتابخانه آردوینو:
در خط 3 به جای اینکه متغیر ها را تک تک تعریف کنیم به صورت یکجا مینویسیم و به وسیله کاما جدا میکنیم:
int rs = 10, en = 9, d4 = 8, d5 = 7, d6 = 6, d7 = 5;
در خط چهارم یک Object یا شئ تعریف میکنیم. فعلا بدانید که شی ها قسمتی از کتابخانه هستند که تنظیمات اولیه را انجام میدهد؛ اما اگر به دانستن آن علاقه دارید همین حالا آن را در ویکی پدیا بخوایند.
در کد نوشته شده پین های LCD را تعریف میکنیم و نام کلاس را lcd قرار داده این که میتوانید از هر اسم دیگری استفاده کنید.
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
این نوع از نمایشگر انواع مختلفی دارد و در هرکدام تعداد سطر ها و سطون ها متفاوت است؛ پس باید در کد، تعداد آن ها را مشخص کنیم که در اینجا نمایشگر ما 16 در 2 کاراکتر است:
lcd.begin(16, 2);
در جلسه چهارم گفته شد که برای چاپ متن بر روی سریال از دستور print استفاده میکنیم؛ در نمایشگر ها نیز برای نمایش متن از print استفاده میکنیم:
lcd.print("hello, world!");
متن هایی که قرار است بر روی نمایشگر نمایش داده شوند، باید در جای مناسب قرار بگیرند؛ برای موقعیت دهی به کلمات یا اصطلاحا برای تنظیم مکان نمای نمایشگر از دستور setCursor استفاده میکنیم. برای مثال اگر شما بخواهید در خط دوم در کاراکتر سوم کلمه Arduino را چاپ کنید از کد زیر استفاده میکنیم:
lcd.setCursor(2, 1);
lcd.print("Arduino");
توجه: در تمام زبان های برنامه نویسی شمارش اعداد از 0 شروع میشوند؛ مثلا برای اشاره به اولین عدد باید از 0 شمارش کرد!
اگر کد گفته شده را امتحان کنید، زیر Hello World یک شمارشگر درحال شمارش اعداد است؛ با استفاده از millis میتوانید گذر زمان را به میلی ثانیه اندازه بگیرید و با تقسیم آن بر 1000 آن را به ثانیه تبدیل کنید:
lcd.print(millis() / 1000);
I2C – آی تو سی
یکی از پروتکل های ارتباطی موجود، I2C است؛ این پروتکل دارای دو سیم است که یکی برای انتقال اطلاعات و یکی برای تنظیم سرعت انتقال یا کلاک است.
این پروتکل دارای دو سیم SDA یا Serial Data و SCL یا Serial Clock است.
همچنین میتوانید آشنایی با پروتکل I2C را بخوانید!
اگر در پروژه این جلسه میخواهید از این نمایشگر استفاده کنید اما پین های دیجیتال زیادی از آردوینو اشغال شده است، کافی است از پروتکل I2C استفاده کنید و LCD را تنها با دو سیم که به پین های A4 و A5 متصل است راه اندازی کنید.
توجه داشته باشید که در پروژه بالا میتوانستید هرکدام از پین های آردوینو را انتخاب کنید اما برای استفاده از پروتکل I2C تنها میتوانید از پین های A4 و A5 استفاده کنید زیرا تنها این دو پین از I2C پشتیبانی میکنند!
ماژول I2C برای LCD1602:
اتصالات:
GND – GND
VCC – +5V
SDA – A4
SCL – A5
کد:
#include <Wire.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
void setup(){
lcd.init();
lcd.backlight();
lcd.setCursor(3,0);
lcd.setCursor(0,0);
lcd.print("Hello, world!");
lcd.setCursor(0, 1);
lcd.print("Shiraz Coders");
delay(1000);
lcd.clear();
}
void loop(){
lcd.setCursor(0, 0);
lcd.print(millis() / 1000);
}
توضیحات:
در دو خط اول کتابخانه های مورد نیاز را اضاف کردیم؛ اولین کتابخانه Wire است که برای استفاده از پروتکل I2C نیاز خواهیم داشت؛ کتابخانه دوم LiquidCrystal_I2C است که برای راه اندازی این lcd با i2c است. کتابخانه Wire به صورت پیشفرض نصب است اما کتابخانه دوم را از آخر صفحه دانلود و نصب کنید!
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
خط چهارم مانند کد قبل است با این تفاوت که در این کد در پارامتر اول آدرس I2C و در پارامتر های دوم و سوم تعداد سطر و ستون های نمایشگر را مینویسیم؛ دقت کنید که آدرس I2C را به درستی وارد کنید؛ معمولا آدرس های LCD برابر با 0x27 و 0x3f هستند!
LiquidCrystal_I2C lcd(0x27, 16, 2);
در خط 7 و 8 تنظیمات اولیه را انجام میدهیم؛ init نمایشگر را تنظیم میکند و backlight بک لایت را روشن میکند؛ همچنین میتوانید از noBacklight برای خاموش کردن نور بک لایت استفاده کنید:7
lcd.init(); // Init LCD
lcd.backlight(); // Turn on backlight
lcd.noBacklight(); // Turn off backlight
با استفاده از دستور clear میتوانید صفحه نمایشگر را پاک کنید:
lcd.clear();
با تشکر از همراهی شما، در صورت داشتن هرگونه سوال، نظر، انتقاد و یا پیشنهاد میتوانید در بخش نظرات با ما در ارتباط باشید.
توجه داشته باشید کتابخانه Liquidcrystal به طور پیشفرض نصب است و فقط به Liquidcrystal_I2C نیاز خواهید داشت!
دانلود کتابخانه نمایشگر I2C با لینک مستقیم (حجم 9 کیلوبایت)
دانلود سورس کد پروژه (حجم 451 بایت)درباره admin_hb
حسین بذرافکن هستم، برنامه نویس، فریلنسر و عاشق الکترونیک...
نوشته های بیشتر از admin_hb
دیدگاهتان را بنویسید