LED Brightness Control Using PWM

Solving Approach:

How do you plan to solve it?

 

 

Code

#include <stdint.h>


#define PWM_LED 3



uint64_t last_time = 0; 
uint32_t time_interval = 0;
uint32_t duty_cycle = 0;
int8_t step = 1;

void setup()
{
  pinMode(PWM_LED, OUTPUT);
  time_interval = (2000 / 255); 
}

void loop()
{
  uint64_t current_time = millis();
  
  if(current_time - last_time >= time_interval){
  	
    last_time = current_time;
    
    duty_cycle += step;
    
    if(duty_cycle >= 255){
      
      	duty_cycle = 255;
    	step = -1;
      	time_interval = (1000 / 255);
   	}
    else if(duty_cycle <= 0){
    	duty_cycle = 0;
      	step = 1;
      	time_interval = (2000 / 255);
    }
    
    
   }
  
  analogWrite(PWM_LED, duty_cycle);
 
}


 

Output

Video

Add video of output (know more)

 

 

 

 

 

Photo of Output

Add a photo of your hardware showing the output.

 

 

 


 

Upvote
Downvote

Submit Your Solution

Note: Once submitted, your solution goes public, helping others learn from your approach!