아두이노 프로그래밍 3일차 – Part1 컬러 LED바 활용하기 강사: 김영준 목원대학교 겸임교수 헬로앱스 (www.helloapps.co.kr)
컬러 LED바 기본 명령어 • 컬러 LED바는 4개의 명령어로 구성됩니다. • NSBegin -> LED바를 시작합니다. • NSClear -> LED바를 모두 끕니다. • NSSetColor -> LED바의 색상을 지정합니다. • NSShow -> LED바의 색상을 표시합니다.
컬러 LED바 기본 명령어 • 스크립트 예입니다. LED바를 디지털 2번에 연결합니다. void setup() { NSBegin(8, 2) } void loop() NSClear() NSSetColor(0, 255, 0, 0) NSShow() Delay(100)
순차로 켜지는 신호등 만들기 컬러 LED바의 개별 LED 색상을 제어해 봅니다. • 빨강 (3초), 초록 (3초), 주황(1초)의 순서대로 켜지도록 구현합니다. • 첫번째 LED 셀은 빨강색으로 켭니다. • 두번째 LED 셀은 초록색으로 켭니다. • 세번째 LED 셀은 주황색으로 켭니다. • 위의 과정을 반복합니다.
순차로 켜지는 신호등 만들기 void setup() { NSBegin(8, 2) } void loop() NSClear() NSSetColor(0, 255, 0, 0) NSShow() Delay(3000) NSSetColor(1, 0, 255, 0) NSSetColor(2, 255, 127, 0) Delay(1000)
무지개 색상 만들기 7개의 LED 셀을 이용하여 무지개 색상을 표시해 봅니다. • 무지개 색상의 RGB 값은 아래의 이미지를 참고합니다.
무지개 색상 만들기 void setup() { NSBegin(8, 2) } void loop() NSClear() NSSetColor(0, 255, 0, 0) NSSetColor(1, 255, 127, NSSetColor(2, 255, 255, 0) ... NSShow() Delay(1000)
전체 LED 색상 제어하기 전체 LED의 색상을 빨강 색으로 1초간격으로 점멸시켜 봅니다. • NSSetAllColor 명령어를 이용하여 LED의 색상을 변경해 줍니다. • NSShow 명령어는 마지막에 한번 실행해 줍니다.
전체 LED 색상 제어하기 void setup() { NSBegin(8, 2) } void loop() NSSetAllColor(255, 0, 0) NSShow() Delay(1000) NSClear()
전체 색상을 순차적으로 변경하기 전체 LED의 색상을 빨강, 초록, 파랑의 순서로 변화시켜 봅니다. • NSSetAllColor 명령어를 이용하여 LED의 색상을 변경해 줍니다. • NSShow 명령어는 마지막에 한번 실행해 줍니다. • 1초 간격으로 색상을 변화시켜 봅니다.
전체 색상을 순차적으로 변경하기 void setup() { NSBegin(8, 2) } void loop() NSSetAllColor(255, 0, 0) NSShow() Delay(1000) NSSetAllColor(0, 255, 0) NSSetAllColor(0, 0, 255)
점점 밝아지는 LED 등 만들기 전체 LED의 색상을 점점 밝아지도록 합니다. • NSSetAllColor 명령어를 이용하여 LED의 색상을 변경해 줍니다. • NSShow 명령어는 반복문 밖에서 실행해 줍니다. • 다중 반복문을 사용하여 0.01초 간격으로 밝기를 수정해 줍니다.
점점 밝아지는 LED 등 만들기 void setup() { NSBegin(8, 2) } void loop() for (b = 0; b < 256; b++) { NSSetAllColor(b, b, b) NSShow() Delay(10)
랜덤함수 명령어 random() 함수를 이용하여 임의의 값을 생성합니다. • random(a) 는 0부터 a보다 작은 정수중에서 임의의 한 수를 넘겨줍니다. • random(a, b) 는 a부터 b보다 작은 정수중에서 임의의 한 수를 넘겨줍니다.
랜덤함수 명령어 void setup() { } void loop() a = random(100) Print("A = ") PrintLine(a) b = random(256) Print("B = ") PrintLine(b) c = random(50, 200) Print("C = ") PrintLine(c) Delay(1000)
전체 색상을 랜덤하게 표시하기 random() 함수를 이용하여 전체 색상을 임의로 색상으로 표시합니다. • random(256) 명령어를 이용하여 임의의 색상값을 생성합니다. • Red, Green, Blue 색상에 대해 각각 임의의 색상을 생성합니다. • 0.5초 간격으로 색상을 변경해 봅니다.
전체 색상을 랜덤하게 표시하기 void setup() { NSBegin(8, 2) } void loop() r = random(256) g = random(256) b = random(256) NSSetAllColor(r, g, b) NSShow() Delay(500)
임의 위치의 LED를 랜덤 색상으로 표시하기 random() 함수를 이용하여 임의의 위치의 LED를 임의의 색상으로 표시합니 다. • random(8) 명령어를 이용하여 임의의 위치를 생성합니다. • random(256) 명령어를 이용하여 임의의 색상값을 생성합니다. • Red, Green, Blue 색상에 대해 각각 임의의 색상을 생성합니다. • 0.1초 간격으로 색상을 변경해 봅니다.
임의 위치의 LED를 랜덤 색상으로 표시하기 void setup() { NSBegin(8, 2) } void loop() p = random(8) r = random(256) g = random(256) b = random(256) NSSetColor(p, r, g, b) NSShow() Delay(100)
임의의 색상 구간을 256단계로 변화하기 map 함수를 이용하여, 임의의 색상 구간을 256 단계로 변화시킵니다. • random(256) 명령어를 이용하여 시작 색상을 생성합니다. • random(시작값, 256) 명령어를 이용하여 시작 색상부터 255 사이에 끝 색 상값을 생성합니다. • 첫번째 LED의 빨간색 값을 256단계로 변화시켜 봅니다. • 0.01초 간격으로 색상을 변경합니다.
임의의 색상 구간을 256단계로 변화하기 void setup() { NSBegin(8, 2) } void loop() r1 = random(256) r2 = random(r1, 256) for (i = 0; i < 256; i++) r = map(i, 0, 255, r1, r2) NSSetColor(0, r, 0, 0) NSShow() Delay(10)
초록과 파랑색도 임의의 구간으로 변화시켜 봅니다. void setup() { NSBegin(8, 2) } void loop() r1 = random(256) r2 = random(r1, 256) g1 = random(256) g2 = random(g1, 256) b1 = random(256) b2 = random(b1, 256) for (i = 0; i < 256; i++) r = map(i, 0, 255, r1, r2) g = map(i, 0, 255, g1, g2) b = map(i, 0, 255, b1, b2) NSSetColor(0, r, g, b) NSShow() Delay(10)
전체 LED 색상을 임의의 구간으로 변화시켜 봅니다. void setup() { NSBegin(8, 2) } void loop() r1 = random(256) r2 = random(r1, 256) g1 = random(256) g2 = random(g1, 256) b1 = random(256) b2 = random(b1, 256) for (i = 0; i < 256; i++) r = map(i, 0, 255, r1, r2) g = map(i, 0, 255, g1, g2) b = map(i, 0, 255, b1, b2) NSSetAllColor(r, g, b) NSShow() Delay(10)
실습: 밝기가 4단계로 조절되는 LED등 만들기 디지털 버튼으로 LED의 밝기를 조절하는 장치를 장치를 만들어 봅니다. • 디지털 2번에 LED바를 연결합니다. • 디지털 12번에 버튼을 연결합니다. • 버튼을 누를 때 마다 1단계, 2단계, 3단계, 꺼짐의 순서로 밝기를 변화시킵 니다. • 전체 LED 색상을 변화시키는 함수를 구현하여 활용합니다.
실습: 밝기가 4단계로 조절되는 LED등 만들기 s = 0 void setup() { NSBegin(8, 2) } void loop() d12 = DigitalRead(12) if (d12 == HIGH) s = s + 1 if (s > 3) if (s == 0) NSSetAllColor(0, 0, 0) else if (s == 1) NSSetAllColor(80, 80, 80) else if (s == 2) NSSetAllColor(160, 160, 160) else if (s == 3) NSSetAllColor(240, 240, 240) Delay(1000)
실습: 30초후에 꺼지는 기능 추가하기 디지털 버튼을 누르면 30초 후에 LED가 꺼지는 장치를 구현합니다. • 디지털 2번에 LED바를 연결합니다. • 디지털 12번에 버튼을 연결합니다. • 버튼을 누르면 30초 후에 LED등이 꺼지도록 합니다.
실습: 30초후에 꺼지는 기능 추가하기 void setup() { NSBegin(8, 2) } void loop() d12 = DigitalRead(12) if (d12 == HIGH) NSSetAllColor(255, 255, 255) Delay(30000) NSSetAllColor(0, 0, 0) Delay(100)
실습: 30초간 작동하는 무드등 만들기 디지털 버튼을 누르면 부드럽게 변하는 무드등이 30초가 켜지도록 합니다. • 버튼을 누르면 임의의 색상 구간에서 색상이 변하도록 합니다. • 등이 켜지고 30초 후에 LED등이 꺼지도록 합니다.
실습: 30초간 작동하는 무드등 만들기 void setup() void MoodLight() { { NSBegin(8, 2) } void loop() d12 = DigitalRead(12) if (d12 == HIGH) MoodLight() NSSetAllColor(0, 0, 0) Delay(100) void MoodLight() { for (n = 0; n < 15; n++) r1 = random(256) r2 = random(r1, 256) g1 = random(256) g2 = random(g1, 256) b1 = random(256) b2 = random(b1, 256) for (i = 0; i < 200; i++) r = map(i, 0, 200, r1, r2) g = map(i, 0, 200, g1, g2) b = map(i, 0, 200, b1, b2) NSSetAllColor(r, g, b) Delay(10) }
실습: 어두워지면 작동하는 무드등 만들기 조도센서 값을 이용하여 어두워 지면 무드등이 켜지도록 합니다. • 아날로그 0번에 조도센서를 연결합니다. • 디지털 2번에 LED바를 연결합니다.
실습: 어두워지면 작동하는 무드등 만들기 void MoodLight() { for (n = 0; n < 15; n++) r1 = random(256) r2 = random(r1, 256) g1 = random(256) g2 = random(g1, 256) b1 = random(256) b2 = random(b1, 256) for (i = 0; i < 200; i++) r = map(i, 0, 200, r1, r2) g = map(i, 0, 200, g1, g2) b = map(i, 0, 200, b1, b2) NSSetAllColor(r, g, b) Delay(10) } void setup() { NSBegin(8, 2) } void loop() a0 = AnalogRead(0) if (a0 < 500) MoodLight() else NSSetAllColor(0, 0, 0) Delay(100)
실습: 초록 경광등 만들기 처음 4개의 LED가 서서히 밝아지다가 어두워 지는 기능을 구현합니다. • 디지털 2번에 LED바를 연결합니다.
실습: 초록 경광등 만들기 void AllColor1(int r, int g, int b) { for (i = 0; i < 4; i++) NSSetColor(i, r, g, b) } NSShow() void setup() { NSBegin(8, 2) } void loop() for (i = 0; i < 256; i++) AllColor1(0, i, 0) Delay(10) for (i = 255; i >= 0; i--)
실습: 초록 경광등 만들기 뒤쪽 4개의 LED는 앞쪽 4개의 LED와 반대로 밝기가 변하도록 합니다. • 앞쪽 4개의 LED가 밝아지면 뒤쪽 4개의 LED는 어두워 지도록 합니다.
실습: 초록 경광등 만들기 void AllColor1(int r, int g, int b) { for (i = 0; i < 4; i++) NSSetColor(i, r, g, b) } NSShow() void AllColor2(int r, int g, int b) for (i = 4; i < 8; i++) void setup() { NSBegin(8, 2) } void loop() for (i = 0; i < 256; i++) AllColor1(0, i, 0) AllColor2(0, 255 - i, 0) Delay(10) for (i = 255; i >= 0; i--)
실습: 빨강 파랑 경광등 만들기 앞쪽 4개의 LED는 빨강, 뒤쪽 4개의 LED는 파랑으로 변하도록 구현합니다. • 디지털 2번에 LED바를 연결합니다. • 초록 경광등의 기능을 응용합니다.
실습: 빨강 파랑 경광등 만들기 void AllColor1(int r) { for (i = 0; i < 4; i++) NSSetColor(i, r, 0, 0) } NSShow() void AllColor2(int b) for (i = 4; i < 8; i++) NSSetColor(i, 0, 0, b) void setup() { NSBegin(8, 2) } void loop() for (i = 0; i < 256; i++) AllColor1(i) AllColor2(255 - i) Delay(10) for (i = 255; i >= 0; i--)
실습: 침입 감지용 경보음 및 경광등 장치 PSD 센서 앞에 장애물이 감지되면 사이렌 소리와 함께 경광등을 작동시킵니다. • 아날로그 0번에 PSD 센서를 연결합니다. • 디지털 5번에 스피커를 연결합니다. • for 반복문 안에 스피커 Tone 명령어를 추가합니다.
실습: 침입 감지용 경보음 및 경광등 장치 void AllColor1(int r) { for (i = 0; i < 4; i++) NSSetColor(i, r, 0, 0) } NSShow() void AllColor2(int b) for (i = 4; i < 8; i++) NSSetColor(i, 0, 0, b) void setup() { NSBegin(8, 2) } void loop() a0 = AnalogRead(0) if (a0 > 300) for (i = 0; i < 256; i++) AllColor1(i) AllColor2(255 - i) Tone(5, i * i, 20) Delay(10) for (i = 255; i >= 0; i--)