วิธีใช้ Multiplexer CD74HC4067 กับ Arduino

How to Use the CD74HC4067 Multiplexer with Arduino

CD74HC4067 เป็นแบบอะนาล็อก/มัลติเพล็กเซอร์/demultiplexer ดิจิตอล 16 ช่องที่ช่วยให้คุณสามารถขยายจำนวนอินพุตหรือพินเอาท์พุทบน Arduino ของคุณ มันมีประโยชน์อย่างยิ่งในโครงการที่ต้องใช้เซ็นเซอร์ปุ่มหรือ LED หลายตัวในขณะที่ลดการใช้ PIN ให้น้อยที่สุด บทช่วยสอนนี้จะแนะนำคุณผ่านการเชื่อมต่อและใช้ CD74HC4067 กับ Arduino


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

  1. CD74HC4067 โมดูล Multiplexer หรือ IC
  2. คณะกรรมการ Arduino (เช่น Uno, Mega, Nano)
  3. เซ็นเซอร์ปุ่มหรือไฟ LED สำหรับการทดสอบ
  4. เครื่องหั่นขนมปังและสายจัมเปอร์
  5. คอมพิวเตอร์ที่ติดตั้ง 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: ทดสอบการตั้งค่า

  1. เชื่อมต่อ Arduino กับคอมพิวเตอร์ของคุณผ่าน USB
  2. เปิด Arduino IDE และเลือกที่ถูกต้อง กระดาน และ ท่าเรือ ภายใต้ เครื่องมือ เมนู.
  3. อัปโหลดรหัสโดยคลิก อัพโหลด.
  4. เปิดมอนิเตอร์อนุกรม (เครื่องมือ > จอภาพอนุกรม) และตั้งค่าอัตราการรับส่งข้อมูลเป็น 9600.
  5. สังเกตค่าอะนาล็อกสำหรับแต่ละช่องที่แสดงในจอภาพอนุกรม

ตัวเลือก: การควบคุมไฟ 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

  1. การขยายอินพุต/เอาต์พุตแบบอะนาล็อกและดิจิตอล
  2. การอ่านเซ็นเซอร์หลายตัวที่มีพิน จำกัด
  3. การสร้างเมทริกซ์ปุ่มขนาดใหญ่
  4. การควบคุม LED หรือรีเลย์หลายตัว

การแก้ไขปัญหา

  • ไม่มีการตอบสนองจากช่อง: ตรวจสอบการเชื่อมต่อพินควบคุมและตรวจสอบให้แน่ใจว่าไฟล์ EN PIN เชื่อมต่อกับ GND
  • การเลือกช่องที่ไม่ถูกต้อง: ตรวจสอบ selectChannel() ตรรกะสำหรับการตั้งค่าพิน S0-S3
  • การอ่านที่ไม่แน่นอน: ตรวจสอบให้แน่ใจว่ามีการต่อสายดินที่เหมาะสมและแหล่งจ่ายไฟที่เสถียรสำหรับเซ็นเซอร์

บทสรุป

คุณสามารถเชื่อมต่อ Multiplexer CD74HC4067 ได้สำเร็จกับ Arduino โมดูลอเนกประสงค์นี้ช่วยให้คุณสามารถขยายความสามารถในการป้อนข้อมูลและเอาต์พุตของ Arduino อย่างมีนัยสำคัญทำให้เหมาะสำหรับโครงการที่เกี่ยวข้องกับเซ็นเซอร์ปุ่มหรือ LED หลายรายการ ทดลองกับการกำหนดค่าที่แตกต่างกันและสำรวจศักยภาพอย่างเต็มที่!

แสดงความคิดเห็น

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.