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