CD4051B with ESP8266
This project uses the CD4051B multiplexer with an ESP8266 to read values from two potentiometers and adjust the brightness of two LEDs accordingly.
📜 ESP8266 Code:
#define MUX_A D4
#define MUX_B D3
#define MUX_C D2
#define ANALOG_INPUT A0
#define LED1 D1 // LED controlled by POT1
#define LED2 D0 // LED controlled by POT2
void setup() {
pinMode(MUX_A, OUTPUT);
pinMode(MUX_B, OUTPUT);
pinMode(MUX_C, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
Serial.begin(115200);
}
void changeMux(int c, int b, int a) {
digitalWrite(MUX_A, a);
digitalWrite(MUX_B, b);
digitalWrite(MUX_C, c);
delay(10); // Allow time for signal to settle
}
void loop() {
int pot1_value, pot2_value;
// Read POT1 (X0 - Pin 13)
changeMux(LOW, LOW, LOW);
pot1_value = analogRead(ANALOG_INPUT);
// Read POT2 (X1 - Pin 14)
changeMux(HIGH, LOW, LOW);
pot2_value = analogRead(ANALOG_INPUT);
// Map potentiometer values (0-1023) to PWM range (0-255)
int led1_brightness = map(pot1_value, 0, 1023, 0, 255);
int led2_brightness = map(pot2_value, 0, 1023, 0, 255);
// Print values to Serial Monitor
Serial.print("POT1: ");
Serial.print(pot1_value);
Serial.print(" | POT2: ");
Serial.print(pot2_value);
Serial.print(" || LED1: ");
Serial.print(led1_brightness);
Serial.print(" | LED2: ");
Serial.println(led2_brightness);
// Set LED brightness using PWM
analogWrite(LED1, led1_brightness);
analogWrite(LED2, led2_brightness);
delay(100);
}
⚡ Circuit Connections:
- **ESP8266 to CD4051B**
- D4 → MUX_A (Pin 11)
- D3 → MUX_B (Pin 10)
- D2 → MUX_C (Pin 9)
- A0 → Common Output (Pin 3)
- GND → GND (Pin 8)
- 3.3V → VCC (Pin 16)
- **Potentiometers:**
- POT1 → X0 (Pin 13 of CD4051B)
- POT2 → X1 (Pin 14 of CD4051B)
- **LEDs:**
- D1 (PWM) → LED1
- D0 (PWM) → LED2

0 Comments