บทเรียน 20/31: การใช้ LCD1602 กับ Arduino แสดงข้อความ | Robojax
บทนำ
LCD1602 เป็นจอแสดงผลตัวอักษรและตัวเลขที่ได้รับความนิยมมากที่สุดตัวหนึ่งสำหรับโปรเจกต์ Arduino และเมื่อจับคู่กับโมดูล I2C แล้ว ก็จะใช้งานได้ง่ายอย่างเหลือเชื่อ ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีแสดงข้อความ ตัวเลข และอักขระที่กำหนดเอง รวมถึงวิธีเลื่อนข้อความบนหน้าจอ เราจะแสดงวิธีรวม LCD เข้ากับเซนเซอร์อื่นๆ เพื่อสร้างเครื่องมือตรวจสอบที่ใช้งานได้จริงด้วย คู่มือนี้เป็นส่วนหนึ่งของคอร์สเรียน Arduino ที่ครอบคลุม และออกแบบมาเพื่อช่วยให้คุณสร้างอุปกรณ์ที่มีประโยชน์สำหรับบ้าน โรงเรียน หรือเวิร์กช็อปของคุณ
ต่อไปนี้คือแนวคิดเชิงปฏิบัติบางประการเกี่ยวกับสิ่งที่คุณสามารถสร้างได้จากความรู้นี้:
- เครื่องตรวจวัดอุณหภูมิและความชื้นสำหรับเรือนกระจกหรือกรงสัตว์เลื้อยคลาน
- โวลต์มิเตอร์อย่างง่ายสำหรับตรวจสอบระดับแบตเตอรี่ในโปรเจกต์ของคุณ
- เซนเซอร์วัดระยะทางสำหรับผู้ช่วยจอดรถ หรือถังขยะอัจฉริยะที่แสดงระดับความเต็มของถัง
ภาพรวมฮาร์ดแวร์
LCD1602 เป็นจอแสดงผลขนาด 16 ตัวอักษร 2 บรรทัด โมดูลที่อยู่ด้านหลังคืออะแดปเตอร์ I2C (หรือ I²C) ซึ่งช่วยลดจำนวนสายไฟที่ต้องใช้จากการเชื่อมต่อแบบขนานมาตรฐานเหลือเพียงสี่เส้นเท่านั้น ได้แก่ Ground, VCC, SDA และ SCL ซึ่งทำให้การเดินสายไฟง่ายขึ้นมากและช่วยลดการใช้พินดิจิทัลบน Arduino ของคุณ
จอแสดงผลมีไฟแบ็คไลท์ ซึ่งสามารถเปิดหรือปิดได้ผ่านซอฟต์แวร์ นอกจากนี้ยังมีโพเทนชิโอมิเตอร์ขนาดเล็กบนโมดูล I2C สำหรับปรับความคมชัดของจอ หากคุณเปิดจอแสดงผลแล้วไม่เห็นอะไรเลย เพียงหมุนสกรูนี้จนกว่าข้อความจะมองเห็นได้ (ในวิดีโอที่ 02:47)
จอแสดงผลนี้มีหลายรุ่น เช่น LCD2004 ซึ่งมี 20 ตัวอักษรและ 4 บรรทัด ที่อยู่ I2C ยังสามารถเปลี่ยนได้โดยการบัดกรีจัมเปอร์ A0, A1 และ A2 บนโมดูล (ในวิดีโอที่ 03:51) ที่อยู่เริ่มต้นมักเป็น 0x27 แต่ก็อาจแตกต่างกันได้ ดังนั้นจึงเป็นความคิดที่ดีเสมอที่จะรันตัวสแกน I2C เพื่อหาที่อยู่ที่ถูกต้องสำหรับโมดูลเฉพาะของคุณ
ชิ้นส่วนฮาร์ดแวร์
เพื่อทำตามการสาธิตหลักในวิดีโอนี้ คุณจะต้องมีชิ้นส่วนต่อไปนี้:
- Arduino Uno (หรือบอร์ดที่เข้ากันได้อื่นๆ)
- LCD1602 พร้อมโมดูล I2C
- เบรดบอร์ดและสายจัมเปอร์
สำหรับส่วนถัดไป คุณจะต้องมีเซนเซอร์ DHT11 โพเทนชิโอมิเตอร์ หรือเซนเซอร์อัลตราโซนิก ขึ้นอยู่กับโปรเจกต์ที่คุณต้องการสร้าง
คู่มือการเดินสายไฟ
การเชื่อมต่อ LCD เป็นเรื่องง่าย แผนภาพการเดินสายไฟแสดงการเชื่อมต่ออย่างชัดเจน
เชื่อมต่อพินบนโมดูล I2C เข้ากับ Arduino ของคุณดังนี้:
- GND ไปยัง GND ของ Arduino
- VCC ไปยัง 5V ของ Arduino
- SDA ไปยัง A4 ของ Arduino
- SCL ไปยัง A5 ของ Arduino
หากบอร์ด Arduino ของคุณมีพิน SDA และ SCL โดยเฉพาะ คุณสามารถเชื่อมต่อกับพินเหล่านั้นได้เช่นกัน (ในวิดีโอที่ 05:47)
การติดตั้งไลบรารี
โมดูลนี้ต้องใช้ไลบรารี "Arduino Liquid Crystal I2C" คุณสามารถดาวน์โหลดได้จากลิงก์ที่ให้ไว้ในคำอธิบายวิดีโอหรือจากเว็บไซต์ Robojax เมื่อดาวน์โหลดแล้ว ให้ติดตั้งใน Arduino IDE ของคุณโดยไปที่ Sketch > Include Library > Add .ZIP Library และเลือกไฟล์ที่ดาวน์โหลดมา (ในวิดีโอที่ 06:41)
คำอธิบายโค้ด
เนื่องจากไม่มีตัวอย่างโค้ดให้ เราจะอธิบายโครงสร้างทั่วไปของโค้ดที่ใช้ในวิดีโอ
โค้ดเริ่มต้นด้วยการรวมไลบรารีที่จำเป็น: Wire.h สำหรับการสื่อสาร I2C และไลบรารี LiquidCrystal_I2C.h สำหรับจอแสดงผล ส่วนสำคัญคือการสร้างออบเจกต์สำหรับ LCD คุณจะต้องตั้งค่าที่อยู่ I2C ที่ถูกต้องและขนาดของจอแสดงผลของคุณ:
// ตั้งค่าที่อยู่ LCD เป็น 0x27 สำหรับจอแสดงผล 16 ตัวอักษรและ 2 บรรทัด
LiquidCrystal_I2C lcd(0x27, 16, 2);
หากจอแสดงผลของคุณไม่แสดงอะไรเลย คุณอาจต้องเปลี่ยน 0x27 เป็น 0x3F หรือที่อยู่อื่นที่พบโดยตัวสแกน I2C ของคุณ ตัวเลข 16 และ 2 แทนจำนวนคอลัมน์และแถวบนจอแสดงผลของคุณ
ในฟังก์ชัน setup() คุณจะเริ่มต้น LCD และเปิดไฟแบ็คไลท์:
void setup() {
lcd.init();
lcd.backlight();
}
ในการพิมพ์ข้อความ คุณใช้ฟังก์ชัน lcd.setCursor(column, row) เพื่อวางตำแหน่งเคอร์เซอร์ จากนั้นใช้ lcd.print() เพื่อแสดงข้อมูลของคุณ ตัวอย่างเช่น หากต้องการพิมพ์บนบรรทัดที่สอง คุณจะใช้ lcd.setCursor(0, 1) วิดีโอยังอธิบายวิธีพิมพ์อักขระพิเศษ เช่น สัญลักษณ์องศา โดยใช้ lcd.write(223) (ในวิดีโอที่ 31:42)
การสาธิต
วิดีโอสาธิตคุณสมบัติหลักหลายประการของ LCD ขั้นแรก จะแสดงการพิมพ์ข้อความพื้นฐาน "Hello World" และวิธีใช้ฟังก์ชัน lcd.scrollDisplayLeft() เพื่อเลื่อนข้อความบนหน้าจอ ต่อมา จะรวม LCD เข้ากับเซนเซอร์ DHT11 เพื่อแสดงอุณหภูมิและความชื้น ใช้โพเทนชิโอมิเตอร์เพื่อแสดงแรงดันไฟฟ้า และใช้เซนเซอร์อัลตราโซนิกเพื่อแสดงระยะทาง
สำหรับการแสดงอุณหภูมิ โค้ดจะอ่านค่าจากเซนเซอร์และพิมพ์ค่า หากต้องการแสดงตัวเลขเต็มโดยไม่มีทศนิยม คุณสามารถแปลงค่าทศนิยมเป็นจำนวนเต็มได้ ดังที่แสดงในวิดีโอ (ในวิดีโอที่ 32:21)
สำหรับโวลต์มิเตอร์ โค้ดจะอ่านค่าแอนะล็อกจากโพเทนชิโอมิเตอร์ ปรับสเกลให้เป็นช่วงแรงดันไฟฟ้า 0-5V และแสดงผลบนหน้าจอ (ในวิดีโอที่ 34:31)
การสาธิตสุดท้ายเป็นการรวมจอ LCD เข้ากับเซนเซอร์อัลตราโซนิกเพื่อแสดงระยะทางที่วัดได้เป็นเซนติเมตร (ในวิดีโอที่ 37:55)
โปรเจกต์ที่เกี่ยวข้องจากวิดีโอนี้
วิดีโอนี้ยังมีบทเรียนโปรเจกต์อื่นๆ อีก คุณสามารถหาได้ที่นี่:
- บทเรียนที่ 20/31: การแสดงอุณหภูมิและความชื้นจาก DHT11 บนจอ LCD
- บทเรียนที่ 20/31: การแสดงแรงดันไฟฟ้าบน LCD1602
บทต่างๆ
- [00:00] แนะนำ LCD1602 และภาพรวมของคอร์ส
- [01:30] ภาพรวมฮาร์ดแวร์ของ LCD1602 และโมดูล I2C
- [02:47] การปรับคอนทราสต์และไฟแบ็คไลท์ของจอแสดงผล
- [03:14] การเชื่อมต่อพินและการเลือกที่อยู่ I2C
- [05:28] แผนผังการเดินสายไฟสำหรับจอ LCD
- [06:16] การติดตั้งไลบรารีที่จำเป็น
- [07:24] โค้ดพื้นฐานสำหรับการพิมพ์ข้อความ
- [11:10] ตัวอย่างเคอร์เซอร์กระพริบ
- [13:46] อักขระที่กำหนดเองและการพิมพ์สัญลักษณ์พิเศษ
- [18:51] ตัวอย่างการแสดงผลแบบอนุกรม
- [23:16] การเลื่อนข้อความบนจอ LCD
- [36:51] การรวมจอ LCD เข้ากับเซนเซอร์อัลตราโซนิก
/*
Lesson 20/31: Displaying text on LCD screen
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 is code for LCD1602 Display with I2C module
* watch the video for this code https://youtu.be/q9YC_GVHy5A
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purpose only.
* This library is based on work done by DFROBOT (www.dfrobot.com).
*/
/*
* This code has been modefied from the Arduino library
* Updated by Ahmad Nejrabi on Jan 20, 2018 at 11:09
* in Ajax, Ontario, Canada
* for Robojax.com
*
* This is code for LCD1602 Display with I2C module
* which can display text on the screen.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
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()
{
lcd.clear();
lcd.setCursor (0,0);
lcd.print("SunFounder ");
lcd.setCursor (0,1);
lcd.write(244);
delay(500);
//end of loopcode Robojax code for LCD with I2C
}
Common Course Links
Common Course Files
สิ่งที่คุณอาจต้องการ
-
อเมซอนBuy LCD1602-I2C from Amazonamzn.to
-
อเมซอนSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
อเมซอน
-
อเมซอน
-
อเมซอน
-
อเมซอน
-
อีเบย์Purchase LCD1602-I2C from eBayebay.us
-
อาลีเอ็กซ์เพรสPurchase 10pcs LCD1602-I2C from AliExpresss.click.aliexpress.com
แหล่งข้อมูลและเอกสารอ้างอิง
-
เอกสารDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
ภายนอกLCD library from RoboJax (ZIP)robojax.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