วิธีเชื่อมต่อ 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 เดียวกัน!

การ Solder-Bridge Address I2C ทางกายภาพ (PCF8574)
ขา SDA และ SCL แบบดิบสามารถเชื่อมต่อแบบขนานเข้ากับจอทั้งสองได้อย่างปลอดภัยสมบูรณ์! ปัญหาคือแค่ ID Code
- ชิปขยาย PCF8574 สีดำที่ติดตั้งอยู่ด้านหลังของ LCD มีแผ่นทองแดงขนาดเล็กจิ๋วสามแผ่นที่กำกับว่า
A0, A1, A2 - โดยค่าเริ่มต้น แผ่นเหล่านี้จะถูกตัดการเชื่อมต่อ (
Open = Address 0x27) - หากต้องการเปลี่ยน ID ของจอที่สองให้ไม่ซ้ำกัน ให้ใช้หัวแร้งและทำการ bridge ด้วยก้อนตะกั่วบัดกรีขนาดใหญ่บน pad
A0บนจอแสดงผลเพียงจอเดียว! - ทันทีที่บูต จอ 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, A2permutations) บนจอ 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ได้สำเร็จหรือไม่!)