Hardware/Arduino

아두이노 LED 10개 컨트롤 하기

초인로크 2021. 6. 15. 10:29
반응형

강의 자료를 만들고 있는데 이것도 조만간 강좌로 정리해서 올려야겠다.

 

필요한 준비물은

 

1. Arduino UNO 본체 1개

 

2. LED 10개

 

3. 220Ω 짜리 저항 10개

   (저항은 제대로 하려면 각각의 LED에 따라 계산을 해 줘야 하지만 여기선 그냥 220Ω로 통일한다.)

 

4. 브레드보드 1개

 

5. USB 케이블

 

6. 컴퓨터

 

일단 이 정도만 있으면 LED 컨트롤은 문제없이 가능하다.

 

 

(1) 프로그래밍 준비

 

일단은 시리얼 모니터로 컨트롤할 것을 생각하고 있기에,

 

Arduino IDE의 Example → 04.Communication → SerialEvent의 샘플 소스를 이용하기로 한다.

 

 

(2) 프로그래밍: 핀모드 설정

LED를 아래와 같은 핀에 연결해 준다.

 

LED 1 → A4

LED 2 → A5

LED 3 → D2

LED 4 → D3

LED 5 → D4

LED 6 → D5

LED 7 → D6

LED 8 → D7

LED 9 → D8

LED 10 → D9

 

void setup() 부분에 각각의 핀 모드는 아래와 같이 해 준다.

 

pinMode(A4, OUTPUT); //첫 번째

..

..

pinMode(9, OUTPUT); //열 번째

 

(3) 프로그래밍: 디지털 출력 설정

시리얼 통신의 규격을 설정해 주고, 각각의 String 배열에 따른 값에 대한 설정을 해 준다.

 

아래의 샘플은 11자리의 스트링 배열에 대한 조건문으로,

10자리의  숫자와 마지막 엔터키에 대한 아스키코드를 11자리의 스트링 배열로 사용한다.

 

"1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "\n"

 

예를 들면 아래는 스트링 배열에 11자리의 문자가 왔을 경우에,

0번째 배열의 숫자가 1 일 경우에는 첫 번째 LED를 켜는 프로그래밍을 나타낸다.

 

if(inputString.length()==11){
      if(inputString.charAt(0)=='1'){
        digitalWrite(9, HIGH);
      }else{
        digitalWrite(9, LOW);
      }

}

 

엔터키에 대한 판정은 SerialEvent의 void serialEvent() 함수에서 이루어진다.

54열의 코드를 보면 inChar == '\n', 에서 엔터키를 인식해서 조건을 만족할 경우에는

stringComplete = true; 로 세팅 함으로써 void loop() 안의 LED제어문을 실행할 수 있는 것이다.

 

이 소스코드를 응용하여 10자리 LED에 대한 프로그래밍을 하면 된다.

 

(4) 출력 결과

 

시리얼 모니터에 1010101010을 입력하고 엔터를 치면 아래와 같이 LED가 점등된다.

 

 

 

반응형