I'm trying to work with a CD74HC4067, which is a 16-channel analog multiplexor. I'd like to know how I can split my data so that the values received on my interface are separated according to the channel and voltage I'm using.
So far, my Arduino code looks something like this:
#include <BluetoothSerial.h> // Biblioteca para comunicación Bluetooth Serial
BluetoothSerial SerialBT; // Instancia para la comunicación Bluetooth
int PB[ ] = {32, 33, 25, 26};
float v;void setup() {
// Inicia los pines como salidas
for (int cont = 0; cont < 4; cont++) {
pinMode(PB[cont], OUTPUT);
}// Inicia la comunicación Serial y Bluetooth
Serial.begin(115200);
SerialBT.begin("ESP32_Sensor"); // Nombre del dispositivo Bluetooth
Serial.println("ESP32 Bluetooth iniciado...");
}float medirch(int ch) {
// Configura los pines de acuerdo al canal
digitalWrite(PB[0], (ch & 1) / 1);
digitalWrite(PB[1], (ch & 2) / 2);
digitalWrite(PB[2], (ch & 4) / 4);
digitalWrite(PB[3], (ch & 8) / 8);// Lee el voltaje desde el pin de entrada analógico
float voltaje = analogRead(36) * 3.3 / 4096.0;
return voltaje;
}void loop() {
// Lee y envía los valores de los sensores
for (int i = 0; i < 8; i++) {
v = medirch(i);
// Envia los datos por Bluetooth en formato "CH:x=y" (ej. "CH:1=2.52")
String mensaje = "CH:" + String(i) + "=" + String(v);
SerialBT.println(mensaje); // Enviar datos por Bluetooth
Serial.println(mensaje); // También lo manda por el puerto serial (opcional)
}delay(500); // Retraso entre lecturas (ajustable según lo necesites)
SerialBT.println("==========================="); // Línea separadora para claridad
}