ค้นหาโค้ด

บทเรียน 20/31: การแสดงระยะทางอัลตราโซนิกบน LCD1602

บทเรียน 20/31: การแสดงระยะทางอัลตราโซนิกบน LCD1602

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

Sunfounder 20-LCD1602-ultrasonic

การตั้งค่านี้สามารถนำไปใช้ในงานจริงได้หลากหลายประเภท เช่น:

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

ฮาร์ดแวร์และอุปกรณ์

ในการสร้างโปรเจกต์นี้ คุณจะต้องมีอุปกรณ์ดังต่อไปนี้:

  • บอร์ด Arduino (เช่น Uno)
  • จอแสดงผล LCD1602 พร้อมโมดูลอินเทอร์เฟซ I2C
  • เซนเซอร์วัดระยะอัลตราโซนิก HC-SR04
  • สายจัมเปอร์
  • เบรดบอร์ด (ไม่บังคับ เพื่อความสะดวกในการเชื่อมต่อ)

ทำความเข้าใจ LCD1602 และ I2C

LCD1602 เป็นจอแสดงผลยอดนิยมที่สามารถแสดงตัวอักษรได้ 16 ตัวต่อบรรทัดบนสองบรรทัด โมดูล "I2C" ที่อยู่ด้านหลังเป็นข้อได้เปรียบที่สำคัญเพราะช่วยลดจำนวนพินที่ต้องใช้ในการควบคุมจอแสดงผลจาก 6 พินหรือมากกว่านั้นเหลือเพียง 2 พินสำหรับการสื่อสาร (SDA และ SCL) และ 2 พินสำหรับไฟเลี้ยง (VCC และ GND) การลดความซับซ้อนนี้ทำให้การเดินสายสะอาดขึ้นมากและเพิ่มพินดิจิทัลที่มีค่าของ Arduino ของคุณสำหรับเซนเซอร์อื่น ๆ เช่นเซนเซอร์อัลตราโซนิกที่ใช้ในโปรเจกต์นี้ (ในวิดีโอที่ 01:30)

โมดูล I2C ยังมีโพเทนชิโอมิเตอร์ขนาดเล็กสำหรับปรับความคมชัดของจอแสดงผล หากคุณจ่ายไฟให้จอแล้วไม่เห็นอะไร ให้ลองหมุนสกรูนี้จนกว่าข้อความจะมองเห็นได้ (ในวิดีโอที่ 02:47)

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

LCD1602_wiring_ultrasonic_bb

การเชื่อมต่ออุปกรณ์เป็นเรื่องง่าย โมดูล I2C ของ LCD มีสี่พินที่ต้องเชื่อมต่อกับ Arduino สำหรับเซนเซอร์อัลตราโซนิกก็มีสี่พินเช่นกัน

นี่คือรายละเอียดของการเชื่อมต่อ:

โมดูล I2C ของ LCD1602 ไปยัง Arduino:

  • GND ไปยัง GND ของ Arduino
  • VCC ไปยัง 5V ของ Arduino
  • SDA ไปยัง A4 ของ Arduino
  • SCL ไปยัง A5 ของ Arduino

เซนเซอร์อัลตราโซนิก HC-SR04 ไปยัง Arduino:

  • VCC ไปยัง 5V ของ Arduino
  • Trig ไปยังพินดิจิทัล 12 ของ Arduino
  • Echo ไปยังพินดิจิทัล 11 ของ Arduino
  • GND ไปยัง GND ของ Arduino

แผนภาพการเดินสายสำหรับโปรเจกต์นี้อ้างอิงในวิดีโอ

การติดตั้งไลบรารีที่จำเป็น

โปรเจกต์นี้ต้องพึ่งพาไลบรารีสำคัญสองตัว ไลบรารีแรก LiquidCrystal_I2C จำเป็นสำหรับการควบคุม LCD และไม่ได้มาพร้อมกับ Arduino IDE โดยค่าเริ่มต้น คุณสามารถดาวน์โหลดได้จากลิงก์ที่ให้ไว้ในคำอธิบายวิดีโอหรือจากเว็บไซต์ Robojax (ในวิดีโอที่ 06:16)

ไลบรารีที่สอง NewPing ใช้สำหรับเชื่อมต่อกับเซนเซอร์อัลตราโซนิก ไลบรารีนี้ช่วยลดความซับซ้อนของกระบวนการส่งสัญญาณ ping และอ่านเวลา echo ไลบรารีทั้งสองสามารถติดตั้งได้ผ่านตัวจัดการไลบรารีของ Arduino IDE โดยไปที่ Sketch -> Include Library -> Manage Libraries และค้นหาชื่อของไลบรารี

คำอธิบายโค้ด

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

ที่ด้านบนของโค้ด คุณจะพบตัวแปรสำคัญที่คุณอาจต้องปรับ:

// ตั้งค่าที่อยู่ LCD เป็น 0x27 สำหรับจอแสดงผล 16 ตัวอักษรและ 2 บรรทัด
LiquidCrystal_I2C lcd(0x27, displayChars, displayRows);

#define TRIGGER_PIN  12  // พิน Arduino ที่เชื่อมกับพิน trigger บนเซนเซอร์อัลตราโซนิก
#define ECHO_PIN     11  // พิน Arduino ที่เชื่อมกับพิน echo บนเซนเซอร์อัลตราโซนิก
#define MAX_DISTANCE 190 // ระยะทางสูงสุดที่เราต้องการ ping (เป็นเซนติเมตร)
  • ที่อยู่ LCD (0x27): นี่คือที่อยู่ I2C ของโมดูล LCD ของคุณ โมดูลส่วนใหญ่ใช้ 0x27 แต่บางโมดูลอาจใช้ 0x3F หากจอแสดงผลของคุณไม่แสดงอะไรเลย คุณอาจต้องรันสเก็ตช์สแกน I2C เพื่อหาที่อยู่ที่ถูกต้องและอัปเดตค่านี้ (ในวิดีโอที่ 08:11)
  • TRIGGER_PIN และ ECHO_PIN: ค่าเหล่านี้กำหนดพินดิจิทัลของ Arduino ที่เชื่อมต่อกับพิน Trig และ Echo ของเซนเซอร์อัลตราโซนิก หากคุณใช้พินอื่น ให้เปลี่ยนคำนิยามเหล่านี้
  • MAX_DISTANCE: ค่านี้กำหนดระยะทางสูงสุดเป็นเซนติเมตรที่เซนเซอร์จะวัด HC-SR04 สามารถวัดได้สูงสุดถึง 400-500 ซม. แต่การตั้งค่าที่ต่ำกว่าสามารถปรับปรุงความแม่นยำและความน่าเชื่อถือของการอ่านค่าได้ โดยเฉพาะสำหรับระยะทางที่สั้นกว่า

ในฟังก์ชัน loop() โค้ดจะดำเนินการตามขั้นตอนต่อไปนี้:

  1. ใช้ฟังก์ชัน sonar.ping_cm() เพื่อวัดระยะทางและเก็บค่าไว้ในตัวแปร distance
  2. ล้างหน้าจอ LCD และพิมพ์ข้อความ "Robojax.com" บนบรรทัดแรก
  3. จากนั้นเลื่อนเคอร์เซอร์ไปที่บรรทัดที่สองและพิมพ์ "Distance: "
  4. สุดท้าย เลื่อนเคอร์เซอร์ไปที่ตำแหน่งที่ 10 บนบรรทัดที่สองเพื่อพิมพ์ค่า distance ที่วัดได้ตามด้วย "cm"

คำสั่ง delay(200) ที่ท้ายลูปควบคุมความถี่ที่เซนเซอร์จะอ่านค่าใหม่และอัปเดตหน้าจอ

การสาธิตโค้ด

เมื่ออัปโหลดโค้ดไปยัง Arduino ของคุณแล้ว หน้าจอ LCD จะสว่างขึ้นและเริ่มแสดงระยะทาง คุณสามารถทดสอบการตั้งค่าได้โดยการขยับมือหรือวัตถุให้เข้าใกล้และห่างจากเซนเซอร์อัลตราโซนิก ตัวเลขบนหน้าจอควรอัปเดตแบบเรียลไทม์ โดยแสดงระยะทางเป็นเซนติเมตร (ในวิดีโอที่เวลา 38:07)

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

บทต่างๆ

  • [00:00] แนะนำ LCD1602 และภาพรวมโปรเจกต์
  • [01:30] อธิบายฮาร์ดแวร์ LCD1602 และโมดูล I2C
  • [03:14] การกำหนดขา LCD และการตั้งค่าที่อยู่ I2C
  • [05:28] แผนผังการเดินสายไฟสำหรับ LCD1602
  • [06:16] การติดตั้งไลบรารี LCD ที่จำเป็น
  • [07:24] โค้ดพื้นฐานสำหรับพิมพ์ข้อความบน LCD
  • [08:11] การหาที่อยู่ I2C ของ LCD ของคุณ
  • [11:10] ตัวอย่าง LCD: เคอร์เซอร์กระพริบและอักขระที่กำหนดเอง
  • [18:51] ตัวอย่าง LCD: การแสดงผลแบบอนุกรมและข้อความเลื่อน
  • [24:36] การแสดงอุณหภูมิและความชื้น DHT11 บน LCD
  • [33:00] การแสดงแรงดันไฟฟ้าจากโพเทนชิโอมิเตอร์บน LCD
  • [35:56] การรวมโค้ดเซนเซอร์อัลตราโซนิกเข้ากับ LCD
  • [38:07] การสาธิตการแสดงระยะทางอัลตราโซนิก

ภาพ

Sunfounder car assembled
Sunfounder car assembled
Sunfounder 20-LCD1602-ultrasonic
Sunfounder 20-LCD1602-ultrasonic
LCD1602_wiring_ultrasonic_bb
LCD1602_wiring_ultrasonic_bb
921-Lesson 20/31: Displaying distance from ultrasonic sensor on LCD1602
ภาษา: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

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

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

ไฟล์📁

ไลบรารี Arduino (zip)

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