본문 바로가기

아두이노

아두이노에서 버튼으로 LED 제어하기

회로구성

   • 아두이노에 7번핀에 LED 연결하고, 3번 핀에 택트 버튼(tact button)연결한다.

 

동작 요구사항

   • 최초에 LEDON 상태이다. 버튼을 누르고 있는 동안 LEDOFF가 되고, 버튼에서 손을 떼면 다시 LEDON이 되도록 한다.

   • 버튼의 상태는 0.1초마다 확인한다.

 

LED 동작

LED(Light Emitting Diode)는 발광 다이오드라고 하며 전류를 가하면 빛을 발하는 반도체 소자이다.

 

Button 동작

 

 

High, Low and Floating

디지털에서 High는 논리값 1, 즉 회로에서 어떤 지점의 전압이 기준 전압(Vref) 이거나 또는 임계 전압(Threshold, V_HIGH) 이상을 가질 때 논리적으로 High 또는 1이라고 한다.

 

이와 반대로 Low는 논리값 0, 즉 회로에서 접지(GND) 상태 이거나 또는 임계 전압(VLOW) 이하일 때 논리적으로 Low 또는 0이라고 한다.

 

마지막으로, Floating 측정하고자 하는 지점의 상태를 명시적으로 HighLow로 정의하지 않은 상태라서 논리적으로 어떤 값이 될지 알 수 없는 상태, 즉 떠있는(floating) 상태를 의미한다.

 

 

Pull-up and Pull-down

Pull-upfloating 상태의 전압을 끌어 올려 High로 만드는 것을 의미하고, 이때 사용하는 저항을 pull-up 저항이라고 한다.

 

Pull-downfloating 상태의 전압을 끌어 내려 Low로 만드는 것을 의미하고, 이때 사용하는 저항을 pull-down 저항이라고 한다.

 

 

Pull-up 회로 동작 원리와 아두이노 내부 풀업 회로

아두이노 시뮬레이션

 

👏아두이노 프로그래밍 고려사항

 

1. 버튼의 한쪽은 전원에, 다른 한쪽은 접지(GND)에 연결된다.

 

2. 버튼의 누름 상태에 따라 아두이노 7번 핀에 5V 0V 번갈아 가며 공급해야 한다. 

 

3. 버튼의 상태를 0.1(100ms)마다 확인한다.

 

 

👏아두이노 동작 :  평상시에는 LED ON, 버튼을 누르고있는 동안 LED OFF

 

1. 아두이노가 버튼의 누름 상태를 읽어와야 한다.
→ pinMode(btn, INPUT), btn_state = digitalRead(btn)

 

2. 버튼이 연결된 핀의 상태가 HIGH이면 LED ON, 핀의 상태가 LOW이면 LED OFF. 즉 평상시 버튼의 상태는 HIGH이므로 PULL-UP 회로가 동작한다.   pinMode(btn, INPUT_PULLUP)

 

3. 버튼이 연결된 핀의 상태가 HIGH인지 LOW인지 확인해야 한다.  if (btn_state == HIGH), else

 

4. 0.1초마다 버튼의 상태를 확인한다.  delay(100)

 

 

Tinkercad 시뮬레이션 결과