<목표>
- digitalRead() 명령어를 이용하여 아두이노에 연결된 버튼의 상태를 읽을 수 있다.
<준비물>
- 아두이노(나노, 우노, 메가), 시리얼 통신 케이블, 버튼(택트 스위치), 브레드보드
저항은 아무거나 있으면 됩니다.
저항 없이도 사용할 수 있습니다. 이때는 아두이노 자체의 풀업저항 회로를 이용해야 하는데, 여기서는 다루지 않습니다.
<회로도>
<코드>
int pushButton = 2;
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// make the pushbutton's pin an input:
pinMode(pushButton, INPUT);
}
// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton);
// print out the state of the button:
Serial.println(buttonState);
delay(1); // delay in between reads for stability
}
코드는 아두이노 - 파일 - 예제 - 01.Basics - DigitalReadSerial 의 예제 파일과 동일 합니다.
예제파일을 쓰셔도 되고, 위의 코드를 복사하여 붙여넣으셔도 됩니다.
<실행 결과>
코드를 업로드하고, 시리얼 모니터를 확인해 본다.
1ms(0.001초)마다 시리얼 모니터에서 버튼의 상태가 계속 표시된다.
버튼이 눌리면 1, 눌리지 않은 상태에서는 0으로 표시가 되는것을 확인할 수 있다.
그리고 아두이노 코드중 새로운 명령어를 살펴 보자면
Serial.begin( baud rate ) : baud rate(초당 펄스 수)의 통신속도의 시리얼을 사용한다. 이 명령어를 사용하여야 시리얼을 사용할 수 있고, 시리얼모니터로 확인이 가능하다.
digitalRead( pin_number ) : pin_number에 해당하는 핀의 전압 상태를 읽는다. 0(0V)과 1(5V)을 읽을 수 있다.
Serial.println( variable ) : 변수(variable)의 값을 시리얼 모니터에 출력하는데, 출력하고 줄을 바꾼다.(enter를 눌러서 줄바꾸는것과 동일)
이를 바탕으로 코드의 내용을 보면
setup 에서
시리얼을 사용하는데, 보레이트(baud rate)를 9600으로 한다.
버튼을 읽어들일 핀으로 2번 핀을 사용한다.
loop 에서
버튼상태 변수(buttonState)에 2번핀에서 측정되는 전압을 읽어서 저장한다.
시리얼 모니터에 2번핀의 전압 측정값을 출력한다.
따라서 버튼이 눌리는 상태가 매우 빠르게 시리얼 모니터에 계속 출력되는 결과를 볼 수 있다.
저항 없이 그냥 5V와 2번핀을 버튼으로 연결하면 되지 않느냐 하시는 분들은 직접 저항없이 회로를 구성해보시길~
풀업저항을 이용해야 되는 이유에 대해서 궁금하신 분들은 아래 링크를 참고하시면 도움 되실겁니다.
https://kocoafab.cc/tutorial/view/526
※ 궁금하시거나 질문사항이 있으시면 댓글로 작성해주시면 답변해 드릴 수 있는 부분에서 친절히 답변드리겠습니다!
'코딩 > 아두이노' 카테고리의 다른 글
[아두이노 강좌] 예제로 배우는 아두이노 #6 , 스위치 버튼으로 led 제어하기 (0) | 2020.03.25 |
---|---|
[아두이노 강좌] 예제로 배우는 아두이노 #5 analogWrite( ), 아두이노로 pwm 출력하기 (0) | 2020.03.25 |
[아두이노 강좌] 예제로 배우는 아두이노 #4 ReadAnalogVoltage, 아두이노로 전압측정하기 (2) | 2020.03.25 |
[아두이노 강좌] 예제로 배우는 아두이노 #3 analogRead()사용법 (0) | 2020.03.25 |
[아두이노 강좌] 예제로 배우는 아두이노 #1 digitalWrite() 사용법, 내장 LED 점등하기 (0) | 2020.03.24 |
댓글