BASIC4MCU | 질문게시판 | 아두이노 3LED 버튼 관련 질문
페이지 정보
작성자 이츤 작성일2023-03-16 12:39 조회3,113회 댓글1건본문
#define BUTTON_RED 2
#define BUTTON_YELLOW 5
#define BUTTON_GREEN 7
#define LED_RED 8
#define LED_YELLOW 10
#define LED_GREEN 13
bool clickedRed = false;
bool clickedYellow = false;
bool clickedGreen = false;
bool red = false;
bool yellow = false;
bool green = false;
void setup() {
pinMode(BUTTON_RED, INPUT_PULLUP);
pinMode(BUTTON_YELLOW, INPUT_PULLUP);
pinMode(BUTTON_GREEN, INPUT_PULLUP);
pinMode(LED_RED, OUTPUT);
pinMode(LED_YELLOW, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (!clickedRed && digitalRead(BUTTON_RED) == LOW) {
clickedRed = true;
Serial.println("press1");
red = !red;
}
else if (clickedRed && digitalRead(BUTTON_RED) == HIGH) {
clickedRed = false;
Serial.println("release1");
}
digitalWrite(LED_RED, (unsigned int) red);
if (!clickedYellow && digitalRead(BUTTON_YELLOW) == LOW) {
clickedYellow = true;
Serial.println("press2");
yellow = !yellow;
}
else if (clickedYellow && digitalRead(BUTTON_YELLOW) == HIGH) {
clickedYellow = false;
Serial.println("release2");
}
digitalWrite(LED_YELLOW, (unsigned int) yellow);
if (!clickedGreen && digitalRead(BUTTON_GREEN) == LOW) {
clickedGreen = true;
Serial.println("press3");
green = !green;
}
else if (clickedGreen && digitalRead(BUTTON_GREEN) == HIGH) {
clickedGreen = false;
Serial.println("release3");
}
digitalWrite(LED_GREEN, (unsigned int) green);
}
LED 3개를 각각 눌렀을 때 켜지고 다시 누르면 꺼지도록 코드를 짰는데 빨간색만 켜지고 노란색 초록색은 켜지지 않습니다. 시리얼로 확인을 해보니 빨간색은 press와 release가 누를때마다 확인이 되지만, 노란색은 한번만 press와 release가 뜨고 더이상 뜨지를 않고, 초록색은 아예 뜨지를 않습니다. 뭐가 잘못된 걸까요.... LED를 켜지게 할 수 있을까요?
댓글 1
조회수 3,113master님의 댓글
master 작성일
const int BTN_R=2,BTN_Y=5 ,BTN_G=7;
const int LED_R=8,LED_Y=10,LED_G=13;
//
bool click_R=0,click_Y=0,click_G=0;
int red=0,yellow=0,green=0;
//
void setup(){
pinMode(BTN_R,INPUT_PULLUP); pinMode(BTN_Y,INPUT_PULLUP); pinMode(BTN_G,INPUT_PULLUP);
pinMode(LED_R,OUTPUT); pinMode(LED_Y,OUTPUT); pinMode(LED_G,OUTPUT);
Serial.begin(9600);
}
//
void loop(){
if (!click_R && !digitalRead(BTN_R)){ click_R=1; Serial.println("press1 "); red=!red; digitalWrite(LED_R,red); }
else if( click_R && digitalRead(BTN_R)){ click_R=0; Serial.println("release1"); }
//
if (!click_Y && !digitalRead(BTN_Y)){ click_Y=1; Serial.println("press2 "); yellow=!yellow; digitalWrite(LED_Y,yellow); }
else if( click_Y && digitalRead(BTN_Y)){ click_Y=0; Serial.println("release2"); }
//
if (!click_G && !digitalRead(BTN_G)){ click_G=1; Serial.println("press3 "); green=!green; digitalWrite(LED_G,green); }
else if( click_G && digitalRead(BTN_G)){ click_G=0; Serial.println("release3"); }
}
특별히 눈에 띄는 오류는 보이지 않습니다.
코드를 조금 정리했으니 이 코드로 돌려보세요