본문 바로가기

Arduino 제어

03. 아두이노 LED를 스위치를 이용해서 ON, OFF 해보자!

오늘의 준비물

LED 1개, 220R 저항 x 1, 10k 저항, 스위치, 브레드보드, 아두이노 UNO

 

이 시간에 알게 될 내용

  • 아두이노 LED를 PushButton으로 ON, OFF 제어할 수 있다.
  • 아두이노 코딩을 할 수 있다.

이번 시간에는, 02. 아두이노 LED를 연결해보자. 의 내용을 이어서 진행됩니다.                                                    푸시버튼 스위치를 이용한 LED ON/OFF 제어를 해보도록 하겠습니다.

소스코드 파일은 맨 아래에 있습니다.

 

첫 번째 단계.

Arduino에서 코드 작성.

아두이노 UNO 보드를 사용하기 위해서는, 동작 코드가 필요합니다. 코드 설명을 포함해두었으니, 참고하시면 되겠습니다.

코드는 이 안에 작성하는겁니다!

 

 


기본 코드


void setup() {
  // 설정 코드를 여기에 두십시오. 한 번 실행하려면:

}

void loop() {
  // 기본 코드를 여기에 놓으십시오. 반복 실행:

}


void setup과 void loop가 있습니다.

void setup에서는 얘는 누구누구이고, 어떤 식으로 사용할 것이다라고 작성을 하는 공간이라고 생각하십시오.              void loop는 이제 어떻게 동작하는지를 적고, 그것을 loop 반복시키는 것을 의미합니다.

 

이제 아래에서 스위치 없이, LED가 켜지는 것에 대한 코드 예시와 회로도를 작성합니다.


LED 상시 ON


 

이렇게 연결을 완료했다면,

 

 

 

 

 

 


int LED99 = 8;  // LED99라는 변수 이름을 디지털 8번 핀에 할당시킵니다.

void setup() {
  pinMode(LED99, OUTPUT);    // LED99를 출력 핀으로 설정합니다.     

// 센서에 사람이 지나간 게 감지되면 불이 켜진다?   센서 = 사람이 지나간 걸 알려준다. = 입력 신호,  불이 켜진다 = 출력

}

void loop() {  // 여기 안에 쓰는 건 반복이 됩니다.
 digitalWrite(LED99, HIGH);  // 불을 켠다. (HIGH = 1 참, LOW = 0 거짓) 
 delay(1000);  // 1000ms 대기.  1초 대기.

 digitalWrite(LED99, 0);   // 불을 끈다.      0이랑 LOW는 같은 의미로 사용 가능합니다.                                         delay(1000);  // 1000ms 대기.  1초 대기. 

}

 

코드 입력 후, 포트 설정을 하신 다음, 업로드를 눌러 보드에 코드를 넣어주세요.

 

 

결과는 LED가 1초 동안 켜지고, 1초동안 꺼짐을 반복합니다.

 

 


이제, PushButton을 이용하여, 버튼을 누르고 있을 때만 LED가 켜지게끔 만들어보겠습니다.

 

회로도는 다음과 같습니다.

 


int LED99 = 8;  // LED99라는 변수 이름을 디지털 8번 핀에 할당시킵니다.
int PB01 = 7; // Pushbutton을 줄여서 PB라고 지칭했습니다. 디지털 7번 핀에 할당합니다.

void setup()
{
  pinMode(LED99, OUTPUT);    // LED99를 출력신호으로 설정합니다.
  pinMode(PB01, INPUT);   // PB01을 입력신호로 설정합니다.
  Serial.begin(9600);    // 시리얼 통신 속도를 9600 으로 설정합니다.
}

void loop() {
int Values = digitalRead(PB01);   // PB01의 디지털 신호를 Values 변수에 할당합니다.
  Serial.println(Values);   // 시리얼 모니터에 Values 값을 출력후 한줄을 띄웁니다.
  delay(30);

  if (digitalRead(PB01) == true)
  {
    digitalWrite(LED99, HIGH);    // PB01을 누르면 LED99가 ON
  }
  else
  {
    digitalWrite(LED99, 0);   // PB01을 누른것을 제외한 나머지 모든 동작
  }

}

 

이 상태로 업로드시 결과는 Ctrl + Shift + M 시리얼 모니터에서는 0과 1이 반복되고, LED는 계속 깜빡입니다.  버튼을 누르게 되면 두번째 사진처럼 1이라는 값과 함께 LED가 계속 켜져있는것을 볼 수 있습니다.

하지만 우리가 원하는것은 확실히 OFF / ON 제어를 하는것이기때문에,  이 부분을 해결해야만 합니다. 

이 상태를 플로팅 상태  이라고 합니다. 5V은 1로, 0V는 0으로 간주하지만, 저항이 달린 상태에서 1과 0이 아닌 다른상태인 제 3의 상태로 플로팅 현상이라고 말합니다. 

결론은 0과 1을 확실하게 보장하기 위해서는 풀업 저항 또는 풀다운 저항을 연결하여 0과 1상태로 설정하여 사용하는 방법이 있습니다.

오늘은 풀다운 저항만 사용해보고 마칠것이기때문에, 자세한 내용은 따로 정리해서 올리도록 하겠습니다.

 

아래는 개선된 회로도 입니다. (풀다운 방식이 적용이 된.)

 

※ 소스코드는 변경할 내용이 없습니다.

결선 작업 시 반드시 아두이노를 PC에서 분리 후 하세요!

결과는 아래와 같습니다.

 

스위치를 누르지 않았을때.

0이 확실하게 보장되고 있습니다.

스위치를 누르고 있을 때.

1이 확실히 보장되고있습니다.

 

영상 결과.

 

 

다음 시간에는 아두이노 UNO 내부 풀업 저항을 사용한 제어를 해보도록 하겠습니다.

 

pull_down.ino
0.00MB