인터넷에 잘못된 예제, 작동 안되는 예제가 많아, 한번 올려 보네요 ㅎㅎ
int ButtonPin = #; // arduino button connect with pin number # int Bflag = 0; // Bflag for button press int buttonState = 0; // check buttonstate void setup() { pinMode(ButtonPin, INPUT); //set pin input Serial.begin(9600);// serial monitor with flag change } void loop() { photocellReading = analogRead(photocellPin); buttonState = digitalRead(ButtonPin); if (buttonState == HIGH && Bflag == 0) { // when no button pressed, make button on Bflag = 1;// Bflag 1 for first button press Serial.print(Bflag); while ( buttonState == HIGH) { buttonState = digitalRead(ButtonPin); //delay 0.2 sec to check button again delay(200); } } else if (buttonState == HIGH && Bflag == 1) { // when button pressed, make button off Bflag = 0;// Bflag 1 for first button press Serial.print(Bflag); while ( buttonState == HIGH) { buttonState = digitalRead(ButtonPin); //delay 0.2 sec to check button again delay(200); } } if (Bflag == 1) { // when button pressed, do a task } }
사람이 버튼을 누르고 떼는 데에는 약간의 시간이 걸리기에, Arduino로 들어가는 지속적인 버튼상태값을 일정 시간 동안 무시해야 할 필요가 있거든요.
보통 이 부분에서 실수를 많이 하는데, 주의하셔야 할 것입니다.
댓글 없음:
댓글 쓰기
글에 대한 의문점이나 요청점, 남기고 싶은 댓글이 있으시면 남겨 주세요. 단 악성 및 스팸성 댓글일 경우 삭제 및 차단될 수 있습니다.
모든 댓글은 검토 후 게시됩니다.