CD74HC4067 jest 16-kanałowym multiplekserem/cyfrowym multiplekserem/demultiplekserem, który umożliwia zwiększenie liczby pinów wejściowych lub wyjściowych na Arduino. Jest to szczególnie przydatne w projektach wymagających wielu czujników, przycisków lub diod LED, jednocześnie minimalizując użycie kinowe. Ten samouczek poprowadzi Cię przez połączenie i korzystanie z CD74HC4067 z Arduino.
Czego będziesz potrzebować
- CD74HC4067 Moduł multiplekserowy lub IC
- Arduino Board (np. UNO, Mega, Nano)
- Czujniki, przyciski lub diody LED do testowania
- Druty chleba i skoczków
- Komputer z zainstalowanym Arduino IDE
Krok 1: Zrozumienie CD74HC4067
CD74HC4067 działa jako przełącznik, który łączy jeden z 16 pinów wejściowych/wyjściowych z pojedynczym wspólnym pinem. Możesz kontrolować, który kanał jest aktywny przy użyciu 4 pinów kontrolnych (S0 do S3).
Pinout
Szpilka | Funkcjonować |
---|---|
VCC | Zasilacz (3,3 V lub 5 V) |
GND | Grunt |
S0, S1, S2, S3 | Piny kontrolne (aby wybrać aktywny kanał) |
En | Włącz pin (aktywny niski; podłącz do GND, aby włączyć) |
Com | Wspólny pin we/wy (połącz się z Arduino) |
CH0-CH15 | Kanały od 0 do 15 (podłącz do czujników, przycisków lub diod LED) |
Krok 2: Okablowanie CD74HC4067 do Arduino
Oto jak podłączyć CD74HC4067 z Arduino Uno:
Pin CD74HC4067 | PIN Arduino |
---|---|
VCC | 5v |
GND | GND |
S0 | Pin 8 |
S1 | Pin 9 |
S2 | Pin 10 |
S3 | Pin 11 |
En | GND |
Com | A0 (do czytania sygnałów analogowych) |
CH0-CH15 | Czujniki, diody LED lub przyciski |
Krok 3: Prześlij kod
Poniższy przykład pokazuje, jak odczytać wartości analogowe z czujników podłączonych do CD74HC4067:
Przykładowy kod
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
}
Krok 4: Przetestuj konfigurację
- Podłącz Arduino do komputera za pomocą USB.
- Otwórz Arduino IDE i wybierz poprawne Tablica I Port pod Narzędzia menu.
- Prześlij kod, klikając Prześlij.
- Otwórz monitor szeregowy (Narzędzia > Monitor szeregowy) i ustaw wskaźnik transmisji na
9600
. - Obserwuj wartości analogowe dla każdego kanału wyświetlanego w monitorze szeregowym.
Opcjonalnie: kontrolowanie diod LED
Aby kontrolować diody LED podłączone do kanałów, zmodyfikuj kod do wyjściowych sygnałów cyfrowych zamiast odczytu analogowych wejść. Na przykład:
Przykładowy kod 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
}
}
Zastosowania CD74HC4067
- Rozszerzanie wejść/wyjść analogowych i cyfrowych
- Czytanie wielu czujników z ograniczonymi szpilkami
- Budowanie dużych macierzy przycisków
- Kontrolowanie wielu diod LED lub przekaźników
Rozwiązywanie problemów
-
Brak odpowiedzi z kanałów: Sprawdź połączenia pinu sterowania i upewnij się
EN
Pin jest podłączony do GND. -
Nieprawidłowy wybór kanału: Sprawdź
selectChannel()
Logika do ustawiania pinów S0-S3. - Niestabilne odczyty: Zapewnij odpowiednie uziemienie i stabilny zasilacz dla czujników.
Wniosek
Z powodzeniem połączyłeś multiplekser CD74HC4067 z Arduino. Ten wszechstronny moduł umożliwia znaczne rozszerzenie możliwości wejściowych i wyjściowych Arduino, dzięki czemu idealnie nadaje się do projektów obejmujących wiele czujników, przycisków lub diod LED. Eksperymentuj z różnymi konfiguracjami i zbadaj jego pełny potencjał!