- Get link
- X
- Other Apps
- Get link
- X
- Other Apps
Hello In this article we will see how you can increase the output of the Arduino UNO board by using the 74HC4051 Multiplixer , we wil controll 8 LEDS! This Project is simulated using Proteus 8!
Schematic:
Code for LED Brightness Controller:
// File: led_brightness_controller_with_inh.ino
// Define multiplexer control pins
#define A 2
#define B 3
#define C 4
// Define PWM output pin
#define PWM_PIN 9
// Define INH (inhibit) pin
#define INH 5
// Brightness levels for each LED (0 to 255)
int brightnessLevels[8] = {50, 100, 150, 200, 255, 180, 90, 60};
void setup() {
// Set control pins as output
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
// Set INH pin as output and disable inhibit
pinMode(INH, OUTPUT);
digitalWrite(INH, LOW); // Enable multiplexer
// Set PWM pin as output
pinMode(PWM_PIN, OUTPUT);
}
void loop() {
for (int i = 0; i < 8; i++) {
// Set multiplexer channel
selectChannel(i);
// Write the corresponding brightness level to the PWM pin
analogWrite(PWM_PIN, brightnessLevels[i]);
// Hold for a short time to make the brightness visible
delay(100);
}
}
// Function to select the active multiplexer channel
void selectChannel(int channel) {
digitalWrite(A, channel & 0x01); // Least significant bit
digitalWrite(B, (channel >> 1) & 0x01);
digitalWrite(C, (channel >> 2) & 0x01);
}
Code: Brightness Equalizer
#define A 2
#define B 3
#define C 4
#define PWM_PIN 9
#define INH 5
#define POT_PIN A0
void setup() {
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(INH, OUTPUT);
digitalWrite(INH, LOW); // Enable multiplexer
pinMode(PWM_PIN, OUTPUT);
}
void loop() {
int potValue = analogRead(POT_PIN); // Read potentiometer value
int brightness = map(potValue, 0, 1023, 0, 255); // Map to PWM range
for (int i = 0; i < 8; i++) {
selectChannel(i);
analogWrite(PWM_PIN, brightness);
delay(100);
}
}
void selectChannel(int channel) {
digitalWrite(A, channel & 0x01);
digitalWrite(B, (channel >> 1) & 0x01);
digitalWrite(C, (channel >> 2) & 0x01);
}
Code: SOS Signal
#define A 2#define B 3#define C 4#define PWM_PIN 9#define INH 5
void setup() { pinMode(A, OUTPUT); pinMode(B, OUTPUT); pinMode(C, OUTPUT); pinMode(INH, OUTPUT); digitalWrite(INH, LOW); // Enable multiplexer pinMode(PWM_PIN, OUTPUT);}
void loop() { for (int i = 0; i < 8; i++) { sendSOS(i); delay(2000); // Pause between SOS signals }}
void sendSOS(int channel) { selectChannel(channel);
// Dot-Dot-Dot for (int i = 0; i < 3; i++) { analogWrite(PWM_PIN, 255); delay(200); // Short flash analogWrite(PWM_PIN, 0); delay(200); }
// Dash-Dash-Dash for (int i = 0; i < 3; i++) { analogWrite(PWM_PIN, 255); delay(600); // Long flash analogWrite(PWM_PIN, 0); delay(200); }
// Dot-Dot-Dot for (int i = 0; i < 3; i++) { analogWrite(PWM_PIN, 255); delay(200); // Short flash analogWrite(PWM_PIN, 0); delay(200); }}
void selectChannel(int channel) { digitalWrite(A, channel & 0x01); digitalWrite(B, (channel >> 1) & 0x01); digitalWrite(C, (channel >> 2) & 0x01);}
#define A 2
#define B 3
#define C 4
#define PWM_PIN 9
#define INH 5
void setup() {
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(INH, OUTPUT);
digitalWrite(INH, LOW); // Enable multiplexer
pinMode(PWM_PIN, OUTPUT);
}
void loop() {
for (int i = 0; i < 8; i++) {
sendSOS(i);
delay(2000); // Pause between SOS signals
}
}
void sendSOS(int channel) {
selectChannel(channel);
// Dot-Dot-Dot
for (int i = 0; i < 3; i++) {
analogWrite(PWM_PIN, 255);
delay(200); // Short flash
analogWrite(PWM_PIN, 0);
delay(200);
}
// Dash-Dash-Dash
for (int i = 0; i < 3; i++) {
analogWrite(PWM_PIN, 255);
delay(600); // Long flash
analogWrite(PWM_PIN, 0);
delay(200);
}
// Dot-Dot-Dot
for (int i = 0; i < 3; i++) {
analogWrite(PWM_PIN, 255);
delay(200); // Short flash
analogWrite(PWM_PIN, 0);
delay(200);
}
}
void selectChannel(int channel) {
digitalWrite(A, channel & 0x01);
digitalWrite(B, (channel >> 1) & 0x01);
digitalWrite(C, (channel >> 2) & 0x01);
}
Code: LED Chaser
// File: led_chaser.ino
#define A 2
#define B 3
#define C 4
#define PWM_PIN 9
#define INH 5
void setup() {
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(INH, OUTPUT);
digitalWrite(INH, LOW); // Enable multiplexer
pinMode(PWM_PIN, OUTPUT);
}
void loop() {
for (int i = 0; i < 8; i++) {
// Gradually increase brightness
for (int brightness = 0; brightness <= 255; brightness += 5) {
selectChannel(i);
analogWrite(PWM_PIN, brightness);
delay(10);
}
// Gradually decrease brightness
for (int brightness = 255; brightness >= 0; brightness -= 5) {
selectChannel(i);
analogWrite(PWM_PIN, brightness);
delay(10);
}
}
}
void selectChannel(int channel) {
digitalWrite(A, channel & 0x01);
digitalWrite(B, (channel >> 1) & 0x01);
digitalWrite(C, (channel >> 2) & 0x01);
}
Schematic of this project:
Code: Reaction Game
#include <Arduino.h>#define A 2#define B 3#define C 4#define PWM_PIN 9#define INH 5#define BUTTON_PIN 6void setup() {pinMode(A, OUTPUT);pinMode(B, OUTPUT);pinMode(C, OUTPUT);pinMode(INH, OUTPUT);digitalWrite(INH, LOW); // Enable multiplexerpinMode(PWM_PIN, OUTPUT);pinMode(BUTTON_PIN, INPUT_PULLUP); // Button with pull-up resistorSerial.begin(9600);}void loop() {int randomLED = random(0, 8); // Pick a random LEDselectChannel(randomLED);analogWrite(PWM_PIN, 255); // Turn on LEDunsigned long startTime = millis();while (digitalRead(BUTTON_PIN) == HIGH); // Wait for button pressunsigned long reactionTime = millis() - startTime;Serial.print("Reaction Time: ");Serial.println(reactionTime);analogWrite(PWM_PIN, 0); // Turn off LEDdelay(1000); // Wait before next round}void selectChannel(int channel) {digitalWrite(A, channel & 0x01);digitalWrite(B, (channel >> 1) & 0x01);digitalWrite(C, (channel >> 2) & 0x01);}Find the full Project here:https://drive.google.com/file/d/1LNoW0uWOdzJTwrX-_cId1JDb2VolpdRl/view?usp=drive_link
- Get link
- X
- Other Apps
Comments
Post a Comment