※Blink 예제
아두이노 보드를 처음 열면, 틴커캐드에는 다음과 같은 명령어가 들어가 있습니다.
블럭으로 봐도 똑같이 들어가 있습니다.
이거, 뭐 하는 명령어일까요?
일단 코드부터 뜯어봅시다.
※코드 구성
// C++ code
//
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
digitalWrite(LED_BUILTIN, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(LED_BUILTIN, LOW);
delay(1000); // Wait for 1000 millisecond(s)
}
일단 //처리된 부분은 전부 주석입니다. 해석할 필요도 없이 간단하니 패스
그러면 코드를 전체적으로 두 부분으로 쪼갤 수 있는데, 바로
void setup() 부분과
void loop() 부분입니다.
※ void setup()
void setup() 부분은 기본 할당입니다. 아두이노 보드를 시작한 뒤 한번, 리셋 한 뒤 한번씩만 실행되는 부분입니다.
이 부분 안에 pinMode(LED_BUILTIN, OUTPUT); 가 적혀 있네요.
이 명령어는 LED_BUILTIN 의 pinMode 를 OUTPUT 으로 설정한다 라는 의미입니다.
조금 알기 쉽게 말하자면, LED_BUILTIN 의 핀 설정을 출력으로 변경한다는 것입니다.
여기서 출력은 아두이노가 이 핀을 통해서 신호를 보낼 수 있는 상태로 바꿈을 의미합니다.
※ void loop()
void loop() 부분은 반복문입니다. 코드 안의 내용을 계속 아두이노 보드가 반복합니다.
이 부분 안에는
digitalWrite(LED_BUILTIN, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(LED_BUILTIN, LOW);
delay(1000); // Wait for 1000 millisecond(s)
가 적혀 있습니다.
위쪽 2줄이랑 아래쪽 2줄이 구조가 비슷해 보이네요.
digitalWrite(LED_BUILTIN, HIGH); 명령어를 해석해 보죠.
LED_BUILTIN핀에 HIGH 신호를 보낸다는 것입니다.
digitalWrite를 해석 안했다고 생각할 수 있는데, 이 digitalWrite 명령어는 특정한 핀(여기서는 LED_BUILTIN)을 HIGH(5V), LOW(0V) 로 만드는 함수입니다.
디지털 출력 함수이죠.
그럼 남은 줄인 delay(1000); // Wait for 1000 millisecond(s)를 해석해 보죠.
주석을 제거하면 남는 부분은 delay(1000); 인데, 이 부분이랑 주석이 알려주는 바랑 같을 것 같죠?
실제로도 맞습니다. delay 함수는 매개변수(괄호 안) 에 정한 시간(밀리초 단위) 동안 프로그램을 정지합니다.
1000밀리초가 1초이니, 1초 단위로 멈추게 되겠네요.
좋아요, void loop() 안의 모든 구문을 해석했습니다.
※ 코드 구성
그렇다면 이 코드의 결론은, LED_BUILTIN을 1초 주기로 HIGH와 LOW를 바꾸는 코드가 되겠습니다.
자, 이제 LED_BUILTIN이 어디서 작동하는지 알아볼까요?
일반적으로 LED_BUILTIN은 아두이노 우노 보드의 내장 LED를 뜻합니다. 13번 핀과 연결되어 있죠.
즉, LED_BUILTIN 대신 13을 넣어도 같은 방법으로 동작한다는 것입니다.아두이노 소스코드를 뜯어서 13번 핀 말고 다른 핀으로 바꿀 수도 있지만 이건 여기서 다룰 내용이 아니고..
아무튼 코드를 실행해보도록 합시다.
※ 코드 결과
좋아요, 실제로 틴커캐드에서 이 코드를 실행하니 아두이노 내장 보드의 LED가 점멸하게 되었습니다.
'프로그래밍 > Arduino' 카테고리의 다른 글
5장. 3색 LED 실습 (0) | 2024.05.06 |
---|---|
4장. LED와 버튼 (0) | 2024.05.05 |
3-1장. 케이블과 전선 (0) | 2024.04.28 |
5-2장. 아두이노 틴커캐드 사용법 (0) | 2024.04.28 |
4-2장.틴커캐드로 아두이노 시뮬레이터 들어가기 (0) | 2024.04.28 |