#define ledR 11 // Chân kết nối với pin R của module LED-RGB
#define ledG 10 // Chân kết nối với pin G của module LED-RGB
#define ledB 9 // Chân kết nối với pin B của module LED-RGB
#define Bt 8 // Nút nhấn trên board Iotmaker Uno X
boolean lastBt = LOW; // Biến lưu trạng thái cuối của nút nhấn
boolean curBt = LOW; // Biến lưu trạng thái hiện tại của nút nhấn
int ledMode = 0; // Các chế độ của nút nhấn.
void setup()
{
pinMode(11, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledB, OUTPUT);
pinMode(Bt, OUTPUT);
}
boolean debounce (boolean lastState)
{
boolean curState ;
curState = digitalRead(Bt);
if (lastState != curState )
{
delay(20);
curState = digitalRead(Bt);
}
return curState;
}
void setMode (int mode)
{
if (mode ==1 ){
digitalWrite(ledR, LOW);
digitalWrite(ledG, LOW);
digitalWrite(ledB, HIGH);
} else if (mode ==2) {
digitalWrite(ledR, LOW);
digitalWrite(ledG, HIGH);
digitalWrite(ledB, LOW);
}else if (mode ==3) {
digitalWrite(ledR, HIGH);
digitalWrite(ledG, LOW);
digitalWrite(ledB, LOW);
}else if (mode ==4) {
int fadeAmount =0;
int brightness;
digitalWrite(ledR, LOW);
digitalWrite(ledG, LOW);
digitalWrite(ledB, LOW);
for (fadeAmount =0; fadeAmount < 255; fadeAmount +=10){
brightness = fadeAmount;
analogWrite(ledR, brightness);
analogWrite(ledG, brightness);
analogWrite(ledB, brightness);
delay(30);
}
}
}
void loop()
{
curBt = debounce(lastBt);
if (lastBt == HIGH && curBt == LOW)
ledMode++;
lastBt = curBt;
if (ledMode ==5)
ledMode ==1;
setMode(ledMode);
}