아두이노 하드웨어와 소프트웨어를 설치하였다면 이제 가장 기본적인 LED 켜기를 진행해 보도록 하겠습니다.
LED 는 아두이노 UNO보드를 사용한다면 아래 그림처럼 L이라고 표시된 부분에 위치하고 있습니다. 지금 우리는 저기 보이는 LED를 깜빡이게 해보는 코드를 만들어 보려고 합니다.
먼저 아두이노 IDE 소프트웨어를 켭니다. 그리고 안에 아래와 같이 코드를 입력합니다. 코드에 대한 설명을 한줄씩 해보도록 하겠습니다.
void setup()
이부분은 괄호({ })로 묶여진 내부의 코드가 한번 실행됩니다. 즉 이 셋업은 말그대로 아두이노에 전기가 공급된 이후에 실행이 되며 한번만 동작을 하기 때문에 여러가지 설정값을 지정해 주는 용도로 사용합니다.
void loop()
이 부분은 괄호({ })로 묶여진 내부의 코드가 반복적으로 실행됩니다. 아두이노의 코드는 위에서 아래로 실행이 됩니다. loop 안에 있는 코드는 아두이노에 전기가 끊어질때 까지 무한 반복 됩니다.
본격적으로 코드에 대해 알아봅시다.
pinMode (13, OUTPUT);
위 코드의 의미는 아두 이노의 디지털 핀 13번을 출력으로 사용하겠다는 의미 입니다. 여기서 명령어에 대문자와 소문자가 섞여 있습니다. 이것은 아두이노의 명령어로 약속된 것이라서 대소문자를 반드시 구별해서 작성해 주어야 합니다. 따라서 핀모드를 적을때에는 모두 소문자로 쓰지만 M은 대문자로 작성되어야 합니다.
핀모드는 아두이노의 명령어라고 생각하면 쉽습니다. 디지털 핀은 입력으로 사용될 수도 있고 출력으로 사용될 수도 있습니다. 여기서 입력으로 사용한다는 의미는 외부에서 5V 전압이 입력되었는지를 사용자가 알고 싶은 경우에는 입력으로 설정하고 반대로 내가 5V 전압을 외부로 내보내고 싶다면 출력으로 설정하여 사용합니다. 우리는 LED를 켜는 목적으로 사용하기 때문에 출력으로 설정을 해줍니다. 그리고 아두이노 C프로그램의 기본은 모든 문장이 끝났을때 반드시 마침표인 ; (세미콜론)을 반드시 넣어주어야 합니다. 여기서 : (콜론)이 아니고 세미콜론임에 주의 하여야 합니다. 기본적인 문법을 따르지 않은 경우에 아두이노 IDE는 에러를 반환하게 됩니다.
//
위에 처럼 슬래쉬 두개가 들어간 경우에는 그 뒤에 오는 글자를 주석문으로 처리하는 기능입니다. 그래서 코드 실행과는 아무런 상관이 없습니다. 그러나 이렇게 주석문을 써주는 이유는 추후에 내가 코드를 봤을때 어떤 기능을 하도록 했는지 잘 기억이 나지 않을 수도 있기 때문에 이를 방지하기 위해서 설명을 달아준다고 생각하면 됩니다.
이제 loop 코드로 들어가 봅시다.
digitalWrite(13, HIGH);
위의 코드는 디지털 핀 13번을 켜라는 의미가 되겠습니다. 핀모드와 마찬가지로 digitalWrite는 명령어라고 생각하면 쉽고 당연하게도 W는 대문자로 작성되어야 합니다. 13 이라는 의미는 13번 핀을 의미하고, HIGH는 13번 핀에 5V를 출력하라는 의미 입니다. 즉 13번 핀에 5V를 내보내라 라는 의미가 되는 것이죠. 13번 핀은 아두이노 내부적으로 LED와 연결이 되어있습니다. 그래서 13번 핀을 켜라는 명령이 전달되면 아두이노는 LED를 켜게 됩니다.
delay (1000);
위의 코드는 말 그대로 기다린다는 의미 입니다. 괄호안의 숫자만큼 기다리게 됩니다. 그런데 괄호안은 시간값을 입력하게 되는데 단위는 msec 입니다. 즉 1/1000 초라는 의미입니다. 지금 우리 코드에서는 1000 이라는 값을 넣었는데, 설명하면 1000msec 라는 의미가 되고 이것을 환산하면 1000 X 1/1000 이므로 1초가 됩니다. 즉 1초 동안 기다려라는 의미입니다. 위에 디지털 라이트 명령과 같이 생각하면 LED를 키고나서 1초동안 기다린다는 의미가 되겠습니다. 우리는 앞서 LED가 깜빡이도록 프로그래밍을 한다고 했죠? 그러니 1초동안 켜졌다면 그다음에는 어찌 해야 될까요? 그렇죠 바로 LED를 꺼야 되겠죠? 프로그래밍은 알고 보면 매우 쉽습니다.
digitalWrite(13, LOW);
이제 위의 코드가 무엇을 의미하는지 감이 오죠? 그렇습니다. 13번 핀을 끄라는 의미 입니다. 즉 5V출력이 나가던것을 0V로 변화시키라는 의미이죠. 그러면 LED에서는 무슨일이 일어날까요? LED가 꺼지게 됩니다. 그리고 나서는 무슨 코드를 입력해야 할까요? 얼마동안 꺼져 있을지를 알려줘야 겠지요? 맞습니다. 아래를 봅시다.
delay (1000);
딜레이를 넣어주었습니다. 즉 LED를 끄고 1초를 기다린다는 의미가 되겠습니다.
이제 전체 코드에 대해서 이해가 되나요? LED를 켜고 1초 기다리고 LED를 끄고 1초 기다리고 이게 계속 반복이 되는겁니다.
전체코드는 아래에 적어두었으니 코드 입력을 빠르게 하고 싶으신 분들은 복사하여 붙여넣기 하시면 되겠습니다.
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
'소프트웨어' 카테고리의 다른 글
[아두이노를 배워봅시다!] LCD에 글씨를 써봅시다! (0) | 2023.03.29 |
---|---|
[아두이노를 배워봅시다!] 통신기능을 이용해서 LED를 켜보자. (0) | 2023.03.28 |
[아두이노를 배워보자!] 아두이노 기초 01 (0) | 2023.03.28 |
[아두이노를 배워봅시다!] 아두이노 CH340 드라이버 설치하기 (0) | 2023.03.27 |
[아두이노를 배워봅시다!] 아두이노 IDE 다운 받기 (0) | 2023.03.27 |