درس ۲۰/۳۱: نمایش ولتاژ روی LCD1602
این پروژه نحوه ساخت یک ولتمتر دیجیتال با استفاده از آردوینو و نمایشگر LCD1602 با رابط I2C را نشان میدهد. با خواندن ولتاژ آنالوگ از یک پتانسیومتر و نمایش آن بر روی صفحه، مهارتهای ضروری تبدیل آنالوگ به دیجیتال، ارتباط I2C و کنترل LCD را یاد خواهید گرفت.
این پروژه یک گام عالی برای بسیاری از کاربردهای عملی است. در اینجا چند ایده وجود دارد که میتوانید بر اساس آنها بسازید:
- ساخت یک مانیتور ولتاژ باتری قابل حمل برای پروژههای خود.
- ایجاد یک منبع تغذیه ساده با نمایشگر ولتاژ بصری.
- نظارت بر خروجی یک پنل خورشیدی یا سایر منابع ولتاژ متغیر.
- نمایش مقدار هر حساس(حس کننده) آنالوگ، مانند مقاومت وابسته به نور (LDR)، به عنوان یک عدد قابل خواندن.
در پایان این راهنما، درک روشنی از نحوه اتصال قطعات، پیکربندی کتابخانههای لازم و نوشتن شِفر (کود) برای ایجاد نمایشگر ولتاژ خود خواهید داشت.
قطعات سختافزاری
برای ساخت این پروژه، به قطعات زیر نیاز دارید. این دوره بر اساس کیت آردوینو ۳ در ۱ SunFounder است که شامل تمام این قطعات میشود.
- برد آردوینو (به عنوان مثال، Uno)
- نمایشگر LCD1602 با ماجیول I2C
- پتانسیومتر (10kΩ توصیه میشود)
- سیمهای جامپر
- برد بورد
آشنایی با LCD1602 و ماجیول I2C
LCD1602 یک نمایشگر الفبایی محبوب با ۱۶ ستون و ۲ ردیف است. یک LCD موازی استاندارد به پایههای دیجیتال زیادی برای کنترل نیاز دارد. با این حال، این نمایشگر با یک ماجیول I2C اختصاصی که به پشت آن متصل است (در ویدیو در ۰۱:۳۰) عرضه میشود. این ماجیول سیمکشی را به طور چشمگیری ساده میکند و اتصال را به فقط چهار سیم کاهش میدهد: VCC، GND، SDA و SCL. این امکانپذیر است زیرا ماجیول I2C به عنوان یک پل عمل میکند و سیگنال سریال ساده I2C را به سیگنالهای موازی که LCD نیاز دارد ترجمه میکند.
این پروژه از رابط I2C استفاده میکند که یک پروتکل ارتباطی است که به آردوینو شما اجازه میدهد با چندین دستگاه فقط با استفاده از دو سیم صحبت کند. این یک مهارت اساسی برای اتصال بسیاری از انواع سنسورها و نمایشگرها است.
راهنمای سیمکشی
اتصال LCD و پتانسیومتر به آردوینو ساده است. ماجیول I2C به برق و دو خط ارتباطی نیاز دارد. پتانسیومتر به عنوان یک تقسیمکننده ولتاژ متغیر عمل میکند و به شما امکان میدهد ولتاژ را در پایه لغزنده آن تنظیم کنید.
در اینجا تنظیمات دقیق سیمکشی آمده است:
- ماجیول I2C LCD به آردوینو:
- GND به GND آردوینو (در ویدیو در ۰۵:۳۸).
- VCC به 5V آردوینو (در ویدیو در ۰۵:۴۷).
- SDA به A4 آردوینو (در ویدیو در ۰۵:۴۷).
- SCL به A5 آردوینو (در ویدیو در ۰۵:۵۷).
- پتانسیومتر به آردوینو:
- پایه چپ به 5V آردوینو (در ویدیو در ۳۳:۳۹).
- پایه وسط (لغزنده) به A0 آردوینو (در ویدیو در ۳۳:۴۳).
- پایه راست به GND آردوینو (در ویدیو در ۳۳:۴۳).
نصب کتابخانه مورد نیاز
این پروژه به یک کتابخانه خارجی برای کنترل LCD از طریق I2C نیاز دارد. کتابخانه استفاده شده در ویدیو کتابخانه "Arduino Liquid Crystal I2C" است. میتوانید آن را از واصل ارائه شده در صفحه منابع Robojax یا از GitHub دانلود کنید (در ویدیو در ۰۶:۱۶).
برای نصب آن، کتابخانه را به عنوان یک فایل ZIP دانلود کنید. سپس، در Arduino IDE خود، به Sketch > Include Library > Add .ZIP Library... بروید و فایل دانلود شده را انتخاب کنید (در ویدیو در ۰۶:۴۱).
یافتن آدرس I2C نمایشگر LCD شما
قبل از آپلود شِفر (کود) اصلی، تعیین آدرس I2C ماجیول LCD خاص شما بسیار مهم است. این آدرس بسته به سازنده میتواند متفاوت باشد. ویدیو نحوه استفاده از یک اسکنر I2C برای یافتن آن را نشان میدهد (در ویدیو در ۰۸:۱۱).
میتوانید این اسکنر را با رفتن به File > Examples > Wire > i2c_scanner پیدا کنید. این شِفر (کود) را با LCD متصل به آردوینو خود آپلود کنید و نمایشگر مسلسل را باز کنید. آدرس را نمایش میدهد که اغلب 0x27 یا 0x3F است. باید از این آدرس در شِفر (کود) اصلی خود استفاده کنید.
توضیح شِفر (کود)
شِفر (کود) این پروژه بر خواندن یک مقدار آنالوگ و قالببندی آن برای نمایش متمرکز است. بیایید بخشهای کلیدی و قابل تنظیم توسط کاربر را تجزیه و تحلیل کنیم.
۱. شامل کتابخانهها و شیء LCD
این بخش کتابخانههای لازم را شامل میشود و یک شیء برای LCD شما ایجاد میکند. مهمترین بخش در اینجا آدرس I2C است که باید آن را مطابق با آدرسی که در مرحله قبل پیدا کردید تغییر دهید.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// آدرس LCD را برای نمایشگر ۱۶ یا ۲۰ کاراکتری و ۲ یا ۴ خطی روی 0x27 تنظیم کنید
LiquidCrystal_I2C lcd(0x27, 16, 2);#include <Wire.h>: این کتابخانه بهصورت داخلی در آردوینو وجود دارد و برای ارتباط I2C ضروری است.#include <LiquidCrystal_I2C.h>: این شامل کتابخانهای است که ما نصب کردیم و توابع لازم برای کنترل LCD را فراهم میکند.LiquidCrystal_I2C lcd(0x27, 16, 2);: این خط یک شیء به نامlcdایجاد میکند. پارامتر اول،0x27، آدرس I2C است که قبلاً پیدا کردید. پارامترهای دوم و سوم ابعاد LCD را تعریف میکنند: ۱۶ ستون و ۲ ردیف. اگر آدرس شما متفاوت است، باید0x27را به آدرس خاص خود تغییر دهید.
۲. توابع Setup و Loop
تابع setup() LCD را مقداردهی اولیه میکند و نور پسزمینه آن را روشن میکند. تابع loop() شامل منطق اصلی برای خواندن ولتاژ و نمایش آن است.
void setup()
{
lcd.begin();
lcd.backlight();
}
void loop()
{
int potValue = analogRead(A0);
float voltage = potValue * (5.0 / 1023.0);
// ... (شِفر (کود) نمایش LCD)
delay(1000);
}
lcd.begin(): این رابط LCD را مقداردهی اولیه میکند و آن را برای استفاده آماده میسازد.lcd.backlight(): این نور پسزمینه نمایشگر را روشن میکند و متن را قابل مشاهده میسازد.int potValue = analogRead(A0);: این مقدار آنالوگ خام را از پایه A0 میخواند که به لغزنده پتانسیومتر متصل است. مقدار یک عدد صحیح بین ۰ تا ۱۰۲۳ خواهد بود که ولتاژ از ۰ ولت تا ۵ ولت را نشان میدهد.float voltage = potValue * (5.0 / 1023.0);: این مرحله تبدیل حیاتی است. مقدار خام ADC را به یک خوانش ولتاژ واقعی تبدیل میکند. فرمول مقدار خام را در نسبت ولتاژ مرجع (۵.۰ ولت) به حداکثر مقدار ADC (۱۰۲۳) ضرب میکند. این ضروری است زیرا ADC ولتاژ را مستقیماً نمیخواند؛ بلکه یک عدد متناسب را میخواند.
۳. نمایش ولتاژ
سپس شِفر (کود) صفحه را پاک میکند و مقدار ولتاژ را در موقعیت خاصی در خط دوم چاپ میکند.
lcd.clear();
lcd.print("LCD1602 Tutorial");
lcd.setCursor (0,1); // رفتن به ابتدای خط دوم
lcd.print("Voltage:");
lcd.setCursor (9,1); // تنظیم به خط ۲ خصیصه ۹
lcd.print(voltage);
lcd.setCursor (13,1); // تنظیم به خط ۲ خصیصه ۱۴
lcd.print("V");
lcd.clear(): هر متن قبلی را از صفحه پاک میکند.lcd.print("LCD1602 Tutorial"): عنوان را در خط اول چاپ میکند.lcd.setCursor (0,1): مکاننما را به ابتدای خط دوم تنظیم میکند. پارامتر اول ستون (۰-۱۵) و پارامتر دوم ردیف است (۰ برای خط اول، ۱ برای خط دوم).lcd.print(voltage): مقدار ولتاژ محاسبهشده را چاپ میکند. متغیرfloatبهطور پیشفرض با دو رقم اعشار چاپ میشود.lcd.setCursor (13,1): مکاننما را به ستون ۱۳ در خط دوم میبرد تا خصیصه "V" دقیقاً بعد از عدد قرار گیرد.
نمایش زنده پروژه
پس از آپلود شِفر (کود)، LCD باید "LCD1602 Tutorial" را در خط اول نمایش دهد. در خط دوم، "Voltage:" و سپس خوانش ولتاژ فعلی را نشان میدهد. هنگام چرخاندن دستگیره پتانسیومتر، ولتاژ نمایشدادهشده را بهصورت زنده تغییر میبینید، از حدود ۰.۰۰ ولت تا ۵.۰۰ ولت (در ویدیو در ۳۵:۲۵).
این پروژه نمونهای عالی از نحوه تبدیل یک سیگنال آنالوگ خام به یک مقدار واضح و قابلخواندن برای انسان است. مهارتهایی که در اینجا یاد گرفتهاید میتوانند مستقیماً برای هر حساس(حس کننده) آنالوگ دیگری که در آینده استفاده میکنید اعمال شوند.
ویدیو همچنین موضوعات مرتبط دیگری مانند نمایش متن، اسکرول و ایجاد کاراکترهای سفارشی روی LCD را پوشش میدهد.
پروژههای مرتبط از این ویدیو
- درس ۲۰/۳۱: استفاده از LCD1602 با آردوینو برای نمایش متن | Robojax
- درس ۲۰/۳۱: نمایش دما و رطوبت از DHT11 روی صفحه LCD
فصلها
- [۰۰:۰۰] مقدمهای بر LCD1602 و نمای کلی پروژه
- [۰۱:۳۰] توضیح سختافزار LCD1602 و ماجیول I2C
- [۰۴:۰۶] تنظیم آدرس I2C با جامپرها
- [۰۵:۲۸] نمودار سیمکشی برای LCD1602
- [۰۷:۳۱] توضیح شِفر (کود) برای نمایش متن پایه
- [۱۱:۱۰] نمایش مثال مکاننمای چشمکزن
- [۱۳:۴۶] ایجاد و استفاده از کاراکترهای سفارشی
- [۱۸:۵۱] استفاده از مثال نمایش سریال
- [۲۳:۱۶] اسکرول متن روی LCD
- [۲۶:۱۳] نمایش دما و رطوبت از DHT11
- [۳۳:۰۰] خواندن و نمایش ولتاژ از پتانسیومتر
- [۳۵:۵۶] نمایش فاصله از حساس(حس کننده) اولتراسونیک
/*
Lesson 20/31: Displaying voltage on LCD1602
Get this code and watch video Download and resource page https://robojax.com/RJT603
YouTube video https://www.youtube.com/watch?v=NXAswOc_2zg
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 or 20 chars and 2 or 4 lines display
LiquidCrystal_I2C lcd(0x27, 16, 2);
int count =700;
void setup()
{
// Robojax code for LCD with I2C
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
// Robojax code for LCD with I2C
}
void loop()
{
int potValue = analogRead(A0);
float voltage = potValue * (5.0 / 1023.0);
//start of loop Robojax code for LCD with I2C
lcd.clear();
lcd.print("LCD1602 Tutorial");
lcd.setCursor (0,1); // go to start of 2nd line
lcd.print("Voltage:");
lcd.setCursor (9,1); // set to line 2 char 9
lcd.print(voltage);
lcd.setCursor (13,1); // set to line 2 char 14
lcd.print("V");
//lcd.setCursor (3,3); // set to line 4 character 4
//lcd.print("Text in line 4");
delay(1000);
count++;
//end of loopcode Robojax code for LCD with I2C
}
مواردی که ممکن است به آنها نیاز داشته باشید
-
آمازونSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
آمازون
-
آمازون
-
آمازون
-
آمازون
منابع و مراجع
-
مستنداتمستندات برای کیت یادگیری ۳ در ۱ اینترنت اشیاء/ماشین هوشمند/سانفاندترdocs.sunfounder.com
-
خارجیکیت آموزشی هوشمند ۳ در ۱ ماشین سانفاندری را خریداری کنیدsunfounder.com
فایلها📁
کتابخانههای آردوینو (zip)
-
شِفر (کود) منبع کیت یادگیری خودرو هوشمند ۳ در ۱ سانفاندرز
3in1-kit-main-v2.zip12.80 MB
راهنمای کاربر
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB