บทเรียน 20/31: การแสดงแรงดันไฟฟ้าบน LCD1602
โปรเจกต์นี้สาธิตวิธีการสร้างโวลต์มิเตอร์ดิจิทัลโดยใช้ Arduino และจอแสดงผล LCD1602 พร้อมอินเทอร์เฟซ I2C โดยการอ่านแรงดันไฟฟ้าแบบแอนะล็อกจากโพเทนชิโอมิเตอร์และแสดงผลบนหน้าจอ คุณจะได้เรียนรู้ทักษะที่จำเป็นเกี่ยวกับการแปลงสัญญาณแอนะล็อกเป็นดิจิทัล การสื่อสารแบบ I2C และการควบคุม LCD
โปรเจกต์นี้เป็นก้าวสำคัญสำหรับการประยุกต์ใช้ในทางปฏิบัติมากมาย นี่คือแนวคิดบางอย่างที่คุณสามารถต่อยอดได้:
- สร้างเครื่องตรวจวัดแรงดันแบตเตอรี่แบบพกพาสำหรับโปรเจกต์ของคุณ
- สร้างแหล่งจ่ายไฟอย่างง่ายพร้อมการแสดงค่าแรงดันไฟฟ้าแบบเห็นภาพ
- ตรวจสอบเอาต์พุตของแผงโซลาร์เซลล์หรือแหล่งจ่ายแรงดันไฟฟ้าที่แปรผันอื่นๆ
- แสดงค่าจากเซนเซอร์แอนะล็อกใดๆ เช่น ตัวต้านทานที่ไวต่อแสง (LDR) เป็นตัวเลขที่อ่านได้
เมื่อจบคู่มือนี้ คุณจะมีความเข้าใจที่ชัดเจนเกี่ยวกับวิธีการเชื่อมต่อส่วนประกอบต่างๆ กำหนดค่าไลบรารีที่จำเป็น และเขียนโค้ดเพื่อสร้างจอแสดงแรงดันไฟฟ้าของคุณเอง
ส่วนประกอบฮาร์ดแวร์
ในการสร้างโปรเจกต์นี้ คุณจะต้องมีส่วนประกอบต่อไปนี้ คอร์สนี้ใช้ชุด Arduino 3-in-1 ของ SunFounder ซึ่งรวมส่วนประกอบทั้งหมดเหล่านี้ไว้
- บอร์ด Arduino (เช่น Uno)
- จอแสดงผล LCD1602 พร้อมโมดูล I2C
- โพเทนชิโอมิเตอร์ (แนะนำ 10kΩ)
- สายจัมเปอร์
- เบรดบอร์ด
ทำความเข้าใจ LCD1602 และโมดูล I2C
LCD1602 เป็นจอแสดงผลตัวอักษรและตัวเลขยอดนิยมที่มี 16 คอลัมน์และ 2 แถว LCD แบบขนานมาตรฐานจะต้องใช้พินดิจิทัลจำนวนมากในการควบคุม อย่างไรก็ตาม จอแสดงผลนี้มาพร้อมกับโมดูล I2C เฉพาะที่ติดอยู่ด้านหลัง (ในวิดีโอที่ 01:30) โมดูลนี้ช่วยลดความยุ่งยากในการเดินสายไฟลงอย่างมาก โดยลดการเชื่อมต่อเหลือเพียงสี่สาย: VCC, GND, SDA และ SCL ซึ่งเป็นไปได้เพราะโมดูล I2C ทำหน้าที่เป็นสะพานเชื่อม แปลงสัญญาณอนุกรม I2C แบบง่ายให้เป็นสัญญาณขนานที่ LCD ต้องการ
โปรเจกต์นี้ใช้อินเทอร์เฟซ I2C ซึ่งเป็นโปรโตคอลการสื่อสารที่ช่วยให้ Arduino ของคุณสามารถพูดคุยกับอุปกรณ์หลายตัวโดยใช้เพียงสองสาย นี่เป็นทักษะพื้นฐานสำหรับการเชื่อมต่อเซนเซอร์และจอแสดงผลหลายประเภท
คู่มือการเดินสายไฟ
การเชื่อมต่อ LCD และโพเทนชิโอมิเตอร์เข้ากับ Arduino เป็นเรื่องง่าย โมดูล I2C ต้องใช้ไฟและสายสื่อสารสองเส้น โพเทนชิโอมิเตอร์ทำหน้าที่เป็นตัวแบ่งแรงดันไฟฟ้าแบบแปรผัน ช่วยให้คุณปรับแรงดันไฟฟ้าที่ขาไวเปอร์ได้
นี่คือการตั้งค่าการเดินสายไฟโดยละเอียด:
- โมดูล I2C ของ LCD ไปยัง Arduino:
- GND ไปยัง GND ของ Arduino (ในวิดีโอที่ 05:38)
- VCC ไปยัง 5V ของ Arduino (ในวิดีโอที่ 05:47)
- SDA ไปยัง A4 ของ Arduino (ในวิดีโอที่ 05:47)
- SCL ไปยัง A5 ของ Arduino (ในวิดีโอที่ 05:57)
- โพเทนชิโอมิเตอร์ไปยัง Arduino:
- ขาซ้าย ไปยัง 5V ของ Arduino (ในวิดีโอที่ 33:39)
- ขากลาง (ไวเปอร์) ไปยัง A0 ของ Arduino (ในวิดีโอที่ 33:43)
- ขาขวา ไปยัง GND ของ Arduino (ในวิดีโอที่ 33:43)
การติดตั้งไลบรารีที่จำเป็น
โปรเจกต์นี้ต้องใช้ไลบรารีภายนอกเพื่อควบคุม LCD ผ่าน I2C ไลบรารีที่ใช้ในวิดีโอคือไลบรารี "Arduino Liquid Crystal I2C" คุณสามารถดาวน์โหลดได้จากลิงก์ที่ให้ไว้ในหน้าทรัพยากร Robojaxหรือจาก GitHub (ในวิดีโอที่ 06:16)
ในการติดตั้ง ให้ดาวน์โหลดไลบรารีเป็นไฟล์ ZIP จากนั้นใน Arduino IDE ของคุณไปที่ Sketch > Include Library > Add .ZIP Library... และเลือกไฟล์ที่ดาวน์โหลดมา (ในวิดีโอที่ 06:41)
การค้นหาที่อยู่ I2C ของ LCD ของคุณ
ก่อนอัปโหลดโค้ดหลัก สิ่งสำคัญคือต้องกำหนดที่อยู่ I2C ของโมดูล LCD เฉพาะของคุณ ที่อยู่นี้อาจแตกต่างกันไปตามผู้ผลิต วิดีโอสาธิตวิธีใช้เครื่องสแกน I2C เพื่อค้นหา (ในวิดีโอที่ 08:11)
คุณสามารถหาเครื่องสแกนนี้ได้โดยไปที่ File > Examples > Wire > i2c_scanner อัปโหลดโค้ดนี้ไปยัง Arduino ของคุณโดยเชื่อมต่อ LCD ไว้ แล้วเปิด Serial Monitor โค้ดจะแสดงที่อยู่ ซึ่งมักจะเป็น 0x27 หรือ 0x3F คุณจะต้องใช้ที่อยู่นี้ในโค้ดหลักของคุณ
คำอธิบายโค้ด
โค้ดสำหรับโปรเจกต์นี้เน้นที่การอ่านค่าแอนะล็อกและการจัดรูปแบบเพื่อแสดงผล มาดูส่วนสำคัญที่ผู้ใช้สามารถกำหนดค่าได้
1. การรวมไลบรารีและออบเจกต์ LCD
ส่วนนี้รวมไลบรารีที่จำเป็นและสร้างออบเจกต์สำหรับ LCD ของคุณ ส่วนที่สำคัญที่สุดคือที่อยู่ I2C ซึ่งคุณต้องเปลี่ยนให้ตรงกับที่อยู่ที่พบในขั้นตอนก่อนหน้า
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// ตั้งค่าที่อยู่ LCD เป็น 0x27 สำหรับจอแสดงผล 16 หรือ 20 ตัวอักษร และ 2 หรือ 4 แถว
LiquidCrystal_I2C lcd(0x27, 16, 2);#include <Wire.h>: ไลบรารีนี้มีอยู่ใน Arduino และจำเป็นสำหรับการสื่อสาร I2C#include <LiquidCrystal_I2C.h>: นี่รวมไลบรารีที่เราเพิ่งติดตั้ง ซึ่งมีฟังก์ชันสำหรับควบคุม LCDLiquidCrystal_I2C lcd(0x27, 16, 2);: บรรทัดนี้สร้างออบเจกต์ชื่อlcdพารามิเตอร์แรก0x27คือที่อยู่ I2C ที่คุณพบก่อนหน้านี้ พารามิเตอร์ที่สองและสามกำหนดขนาดของ LCD: 16 คอลัมน์และ 2 แถว คุณต้องเปลี่ยน0x27เป็นที่อยู่เฉพาะของคุณหากแตกต่างออกไป
2. ฟังก์ชัน 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 ซึ่งเชื่อมต่อกับขาปรับของโพเทนชิโอมิเตอร์ ค่าจะเป็นจำนวนเต็มระหว่าง 0 ถึง 1023 แทนแรงดันไฟฟ้าตั้งแต่ 0V ถึง 5Vfloat voltage = potValue * (5.0 / 1023.0);: นี่คือขั้นตอนการแปลงที่สำคัญ แปลงค่า ADC ดิบเป็นค่าแรงดันไฟฟ้าจริง สูตรคูณค่าดิบด้วยอัตราส่วนของแรงดันอ้างอิง (5.0V) ต่อค่า ADC สูงสุด (1023) จำเป็นเพราะ ADC ไม่ได้อ่านแรงดันไฟฟ้าโดยตรง แต่อ่านค่าตัวเลขตามสัดส่วน
3. การแสดงแรงดันไฟฟ้า
โค้ดจะล้างหน้าจอและพิมพ์ค่าแรงดันไฟฟ้าที่ตำแหน่งเฉพาะบนบรรทัดที่สอง
lcd.clear();
lcd.print("LCD1602 Tutorial");
lcd.setCursor (0,1); // ไปที่จุดเริ่มต้นของบรรทัดที่ 2
lcd.print("Voltage:");
lcd.setCursor (9,1); // ตั้งค่าที่บรรทัด 2 อักขระที่ 9
lcd.print(voltage);
lcd.setCursor (13,1); // ตั้งค่าที่บรรทัด 2 อักขระที่ 14
lcd.print("V");
lcd.clear(): ล้างข้อความก่อนหน้าจากหน้าจอlcd.print("LCD1602 Tutorial"): พิมพ์ชื่อเรื่องบนบรรทัดแรกlcd.setCursor (0,1): ตั้งเคอร์เซอร์ที่จุดเริ่มต้นของบรรทัดที่สอง พารามิเตอร์แรกคือคอลัมน์ (0-15) และพารามิเตอร์ที่สองคือแถว (0 สำหรับบรรทัดแรก, 1 สำหรับบรรทัดที่สอง)lcd.print(voltage): พิมพ์ค่าแรงดันไฟฟ้าที่คำนวณได้ ตัวแปรfloatจะถูกพิมพ์ด้วยทศนิยมสองตำแหน่งโดยค่าเริ่มต้นlcd.setCursor (13,1): ย้ายเคอร์เซอร์ไปที่คอลัมน์ 13 บนบรรทัดที่สองเพื่อวางอักขระ "V" หลังตัวเลขทันที
การสาธิตโปรเจกต์สด
เมื่อคุณอัปโหลดโค้ดแล้ว LCD ควรแสดง "LCD1602 Tutorial" บนบรรทัดแรก บนบรรทัดที่สองจะแสดง "Voltage:" ตามด้วยค่าแรงดันไฟฟ้าปัจจุบัน เมื่อคุณหมุนปุ่มของโพเทนชิโอมิเตอร์ คุณจะเห็นค่าแรงดันไฟฟ้าที่แสดงเปลี่ยนแปลงแบบเรียลไทม์ ตั้งแต่ประมาณ 0.00V ถึง 5.00V (ในวิดีโอที่ 35:25)
โปรเจกต์นี้เป็นตัวอย่างที่สมบูรณ์แบบของวิธีการรับสัญญาณแอนะล็อกดิบและแปลงเป็นค่าที่ชัดเจนและอ่านง่ายสำหรับมนุษย์ ทักษะที่คุณเรียนรู้ที่นี่สามารถนำไปใช้โดยตรงกับเซนเซอร์แอนะล็อกอื่นๆ ที่คุณอาจใช้ในอนาคต
วิดีโอยังครอบคลุมหัวข้ออื่นๆ ที่เกี่ยวข้อง เช่น การแสดงข้อความ การเลื่อน และการสร้างอักขระที่กำหนดเองบน LCD
โปรเจกต์ที่เกี่ยวข้องจากวิดีโอนี้
- บทเรียน 20/31: การใช้ LCD1602 กับ Arduino แสดงข้อความ | Robojax
- บทเรียน 20/31: การแสดงอุณหภูมิและความชื้นจาก DHT11 บนหน้าจอ LCD
บทต่างๆ
- [00:00] แนะนำ LCD1602 และภาพรวมโปรเจกต์
- [01:30] อธิบายฮาร์ดแวร์ LCD1602 และโมดูล I2C
- [04:06] การตั้งค่าที่อยู่ I2C ด้วยจัมเปอร์
- [05:28] แผนผังการเดินสายไฟสำหรับ LCD1602
- [07:31] อธิบายโค้ดสำหรับการแสดงข้อความพื้นฐาน
- [11:10] สาธิตตัวอย่างเคอร์เซอร์กระพริบ
- [13:46] การสร้างและใช้อักขระที่กำหนดเอง
- [18:51] การใช้ตัวอย่างการแสดงผลแบบอนุกรม
- [23:16] การเลื่อนข้อความบน LCD
- [26:13] การแสดงอุณหภูมิและความชื้นจาก DHT11
- [33:00] การอ่านและแสดงแรงดันไฟฟ้าจากโพเทนชิโอมิเตอร์
- [35:56] การแสดงระยะทางจากเซนเซอร์อัลตราโซนิก
This code has not been parsed yet. Please return to the admin panel to parse it.
สิ่งที่คุณอาจต้องการ
-
อเมซอนSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
อเมซอน
-
อเมซอน
-
อเมซอน
-
อเมซอน
แหล่งข้อมูลและเอกสารอ้างอิง
-
เอกสารDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
ภายนอกPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
ไฟล์📁
ไลบรารี Arduino (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
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