กลับไปหน้ารวมไฟล์
connect-two-16x2-lcd-displays-i2c-arduino.md

วิธีเชื่อมต่อ 16*2 LCD สองจอเข้ากับ Arduino

I2C Multiplexing: สถาปัตยกรรมจอ Dual 16x2 LCD

หากวิศวกรต้องการข้อมูล telemetry แบบข้อความจำนวนมาก (เช่น การติดตามเกมยานอวกาศ, การแสดงสถิติ 4 แถว) จอ 16x2 LCD เพียงจอเดียวนั้นไม่เพียงพออย่างสิ้นเชิง วิธีแก้ปัญหาที่ชัดเจนอย่างยิ่งคือการซื้อจอแสดงผลอีกจอ! อย่างไรก็ตาม การเชื่อมต่อ LCD สองจอ โดยใช้มาตรฐาน I2C ทั่วไปจะทำให้เกิดปัญหาทันที: จอทั้งสองจะใช้ hardware address (0x27) เดียวกันเป๊ะ เมื่อ Arduino สั่งให้จอแสดงผลพูดว่า "HELLO" จอทั้งสองจะแสดง "HELLO" ทันที คุณต้องทำการปรับเปลี่ยนทางกายภาพบน hardware traces ขนาดเล็กจิ๋วบน I2C backpacks เพื่อสร้าง Addressing Vectors ที่เป็นอิสระบน data bus เดียวกัน!

arduino_memory_game_topview_1772681131358.png

การ Solder-Bridge Address I2C ทางกายภาพ (PCF8574)

ขา SDA และ SCL แบบดิบสามารถเชื่อมต่อแบบขนานเข้ากับจอทั้งสองได้อย่างปลอดภัยสมบูรณ์! ปัญหาคือแค่ ID Code

  1. ชิปขยาย PCF8574 สีดำที่ติดตั้งอยู่ด้านหลังของ LCD มีแผ่นทองแดงขนาดเล็กจิ๋วสามแผ่นที่กำกับว่า A0, A1, A2
  2. โดยค่าเริ่มต้น แผ่นเหล่านี้จะถูกตัดการเชื่อมต่อ (Open = Address 0x27)
  3. หากต้องการเปลี่ยน ID ของจอที่สองให้ไม่ซ้ำกัน ให้ใช้หัวแร้งและทำการ bridge ด้วยก้อนตะกั่วบัดกรีขนาดใหญ่บน pad A0 บนจอแสดงผลเพียงจอเดียว!
  4. ทันทีที่บูต จอ LCD นั้นจะทำการ reconfigure ตัวเองเป็น hardware address 0x26 อย่างสมบูรณ์!
#include <LiquidCrystal_I2C.h>

// Massive dual-initialization logic matrix!
LiquidCrystal_I2C lcd1(0x27, 16, 2); // The untouched default LCD!
LiquidCrystal_I2C lcd2(0x26, 16, 2); // The aggressively soldered modified LCD!

void setup() {
  lcd1.init(); 
  lcd2.init();
  
  lcd1.print("Master Control!");
  lcd2.print("Telemetry Hub!"); // Absolute independent telemetry execution!
}

การกำจัดฝันร้ายของสาย Ribbon Cable แบบ 16 เส้น

ก่อนที่จะมี I2C Backpacks การเชื่อมต่อจอ LCD เปลือยสองจอโดยตรงนั้นต้องใช้สาย ribbon-cable ที่ซับซ้อนถึง 12 เส้น ซึ่งจะทำให้ขา digital pins บน Arduino Uno ถูกใช้ไปมากถึง 10 ขาในทันที

  • ด้วยการใช้โปรโตคอล I2C ทำให้ Arduino ใช้เพียงแค่ Analog 4 (SDA) และ Analog 5 (SCL)!
  • คุณสามารถเชื่อมต่อจอ LCD ได้มากถึง แปด (8) จอเข้ากับสาย data wires สองเส้นเดียวกันนี้พร้อมกัน โดยมีเงื่อนไขว่าคุณจะต้องทำการ solder blob configuration ที่แตกต่างกัน (A0, A1, A2 permutations) บนจอ monitor แต่ละจอที่ไม่ซ้ำกัน!

โครงสร้างพื้นฐานแบบ Dual-Screen ที่ซ้ำซ้อน

  • Arduino Uno/Nano (สำหรับการจัดการ String parsing ที่ซับซ้อนจากส่วนกลาง)
  • จอ 16x2 Character LCD สองจอ ที่ติดตั้ง I2C PCF8574 Backpack Modules สีดำโดยเฉพาะ
  • หัวแร้งปลายแหลม (fine-tipped Soldering Iron) และตะกั่วบัดกรี Rosin-Core (จำเป็นอย่างยิ่งสำหรับการ bridge pad Address 0 ทางกายภาพ!)
  • I2C Scanner Code Array (โค้ดสำหรับ sketch พื้นฐานในการแก้ไขปัญหาที่จะสแกน bus ทั้งหมดเพื่อตรวจสอบอย่างมั่นใจว่า address เปลี่ยนจาก 0x27 เป็น 0x26 ได้สำเร็จหรือไม่!)

ข้อมูล Frontmatter ดั้งเดิม

title: "How to connect two 16*2 LCD together with arduino"
description: "Addressing dual I2C matrices! Solve the critical single-bus conflict by heavily manipulating the microscopic hardware solder-bridges natively on LCD backpack microchips, granting the Arduino unparalleled command over multiple 16x2 text panels synchronously over identical logic wires."
category: "Displays"
difficulty: "Beginner"