Skip to main content

How to Control LED Brightness with Arduino

In this post, we will see how we can control brightness of LED.
I am using 2 inputs for controlling, inreasing and decreasing.
One LED for output.




Find the code below.


//Controlling LED brightness with two input buttons
//Code by Deepak Sharma [ElectroMech Lab]

const int ledPin = 3;  // LED connected to pin 3
const int buttonUpPin = 2;  // Button to increase brightness connected to pin 2
const int buttonDownPin = 12;  // Button to decrease brightness connected to pin 12

int brightness = 128;  // Initial brightness (range from 0 to 255)
const int brightnessStep = 5;  // Step to increase/decrease brightness

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonUpPin, INPUT_PULLUP);
  pinMode(buttonDownPin, INPUT_PULLUP);
  analogWrite(ledPin, brightness);  // Set initial brightness
}

void loop() {
  if (digitalRead(buttonUpPin) == LOW) {  // Button is pressed (active low)
    brightness += brightnessStep;  // Increase brightness
    if (brightness > 255) {
      brightness = 255;  // Cap the maximum brightness
    }
    analogWrite(ledPin, brightness);  // Update LED brightness
    delay(100);  // Debounce delay
  }
  
  if (digitalRead(buttonDownPin) == LOW) {  // Button is pressed (active low)
    brightness -= brightnessStep;  // Decrease brightness
    if (brightness < 0) {
      brightness = 0;  // Cap the minimum brightness
    }
    analogWrite(ledPin, brightness);  // Update LED brightness
    delay(100);  // Debounce delay
  }
  
}


Comments

Popular posts from this blog

Difference between Bootloader & Firmware Update

Updating the bootloader and updating the firmware in a microcontroller are two distinct processes, each serving different purposes and involving different steps. Here's a breakdown of the differences: Bootloader Update Purpose : The bootloader is a small program that runs before the main application. It is responsible for initializing the microcontroller and loading the main application firmware. Updating the bootloader might be necessary to add new features, fix bugs, or improve the boot process.   Process : 1.       Enter Bootloader Mode : To update the bootloader, the microcontroller must be put into a special mode. This often involves setting specific pins, pressing buttons, or using a specific command through an existing firmware interface. 2.      Communication Interface : The bootloader update typically uses a specific communication interface such as UART, SPI, I2C, or USB. 3.   ...

AND Logic Gate by Transistors

Creating an AND gate using transistors is a fundamental exercise in digital electronics. In this post, I will guide you through the process of building an AND gate with transistors, explaining each step in detail.   What is an AND Gate? An AND gate is a basic digital logic gate that outputs TRUE or HIGH (1) only when all its inputs are true or high. If any of the inputs are false or low (0), the output is false or low (0). The truth table for a two-input AND gate is as follows: Input A Input B Output 0 0 0 0 1 0 1 0 0 1 1 1   Components Needed To build an AND gate, you will need the following components: NPN Transistors: BC547 (2 Nos.); Q1, Q2. Resistors : 10K (2 Nos) - R1, R2. Resistors : 1K (1 No) - R3. LED: 5mm Red (1 No) – L1, for output indication. Switches: ...

How to control Digital Output using Serial Monitor

Hello Friends, in this blog I will share with you how to control Arduino Digital Output with Serial Monitor. I am using One Arduino Uno, One 330 ohm resistor, One LED, 2 connecting cable, and one small Bread board. LED is connected to pin number 12, with the help of resistor 330 ohm. Below is the sketch: // Code by Deepak Sharma // The code is to control one digital output by serial monitor const int LED = 12; void setup() {   // put your setup code here, to run once:   Serial.begin(9600);   pinMode(LED, OUTPUT); } void loop() {   // put your main code here, to run repeatedly:   if (Serial.available()) {     String input = Serial.readStringUntil('\n');     input.trim();     if (input.equalsIgnoreCase("ON")) {       digitalWrite(LED, HIGH);       Serial.println("LED ON");     }     else if (input.equalsIgnoreCase("OFF")) {       digitalWrite(LED, LOW);     ...