Buonasera a tutti, è da mesi che combatto con un CD74HC4067, il problema è che continua a darmi valori randomici, ho provato con diversi sketch (usando le librerie CD74HC4067.h, light_CD74HC4067), ho usato anche sketch grezzi con le tabelle di verità senza queste librerie ma il risultato rimane lo stesso, ad ogni modo, vi lascio l’ultimo sketch utilizzato appositamente per testare questo componente:
#include <CD74HC4067.h>
CD74HC4067 mux(4, 5, 6, 7); //(S0, S1, S2, S3)
#define SIG 2 //pin segnale
int currentSensore = 0;
float value = 0;
void setup() {
Serial.begin(115200);
pinMode(SIG, INPUT);
}
void loop() {
mux.channel(currentSensore);
delay(800);
value = analogRead(SIG);
currentSensore = (currentSensore + 1) % 16; //Cicla tra 0 e 15;
Serial.println("Channel: ["+String(currentSensore)+"] "+String(value));
}
Di seguito vi indico anche il cablaggio del multiplexer verso il mio Arduino UNO R3:
GND MULTIPLEXER → GND ARDUINO
VCC MULTIPLEXER → 5V ARDUINO
EN MULTIPLEXER → GND ARDUINO
S3 MULTIPLEXER → PIN DIGITALE 7 ARDUINO
S2 MULTIPLEXER → PIN DIGITALE 6 ARDUINO
S1 MULTIPLEXER → PIN DIGITALE 5 ARDUINO
S0 MULTIPLEXER → PIN DIGITALE 4 ARDUINO
SIG MULTIPLEXER → PIN ANALOGICO 2 ARDUINO
Questo è l’output prodotto:
18:03:40.986 -> Channel: [1] 206.00
18:03:41.811 -> Channel: [2] 299.00
18:03:42.587 -> Channel: [3] 328.00
18:03:43.390 -> Channel: [4] 366.00
18:03:44.219 -> Channel: [5] 394.00
18:03:45.028 -> Channel: [6] 436.00
18:03:45.790 -> Channel: [7] 470.00
18:03:46.615 -> Channel: [8] 508.00
18:03:47.395 -> Channel: [9] 437.00
18:03:48.214 -> Channel: [10] 433.00
18:03:49.037 -> Channel: [11] 415.00
18:03:49.822 -> Channel: [12] 426.00
18:03:50.598 -> Channel: [13] 382.00
18:03:51.440 -> Channel: [14] 382.00
18:03:52.216 -> Channel: [15] 349.00
Ai canali del multiplexer non ho inserito niente e in ogni caso in passato stavo lavorando con dei sensori di umidità del terreno, i valori prodotti erano comunque incoerenti, informandomi online ho visto che comunque anche se non si collegano sensori nei canali dovrei aspettarmi 0 come valore, ho provato anche a inserire una resistenza di 2kohm (ora assente) tra il cavo del segnale del multiplexer e il pin analogico di arduino ma niente.
Spero di trovare risposta, grazie