본문 바로가기
아두이노 기초 학습

10. 아두이노 시리얼통신을 이용한 LED ON/OFF ( 1 )

by 에이치엘 2022. 12. 17.

★★ 준비물 ★★

◎ 저항 330 옴

◎ LED 1개

 

★★ 회로 ★★

빵판 사용의 예.
빵판을 사용하지 않을 때의 예

◎ LED 두 발 중. 긴쪽이 (+), 짧은 쪽이 (-) 입니다. +는 2번, -는 Gnd에 연결해주세요.

◎ +를 2번으로 연결하는 이유는 2번 핀을 OUTPUT으로 설정하여, 전기신호를 제어하여 LED를 켜고 끄기 위함입니다

 

1. 기초학습 9에서 사용한 채팅 코드를 다음과 같이 수정합니다

◎ #define LED_PIN 2 : #define은 지시문으로 'LED_PIN'을 식별자, '2'는 상수라고 하며, 쉽게 설명하자면, LED_PIN 은 2와 같다. 라고 생각하면 됩니다. 또한 다음과 같이 작성하셔도 됩니다

 - const byte Led_pin = 2; // 변수 타입(형) 앞에 const가 붙을 경우, 해당 변수의 값을 수정할 수 없는 오직 읽기만 가능.

( byte, int 외 다른 타입을 사용해도 무방합니다 )

  - byte Led_pin = 2; // const를 제외한 일반적인 변수로 사용해도 됩니다. 단! 일반적인 변수로 사용할 경우, 실수로 해당 변수의 값을 변경할 경우, 문제가 발생될 수 있습니다.

※ #define 지시문은 세미콜론(;)을 붙이지 않습니다 ( 좀 더 깊게 공부하시고 싶을 경우, '전처리기 지시문'을 검색하세요 )

★ 제가 #define 을 사용하는 이유는 메모리를 차지하지 않기 때문입니다. 그 외 const, 변수 등은 메로리를 차지합니다.

 

◎ pinMode() : pinMode()함수는 어떤 핀을 어떻게 활용할 것인지 모드를 설정해주는 역할을 합니다. 그래서 아두이노가 실행되고 최초 1회 실행되는 setup()함수에 정의합니다. 또한 pinMode(핀번호, 모드값)와 같이 인자로는 핀번호와 모드를 인자로 넘겨줘야되며, 본 예제는 2번핀을 이용하여 외부로 전기를 흐르게 해야되므로 지시문으로 작성한 LED_PIN과 OUPUT을 인자로 넘겨줍니다.

※ 모드값은 OUTPUT, INPUT, INPUT_PULLIP 3가지 값이 존재하며, 핀을 어떤 용도로 사용할 것인가에 따라 모드 값은 달라집니다.

 

◎ protocol : 지난 기초학습 9에서 채팅을 통해 알아보았습니다. 기초학습 9를 참고해주세요.

 

◎ digitalWrite() : 해당 함수는 디지털 값을 설정하여 해당핀의 상태를 변경하는 함수 입니다. HIGH 또는 LOW 값을 인자로 넘겨줄 수 있으며, HIGH 는 전기를 흘려주겠다, LOW는 전기를 차단하겠다는 뜻입니다. digiralWrite(핀번호, 값)함수 역시 핀번호와 값을 인자로 넘겨줘야되며, 본 예제에서는 LED를 켜기위해 LED_PIN 식별자와 HIGH 값을, LED를 끄기 위해 LED_PIN 식별자와 LOW 값을 인자로 넘겨주었습니다

 

2. 다음과 같이 시리얼 모니터를 활용하여 프로토콜을 전송합니다

◎ ON : LED 켜짐

◎ OFF : LED 꺼짐

※ 동작이 제대로 안될때는 아래 새 줄('\n') 설정이 정확히 되었는지 확인합니다

 

★ 이번 시간 내용을 정리합니다

 - #define 지시문 : 메모리에 올라가지 않는다, 식별자(이름)를 지정할 수 있다. 식별자의 상수를 입력 설정할 수 있다.

                              #define 은 세미콜론(;)을 뒤에 붙이지 않는다.( 그외 사용법은 더 있으나 기초이기에 여기까지만. )

 - pinMode() : 아두이노 PIN을 사용하기 위해 어떤 핀을 어떤 모드로 사용할 것인지 설정하는 함수.

 - digitalWrite() : 어떤 PIN을 HIGH , LOW 값을 사용하여 전기를 흐르게 하거나 전기를 차단하는 역할을 한다.

  ※ pinMode()를 통해 해당 핀이 설정되어야 정상동작합니다. pinMode()를 설정하지 않을 경우 동작하지 않습니다.

 

※ HIGH 는 1과 같으며 true 와 같습니다. LOW는 0과 같으며 false 와 같습니다.

아래와 같이 digitalWrite() 함수의 값을 변경해서 응용할 수 있도록합니다

 

 

★★ 다음 시간에는 본 소스코드, 회로 수정 없이, IOT코아 앱과 IOT리아 앱을 이용하여 사물인터넷(IOT)을 진행할 예정입니다. 

댓글