Today they will be going to learn how to use the digital pins with an analog output and apply them to change the brightness of the lights (blurring of the lights). Let’s do it!

Before reading this article, you need to look back the PWM article that makes you understand the code below more quickly. Do not be afraid!!

HARDWARE REQUIRED

  • x01 Arduino Uno
  • x01 Breadboard
  • x01 Jumper Wires
  • x01 560 Ohm resistor (or 220 Ohm or 1kOhm resistor)
  • x01 LED – any color is fine

CIRCUIT

image developed using Fritzing. For more circuit examples, see the Fritzing project page

THE ARDUINO CODE:

const int buttonPin = 11; //Khai báo chân nút nhấn (Button)
const int ledPin = 2; //Khai báo chân LED
int buttonPushCounter = 0; //Số lần button được nhấn
int buttonState = 0; //Trạng thái hiện tại của button
int lastButtonState = 0; //Trạng thái trước đó của button
void setup()
{
pinMode(buttonPin, INPUT); //Cài đặt button là INPUT
pinMode(ledPin, OUTPUT); //Cài đặt đèn LED là OUTPUT
Serial.begin(9600); //Bật cổng Serial ở baudrate 9600
}
void loop()
{
buttonState = digitalRead(buttonPin); //Đọc giá trị nút nhấn
if (buttonState != lastButtonState) //Nếu trạng thái khác
{
if (buttonState == HIGH) //Nếu nút được nhấn
{
buttonPushCounter++; //Tăng biến đếm số lần nhấn
Serial.println("Dang nhan");
Serial.print("So lan nhan button la: ");
Serial.println(buttonPushCounter);
}
else //Nếu nút đang thả
{
Serial.println("off");
}
}
lastButtonState = buttonState; //Lưu lại trạng thái hiện tại
if (buttonPushCounter % 5 == 0) // Nếu số lần nhấn chia hết cho 5 <=> Là bội của 5
{
digitalWrite(ledPin, HIGH);
Serial.println("Da bat den");
}
else
{
digitalWrite(ledPin, LOW);
}
}
NOTE: THE ONLY PIN WITH ~ CAN BE USED ANALOGWRITE ()  (PWM ~)

DISCUSS:

After per the 30ms loop, the brightness variable will be change (increase if fadeamount is positive and vice versa in the opposite). This make the currents generate into the fluctuated analog output that make the led is fade in and out

Source: Arduino.vn