led응용
int swState = LOW;
int ledState = LOW;
void setup(){
pinMode(7, INPUT_PULLUP);
pinMode(12,OUTPUT);
}
void loop(){
if(digitalRead(7) == LOW && swState == LOW){
swState = HIGH;
}else if(digitalRead(7) == HIGH && swState == HIGH){
swState = LOW;
ledState = !ledState;
}
if(ledState == HIGH){
digitalWrite(12,HIGH);
}else if(ledState == LOW){
digitalWrite(12,LOW);
}
}
스위치와 led의 상태를 LOW로 정의한다. 이후 pinMode를 셋업한다.
loop문에서 7번핀의 상태와 스위치의 상태를 본다면, 7번의 상태는 LOW이고 스위치의 상태도 LOW이다. 그래서 처음의 조건을 만족시키는데 이때는 swState를 HIGH로 만들어 주는 것이다.
그다음 if문을 보게 된다면 ledState를 확인할 수 있는데 만약 ledSteate가 HIGH라면 12번 핀 즉 led에 들어가는 전원을 HIGH값으로 보내는 것 이다.(그래야 불이 들어온다)
그렇게 되면 led의 불은 계속 들어와 있는 상태가 되는데, 이때 한번 더 누르게 되면, 첫번째 if문에서 첫번째 줄의 조건을 만족할 수 없다. 그래서 else if 문으로 들어가게 되는데 이때의 7번핀의 값과 swState는 불이 들어와 있는 상태이기 때문에 HIGH값이다.
그다음 if문을 보게 된다면 ledState는 !ledState값이 되어서 반대값이 된다 HIGH->LOW, LOW->HIGH값이 된다. 따라서 ledState의 값이 LOW값이기 때문에 12번 핀에 LOW신호를 보내게 되는 것 이다.
댓글
댓글 쓰기