ค้นหาโค้ด

บทเรียน 20/31: การแสดงแรงดันไฟฟ้าบน LCD1602

บทเรียน 20/31: การแสดงแรงดันไฟฟ้าบน LCD1602

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

LCD_sunFounder

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

  • สร้างเครื่องตรวจวัดแรงดันแบตเตอรี่แบบพกพาสำหรับโปรเจกต์ของคุณ
  • สร้างแหล่งจ่ายไฟอย่างง่ายพร้อมการแสดงค่าแรงดันไฟฟ้าแบบเห็นภาพ
  • ตรวจสอบเอาต์พุตของแผงโซลาร์เซลล์หรือแหล่งจ่ายแรงดันไฟฟ้าที่แปรผันอื่นๆ
  • แสดงค่าจากเซนเซอร์แอนะล็อกใดๆ เช่น ตัวต้านทานที่ไวต่อแสง (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 ของคุณสามารถพูดคุยกับอุปกรณ์หลายตัวโดยใช้เพียงสองสาย นี่เป็นทักษะพื้นฐานสำหรับการเชื่อมต่อเซนเซอร์และจอแสดงผลหลายประเภท

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

LCD1602_pot_wiring

การเชื่อมต่อ 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>: นี่รวมไลบรารีที่เราเพิ่งติดตั้ง ซึ่งมีฟังก์ชันสำหรับควบคุม LCD
  • LiquidCrystal_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 ถึง 5V
  • float 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

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

บทต่างๆ

  • [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] การแสดงระยะทางจากเซนเซอร์อัลตราโซนิก

ภาพ

potentiometer
potentiometer
LCD1602_pot_wiring
LCD1602_pot_wiring
LCD_sunFounder
LCD_sunFounder
912-Lesson 20/31: Displaying voltage on LCD1602
ภาษา: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

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

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

ไฟล์📁

ไลบรารี Arduino (zip)

คู่มือผู้ใช้