CD74HC4067 เป็นแบบอะนาล็อก/มัลติเพล็กเซอร์/demultiplexer ดิจิตอล 16 ช่องที่ช่วยให้คุณสามารถขยายจำนวนอินพุตหรือพินเอาท์พุทบน Arduino ของคุณ มันมีประโยชน์อย่างยิ่งในโครงการที่ต้องใช้เซ็นเซอร์ปุ่มหรือ LED หลายตัวในขณะที่ลดการใช้ PIN ให้น้อยที่สุด บทช่วยสอนนี้จะแนะนำคุณผ่านการเชื่อมต่อและใช้ CD74HC4067 กับ Arduino
สิ่งที่คุณต้องการ
- CD74HC4067 โมดูล Multiplexer หรือ IC
- คณะกรรมการ Arduino (เช่น Uno, Mega, Nano)
- เซ็นเซอร์ปุ่มหรือไฟ LED สำหรับการทดสอบ
- เครื่องหั่นขนมปังและสายจัมเปอร์
- คอมพิวเตอร์ที่ติดตั้ง Arduino IDE
ขั้นตอนที่ 1: ทำความเข้าใจกับ CD74HC4067
CD74HC4067 ทำหน้าที่เป็นสวิตช์ที่เชื่อมต่อหนึ่งใน 16 อินพุต/เอาต์พุตพินกับพินทั่วไปเดียว คุณสามารถควบคุมช่องที่ใช้งานได้โดยใช้ 4 หมุดควบคุม (S0 ถึง S3)
ปัก
เข็มหมุด | การทำงาน |
---|---|
VCC | แหล่งจ่ายไฟ (3.3V หรือ 5V) |
gnd | พื้น |
S0, S1, S2, S3 | หมุดควบคุม (เพื่อเลือกช่องที่ใช้งานอยู่) |
en | เปิดใช้งาน PIN (Active Low; เชื่อมต่อกับ GND เพื่อเปิดใช้งาน) |
com | I/O PIN ทั่วไป (เชื่อมต่อกับ Arduino) |
CH0-CH15 | ช่อง 0 ถึง 15 (เชื่อมต่อกับเซ็นเซอร์ปุ่มหรือไฟ LED) |
ขั้นตอนที่ 2: เดินสาย CD74HC4067 ถึง Arduino
นี่คือวิธีเชื่อมต่อ CD74HC4067 กับ Arduino UNO:
CD74HC4067 PIN | พิน Arduino |
---|---|
VCC | 5V |
gnd | gnd |
S0 | พิน 8 |
S1 | พิน 9 |
S2 | พิน 10 |
S3 | พิน 11 |
en | gnd |
com | A0 (สำหรับการอ่านสัญญาณอะนาล็อก) |
CH0-CH15 | เซ็นเซอร์ไฟ LED หรือปุ่ม |
ขั้นตอนที่ 3: อัปโหลดรหัส
ตัวอย่างต่อไปนี้แสดงวิธีอ่านค่าอะนาล็อกจากเซ็นเซอร์ที่เชื่อมต่อกับ CD74HC4067:
รหัสตัวอย่าง
const int s0 = 8; // Control pin S0
const int s1 = 9; // Control pin S1
const int s2 = 10; // Control pin S2
const int s3 = 11; // Control pin S3
const int comPin = A0; // Common pin connected to A0
void setup() {
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
Serial.begin(9600);
}
void loop() {
for (int i = 0; i < 16; i++) {
selectChannel(i); // Select the active channel
int sensorValue = analogRead(comPin); // Read the value from the sensor
Serial.print("Channel ");
Serial.print(i);
Serial.print(": ");
Serial.println(sensorValue);
delay(500); // Small delay for readability
}
}
void selectChannel(int channel) {
digitalWrite(s0, channel & 0x01); // Set S0
digitalWrite(s1, (channel >> 1) & 0x01); // Set S1
digitalWrite(s2, (channel >> 2) & 0x01); // Set S2
digitalWrite(s3, (channel >> 3) & 0x01); // Set S3
}
ขั้นตอนที่ 4: ทดสอบการตั้งค่า
- เชื่อมต่อ Arduino กับคอมพิวเตอร์ของคุณผ่าน USB
- เปิด Arduino IDE และเลือกที่ถูกต้อง กระดาน และ ท่าเรือ ภายใต้ เครื่องมือ เมนู.
- อัปโหลดรหัสโดยคลิก อัพโหลด.
- เปิดมอนิเตอร์อนุกรม (เครื่องมือ > จอภาพอนุกรม) และตั้งค่าอัตราการรับส่งข้อมูลเป็น
9600
. - สังเกตค่าอะนาล็อกสำหรับแต่ละช่องที่แสดงในจอภาพอนุกรม
ตัวเลือก: การควบคุมไฟ LED
ในการควบคุมไฟ LED ที่เชื่อมต่อกับช่องให้แก้ไขรหัสเป็นสัญญาณดิจิตอลเอาต์พุตแทนการอ่านอินพุตแบบอะนาล็อก ตัวอย่างเช่น:
รหัสตัวอย่างสำหรับ LED
void loop() {
for (int i = 0; i < 16; i++) {
selectChannel(i);
digitalWrite(comPin, HIGH); // Turn on LED on the active channel
delay(500);
digitalWrite(comPin, LOW); // Turn off LED
}
}
แอปพลิเคชันของ CD74HC4067
- การขยายอินพุต/เอาต์พุตแบบอะนาล็อกและดิจิตอล
- การอ่านเซ็นเซอร์หลายตัวที่มีพิน จำกัด
- การสร้างเมทริกซ์ปุ่มขนาดใหญ่
- การควบคุม LED หรือรีเลย์หลายตัว
การแก้ไขปัญหา
-
ไม่มีการตอบสนองจากช่อง: ตรวจสอบการเชื่อมต่อพินควบคุมและตรวจสอบให้แน่ใจว่าไฟล์
EN
PIN เชื่อมต่อกับ GND -
การเลือกช่องที่ไม่ถูกต้อง: ตรวจสอบ
selectChannel()
ตรรกะสำหรับการตั้งค่าพิน S0-S3 - การอ่านที่ไม่แน่นอน: ตรวจสอบให้แน่ใจว่ามีการต่อสายดินที่เหมาะสมและแหล่งจ่ายไฟที่เสถียรสำหรับเซ็นเซอร์
บทสรุป
คุณสามารถเชื่อมต่อ Multiplexer CD74HC4067 ได้สำเร็จกับ Arduino โมดูลอเนกประสงค์นี้ช่วยให้คุณสามารถขยายความสามารถในการป้อนข้อมูลและเอาต์พุตของ Arduino อย่างมีนัยสำคัญทำให้เหมาะสำหรับโครงการที่เกี่ยวข้องกับเซ็นเซอร์ปุ่มหรือ LED หลายรายการ ทดลองกับการกำหนดค่าที่แตกต่างกันและสำรวจศักยภาพอย่างเต็มที่!