ค้นหาโค้ด

บทเรียน 20/31: การใช้ LCD1602 กับ Arduino แสดงข้อความ | Robojax

บทเรียนนี้เป็นส่วนหนึ่งของ: หลักสูตร Arduino ที่ใช้ชุดการเรียนรู้ 3-in-1 ของ SunFounder

บทเรียน 20/31: การใช้ LCD1602 กับ Arduino แสดงข้อความ | Robojax

บทนำ

LCD1602 เป็นจอแสดงผลตัวอักษรและตัวเลขที่ได้รับความนิยมมากที่สุดตัวหนึ่งสำหรับโปรเจกต์ Arduino และเมื่อจับคู่กับโมดูล I2C แล้ว ก็จะใช้งานได้ง่ายอย่างเหลือเชื่อ ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีแสดงข้อความ ตัวเลข และอักขระที่กำหนดเอง รวมถึงวิธีเลื่อนข้อความบนหน้าจอ เราจะแสดงวิธีรวม LCD เข้ากับเซนเซอร์อื่นๆ เพื่อสร้างเครื่องมือตรวจสอบที่ใช้งานได้จริงด้วย คู่มือนี้เป็นส่วนหนึ่งของคอร์สเรียน Arduino ที่ครอบคลุม และออกแบบมาเพื่อช่วยให้คุณสร้างอุปกรณ์ที่มีประโยชน์สำหรับบ้าน โรงเรียน หรือเวิร์กช็อปของคุณ

screenshot-2

ต่อไปนี้คือแนวคิดเชิงปฏิบัติบางประการเกี่ยวกับสิ่งที่คุณสามารถสร้างได้จากความรู้นี้:

  • เครื่องตรวจวัดอุณหภูมิและความชื้นสำหรับเรือนกระจกหรือกรงสัตว์เลื้อยคลาน
  • โวลต์มิเตอร์อย่างง่ายสำหรับตรวจสอบระดับแบตเตอรี่ในโปรเจกต์ของคุณ
  • เซนเซอร์วัดระยะทางสำหรับผู้ช่วยจอดรถ หรือถังขยะอัจฉริยะที่แสดงระดับความเต็มของถัง

ภาพรวมฮาร์ดแวร์

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 โพเทนชิโอมิเตอร์ หรือเซนเซอร์อัลตราโซนิก ขึ้นอยู่กับโปรเจกต์ที่คุณต้องการสร้าง

คู่มือการเดินสายไฟ

lcd1602_I2C_wiring_sunfounder

การเชื่อมต่อ 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)

โปรเจกต์ที่เกี่ยวข้องจากวิดีโอนี้

วิดีโอนี้ยังมีบทเรียนโปรเจกต์อื่นๆ อีก คุณสามารถหาได้ที่นี่:

บทต่างๆ

  • [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 เข้ากับเซนเซอร์อัลตราโซนิก

ภาพ

LCD1602_wiring_DHT11_bb
LCD1602_wiring_DHT11_bb
LCD1602_wiring_DHT11_nopcb_bb
LCD1602_wiring_DHT11_nopcb_bb
LCD1602 displaying voltage and title
LCD1602 displaying voltage and title
screenshot-2
screenshot-2
lcd1602_I2C_wiring_sunfounder
lcd1602_I2C_wiring_sunfounder
910-Lesson 20/31: Displaying simple text on LCD1602
ภาษา: C++
/*
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
}

สิ่งที่คุณอาจต้องการ

แหล่งข้อมูลและเอกสารอ้างอิง

ไฟล์📁

ไลบรารี Arduino (zip)