회로구성
• 아두이노에 7번핀에 LED를 연결하고, 3번 핀에 택트 버튼(tact button)연결한다.
동작 요구사항
• 최초에 LED는 ON 상태이다. 버튼을 누르고 있는 동안 LED는 OFF가 되고, 버튼에서 손을 떼면 다시 LED가 ON이 되도록 한다.
• 버튼의 상태는 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은 측정하고자 하는 지점의 상태를 명시적으로 High나 Low로 정의하지 않은 상태라서 논리적으로 어떤 값이 될지 알 수 없는 상태, 즉 떠있는(floating) 상태를 의미한다.
Pull-up and Pull-down
• Pull-up은 floating 상태의 전압을 끌어 올려 High로 만드는 것을 의미하고, 이때 사용하는 저항을 pull-up 저항이라고 한다.
• Pull-down은 floating 상태의 전압을 끌어 내려 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 시뮬레이션 결과
'아두이노' 카테고리의 다른 글
아두이노와 2개의 7세그먼트를 이용한 카운터 구현 (0) | 2021.05.16 |
---|---|
아두이노와 7세그먼트를 이용한 16진수 카운터 (0) | 2021.05.16 |
아두이노에서 버튼으로 LED 제어하기 2 (0) | 2021.05.16 |
아두이노를 이용한 2개의 LED 제어 (0) | 2021.05.16 |
아두이노를 이용한 LED 제어 (0) | 2021.05.13 |