[아두이노 강좌] 11. 아두이노 디지털핀 신호 출력하기 / pinMode(), digitalWrite()
개요
아두이노는 디지털 신호 혹은 아날로그 신호를 통해 다른 전자기기들과 통신(데이터를 주고 받음)할 수 있어요. 이번 시간에는 아두이노의 디지털 신호, 디지털 핀에 대해 알아 보고 직접 사용해보는 시간을 갖도록 할게요.
디지털 신호
앞 강의에서 디지털 신호와 아날로그 신호를 언급한적이 있었지만, 디지털 신호에 대해 한번더 언급하고 넘어가도록 할게요. 전자기기들은 전기의 신호를 통해 서로 통신(대화)을 할 수 있어요. 디지털 신호도 그중 하나이죠. 디지털 신호의 특징은 아래와 같아요. 그림 1. 디지털 신호
그림을 보면 알 수 있듯 디지털 신호는 2개의 신호로 이루어져있어요. 높을 때와 낮을 때. 높을 때는 1 또는 HIGH라고 표현하며, 낮을 때는 0 또는 LOW라고 표현해요. 아두이노의 경우 높을 때(HIGH, 1)에는 5V를 출력하며 낮을 떄(LOW, 0)에는 0V를 출력하죠. 이 때 5V를 우리는 레벨이라고 표현해요. ( "이건 5V레벨이고, 저건 3.3V 레벨이야" )
아두이노 디지털 신호 출력
아두이노 우노 보드를 보면 디지털핀 0번부터 13번까지 총 14개의 디지털 핀이 존재해요. 그림 2. 아두이노 디지털 핀 각 핀은 개별적으로 디지털 신호를 입력받거나 출력할 수 있어요. 물론, 우리가 프로그램을 만들어 넣어줘야 가능한것이죠. 우리가 아두이노에게 '디지털핀 10번으로 HIGH신호를 출력해!' 하면 아두이노는 디지털핀 10번으로 5V를 출력할 것이며, '디지털 핀 5번으로 LOW'신호를 출력해! 하면 아두이노는 디지털핀 5번으로 0V를 출력할겁니다. ㅎㅎ 이러한 원리를 사용해서 전자기기의 전원 입력 또한 가능하며, 우리는 간단하게 LED를 통해 실습을 진행해보도록 할게요.
그림 3. 아두이노 디지털 신호 출력
아두이노로 LED 제어하기
이런 말이 있습니다.. 모든 예제의 시작은 LED를 켜는 것부터 시작이다!!(...) 아두이노를 통해 LED를 켜볼 것이며, 그 과정에서 아두이노에 넣어줄 프로그램을 만들어봅시다.
준비물
회로도 연결
LED의 (-)극을 아두이노의 GND에 연결해주세요. LED의 (+)극을 디지털 8번핀에 연결해주세요. 중간에는 220옴 저항을 하나 넣어줍니다.
프로그램 코드 (1)
void setup() { pinMode(8, OUTPUT); // 디지털 8번 핀을 출력모드로 설정한다. } void loop() { digitalWrite(8, HIGH); // 8번 핀에 HIGH신호 (5V)를 출력한다. delay(1000); // 1초 동안 유지 digitalWrite(8, LOW); // 8번 핀에 LOW신호 (0V)를 출력한다. delay(1000); // 1초 동안 유지 }
프로그램 해석 디지털 8번 핀에 1초동안 HIGH (5V)신호를 출력한 후, 디지털 8번 핀에 1초동안 LOW (0V)신호를 출력하기를 반복함으로써, 디지털 8번핀에 연결된 LED가 1초 간격으로 켜졌다 꺼지기를 반복하게 됩니다. 프로그램의 기본 구조에 대해서는 여기를 클릭해서 추가 학습을 진행합시다! 사용된 함수 정리하기 ■pinMode(핀번호, 모드) 사용할 디지털 핀의 모드(입력or출력)를 설정하기 위한 함수입니다. 매개변수 핀번호 - 모드를 설정할 디지털 핀 번호를 적어줍니다. 모드 - OUTPUT(출력)또는 INPUT(입력) 또는 INPUT_PULLUP을 적어줍니다. ■digitalWrite(핀번호, 신호) 설정 핀에 디지털 신호를 출력하기 위한 함수입니다. 매개변수 핀번호 - 신호를 출력할 디지털 핀 번호를 적어줍니다. 신호 - HIGH 또는 LOW를 적어줍니다.
응용하기
위에서 배운 내용을 응용하여 아래의 두가지 프로젝트를 추가로 진행해봅시다. 부저 작동하기 부저는 스피커의 일종으로 5V의 전압을 인가 시켜주면 소리를 내며 작동합니다. LED와 마찬가지로 다리가 긴 쪽이 (+)극, 짧은 쪽이 (-)극에 해당됩니다. 프로그램 코드는 위에서 사용한 (1)코드를 그대로 사용해보세요. ^^
빨강, 노랑, 초록색의 LED를 연결하여 신호등의 원리를 적용해봅시다.
코드는 아래와 같이 하면 되겠죠? void setup() { pinMode(6, OUTPUT); // 디지털 6번 핀을 출력모드로 설정한다. pinMode(5, OUTPUT); // 디지털 5번 핀을 출력모드로 설정한다. pinMode(4, OUTPUT); // 디지털 4번 핀을 출력모드로 설정한다. } void loop() { digitalWrite(6, HIGH); // 6번 핀에 HIGH신호 (5V)를 출력한다. delay(3000); // 3초 동안 유지 digitalWrite(6, LOW); // 6번 핀에 LOW신호 (0V)를 출력한다. digitalWrite(5, HIGH); // 5번 핀에 HIGH신호 (5V)를 출력한다. delay(1000); // 1초 동안 유지 digitalWrite(5, LOW); // 5번 핀에 LOW신호 (0V)를 출력한다. digitalWrite(4, HIGH); // 4번 핀에 HIGH신호 (5V)를 출력한다. delay(3000); // 3초 동안 유지 digitalWrite(4, LOW); // 4번 핀에 LOW신호 (0V)를 출력한다. }
디지털 핀을 통한 디지털 신호 출력은 여기까지입니다..! 다음 글에서는 디지털 핀을 통한 디지털 신호 입력에 대해 알아보도록 할게요. ^^
링크바로가기: https://smartstore.naver.com/mechasolution_com/products/2855891646 |