#include <Arduino.h>
#include <Adafruit_NeoPixel.h>
#define PIN 2
#define NUMPIXELS 12
#define btn1 3
#define btn2 4
Adafruit_NeoPixel led(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
// Biến lưu trạng thái nút nhấn
bool lastState1 = HIGH;
bool lastState2 = HIGH;
bool mode = 0;
void setup() {
led.begin();
led.setBrightness(255);
Serial.begin(115200);
pinMode(btn1, INPUT_PULLUP);
pinMode(btn2, INPUT_PULLUP);
led.fill(led.Color(255, 255, 255), 0, 6);
led.show();
delay(2000);
for(int i =255; i>0; i--) {
led.setBrightness(i);
led.show();
delay(3);
}
led.clear();
led.setBrightness(255);
led.show();
}
int checkButton(int pin, bool &lastState) {
bool currentState = digitalRead(pin);
if (currentState != lastState) {
delay(50); // Chống rung đơn giản
lastState = currentState;
if (currentState == LOW) return 1; // Nhấn xuống
else return 2; // Thả ra
}
return 0;
}
void ledo(int i ) {
if(led.getPixelColor(i)==0) {
if(i==0) {
led.setPixelColor(i,led.Color(255,0,0));
} else if (i ==1) {
led.setPixelColor(i,led.Color(255,255,0));
} else if (i ==2) {
led.setPixelColor(i,led.Color(0,255,0));
} else if (i ==3) {
led.setPixelColor(i,led.Color(0,255,255));
} else if (i ==4) {
led.setPixelColor(i,led.Color(0,128,255));
} else if (i ==5) {
led.setPixelColor(i,led.Color(0,0,255));
}
led.show();
} else {
led.setPixelColor(i,led.Color(0,0,0));
led.show();
}
}
bool lock=0;
int tre =35;
int cho=400;
uint32_t ret =led.Color(255,0,0);
unsigned long thgian =0;
bool locktm=0;
void loop() {
int hzon = checkButton(btn1, lastState1);
int kik= checkButton(btn2, lastState2);
if(hzon ==1) {
led.clear();
led.show();
delay(tre );
for(int i=0; i<6; i++) {
led.setPixelColor(i,led.Color(255,0,0));
led.show();
}
delay(tre +50);
led.clear();
led.show();
if(mode==0) {
mode=1;
} else {
mode=0;
}
}
if (mode == 0) {
if (kik == 1&&lock==0) {
thgian =millis();
locktm=1;
lock=1;
for(int i=0; i <6; i ++) {
ledo(i );
delay(tre);
}
delay(tre );
for (int i=5; i>0; i--) {
ledo(i);
delay(tre );
}
delay(cho);
for(int i=1; i <6; i ++) {
ledo(i );
delay(tre);
}
delay (tre);
for (int i=5; i>1; i--) {
ledo(i);
delay(tre );
}
delay(cho);
for(int i=2; i <6; i ++) {
ledo(i );
delay(tre);
}
delay(tre) ;
for (int i=5; i>2; i--) {
ledo(i);
delay(tre );
}
delay(cho);
for(int i=3; i <6; i ++) {
ledo(i );
delay(tre);
}
delay(tre );
for (int i=5; i>3; i--) {
ledo(i);
delay(tre );
}
delay(cho);
for (int i =4; i<6; i++) {
ledo(i);
}
delay(3000);
lock=0;
}
}
if (mode==1) {
if(kik==1&&lock==0) {
thgian=millis();
locktm=1;
lock=1;
for(int i=0; i<6; i++) {
led.setPixelColor(i,ret);
led.show();
delay(tre);
}
delay(tre);
for(int i=5; i>0; i--) {
led.setPixelColor(i,0);
led.show();
delay(tre);
}
delay(cho);
for(int i=1; i<6; i++) {
led.setPixelColor(i,ret);
led.show();
delay(tre);
}
delay(tre);
for(int i=5; i>1; i--) {
led.setPixelColor(i,0);
led.show();
delay(tre);
}
delay(cho);
for(int i=2; i<6; i++) {
led.setPixelColor(i,ret);
led.show();
delay(tre);
}
delay(tre);
for(int i=5; i>2; i--) {
led.setPixelColor(i,0);
led.show();
delay(tre);
}
delay(cho);
for(int i=3; i<6; i++) {
led.setPixelColor(i,ret);
led.show();
delay(tre);
}
delay(tre);
for(int i=5; i>3; i--) {
led.setPixelColor(i,0);
led.show();
delay(tre);
}
delay(cho);
for(int i=4; i<6; i++) {
led.setPixelColor(i,ret);
led.show();
}
delay (3000);
lock=0;
}
}
if((millis()-thgian) >=20000&&locktm==1) {
locktm=0;
for(int i =255; i>0; i--) {
led.setBrightness(i);
led.show();
delay(5);
}
led.clear();
led.setBrightness(255);
}
}
Loading
esp32-c3-devkitm-1
esp32-c3-devkitm-1