아두이노 실습 3주차

2023. 9. 24. 13:58아두이노 (Arduino)

아두이노 실습에 들어가기 전에...

아두이노 실습에 들어가기 전에 먼저 이전시간에 사용했던 LED와 함수에 대해 잠시 설명하려고 한다.

 

 

LED란?

한쪽 방향으로만 전류가 흐르도록 제어하는 반도체 소자를 다이오드라고 하며, 다이오드 중 전기 에너지를 빛 에너지로 변환하는 것을 LED(Light Emitting Diode)라고 한다.

LED는 다양한 색깔의 빛을 낼 수 있으며, 에너지 효율이 높고 직진성이 좋아 멀리서도 잘 보인다는 장점이 있다.

 

LED 구조

LED2개의 전극 단자로 구성되어 있으며, 긴 단자는 애노드(Anode), 짧은 단자는 캐소드(Cathode)라 부른다. 애노드에 (+)전극을 캐소드에 (-)전극을 연결하면 LED가 켜지게 된다.

 

 

순차구조란?

아두이노 스케치는 순차 구조를 가지고 있다.

'void setup()' 함수가 최초 한번만 실행되고 'void loop()' 함수가 무한반복 실행이 되기 때문에 그렇다.

 

 

 

함수 설명

먼저, 디지털과 아날로그에 대한 함수이다.

 

digitalRead() : 디지털 입력장치로부터 디지털 신호를 읽어온다.

 

digitalWrite() : 디지털 출력장치에서 디지털 신호를 보낸다.

 

analogRead() : 아날로그 입력장치로부터 아날로그 신호를 읽어온다. (0~1023)

 

analogWrite() : 아날로그 출력장치에 아날로그 신호를 보낸다. (0~255)

 

 

pinMode(사용할 핀의 번호, 입력(INPUT) or 출력(OUTPUT));

: 핀의 상태를 입력 또는 출력 상태로 설정한다. (디지털 입출력시 사용)

 

delay(대기할 시간(밀리초/ms단위));

: 입력한 시간만큼 프로그램 일시 중지(대기, 유지)

 

 

 

 

아두이노 실습 3주차

 

첫 실습에서는 위에서 설명한 아날로그 제어 함수로 LED의 불빛이 점점 밝아졌다 점점 어두워지게 만들어보려고 한다.

 

아두이노와 LED를 아래 그림과 같이 연결한다.

 

 

먼저 사용하려는 9번 핀을 ledPin 변수에 담는다.

 

void loop() 함수 안에서는 LED의 불빛이 점점 밝아졌다 점점 어두워지는 것을 구현한다.

 

for문을 통해서 fadeValue 값이 0에서 255까지 증가하게 하고 analogWrite함수를 이용하여 9번핀에 신호를 보내게 된다.

불빛이 점점 밝아지는 모습을 확실하게 관찰하기 위해 delay함수를 사용했다.

 

마찬가지로 for문을 통해서 fadeValue 값이 255에서 0까지 감소하게 하여 불빛이 점점 더 어두워 지게 된다.

 

 

 

 

 

 

다음으로 여러개의 LED들이 차례대로 켜지는 스케치를 하려고 한다.

 

아두이노와 총 8개의 LED를 아래 그림과 같이 연결한다.

 

 

총 8개의 LED를 2번 핀 부터 9번 핀 까지 연결하기 때문에 LED_pin 배열 안에 2부터 9까지의 값을 넣었다.

 

setup 함수에서 for문을 이용하여 각 핀을 출력으로 설정한다.

 

 

loop 함수에서는 LED가 차례대로 꺼졌다 켜지는 것을 구현한다.

 

for 문을 이용해서 각 핀을 차례대로 켜지게 하고 다시 차례대로 꺼지게 한다.

 

 

 

 

 

 

 

 

조금 복잡하긴 하지만 홀수번 LED가 먼저 켜졌다 꺼지고 짝수번 LED가 켜졌다 꺼지는 스케치도 해 보았다.

 

위에 차례대로 LED를 켜고 끄는 것과 비슷하다. 단지 홀수번 LED를 먼저 켜고 끄고, 이후에 짝수번 LED를 켜고 끄는 로직이 추가되었다.

 

 

 

 

 

 

다음은 RGB LED를 제어하는 실습을 진행해 보려고 한다.

 

빨간색, 초록색, 파란색 세 종류의 색을 이용하며, 0~255 범위의 analogWrite 함수의 인자 값을 조절하여 다양한 색을 표현할 수 있다.

 

아래 그림과 같이 아두이노와 RGB LED를 연결한다.

 

 

(참고로 ini값은 따로 설정하고 analogWrite로 출력해주지 않아도 되나 학교에서 실습 할 당시 사용하던 RGB LED가 오래되어 제대로 불빛이 들어오지 않아 출력을 넣었다.)

 

RGB LED에 빨간색 핀, 초록색 핀, 파란색 핀을 각각 아두이노 보드의 어느 핀에 연결했는지 확인하고 변수로 설정한다.

 

analogWrite로 빨간 핀에 먼저 255값을 출력한다. 즉, 빨간색 불빛을 들어오게 한다는 뜻이다.

0.3초 동안 지연시키고 다시 0값을 출력하여 빨간색 불빛을 끈다.

 

 

같은 방식으로 초록색과 파란색 LED를 켜고 끄게 하는 스케치 이다.

 

 

 

 

(학교에서 실습할 당시 사용했던 LED가 오래되어 상태가 안좋아 색이 살짝 이상하다. 감안하여 봐 주길 바란다...)

 

 

 

 

여기서 RGB LED의 특징은 그냥 빨간색, 초록색, 파란색을 번갈아가며 내는 것이 아니라 RGB값을 이용하여 내가 원하는 색을 낼 수 있다는 것이다.

 

RGB 색상 코드 차트를 제공하는 사이트에 들어가면 내가 원하는 색의 RGB값을 알 수 있다.

 

구글에 'RGB 색상 코드 차트' 를 검색하면 나온다.

 

 

 

본인이 원하는 색을 선택하고 아래와 같이 스케치 하면 된다.

다음 수업시간에 배울 예정이니 자세히 설명하지는 않고 넘어가려고 한다.

 

setColor에 자신이 원하는 색의 RGB값을 각각 입력해주면 된다.

 

 

 

 

LED가 오래되서 정확히 내가 원하던 색이 아니지만 위에서 R, G, B값을 각각 켜봤던 것과는 색이 다르다는 것을 알 수 있다. 즉, 우리가 입력한 RGB값을 확인하고 출력한다는 것이다.