Title
조회 수 823 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

이번 게시글에서는 6번 강좌에서 셋업하였던 세개의 푸쉬버튼을 이용하여 RGB LED의 색깔을 제어하는 실험을 진행하도록 하겠습니다.

 

목적


  • 아두이노를 Uno 와 아두이노 상의 LED를 레지스터를 이용하여 제어할 수 있다.
  • 아두이노로 LED의 밝기및 색상을 조절할수 있게 된다
  • 푸쉬스위치의 기능을 알수있게 된다.

준비물


ArduinoUno_r2_front450px-300x210.jpgArduino Uno R2

 

저항 220옴.jpg저항

 

400 빵판.jpg브레드 보드

 

푸시.jpg푸쉬버튼

 

 

 

rgb 엘이디.jpgR.G.B. LED

 

 

 

 

Moniter


 

1.jpg

 

Fritzing


브레드보드 레이아웃은 아래와 같습니다. RGB LED의 가장 긴다리는 2번째 줄에 연결하여 GND에 연결되어 있는 것을 주의하십시오

본 레이아웃은 RGB LED가 공통 음극을 가진 타입을 기준으로 작성되었습니다. 만약 공통 양극을 가진 RGB LED를 가지고 있다면 가장 긴 다리를 +5V에 GND대신 연결하십시오.

 

2.jpg

 

Code


아래의 코드를 아두이노에 로드합니다.

시작할때, 모든 LED는 꺼져 있게 되며 버튼을 누르고 있으면 LED는 점점 밝게 빛나게 됩니다. 브레드보드상의 제일 상단에 있는 버튼은 빨강, 중간은 초록, 제일 밑의 버튼은 파랑색을 조절하는 버튼입니다.

버튼들을 서로 눌러서 색이 어떻게 섞이는 지 확인하여 보십시오. 다시 시작하고 싶으시면 아두이노의 리셋버튼을 눌러 초기화 시키십시오. USB커넥터 옆에 있는 버튼입니다.

  1. int redLEDPin = 11;
  2. int greenLEDPin = 10;
  3. int blueLEDPin = 9;
  4.  
  5. int redSwitchPin = 7;
  6. int greenSwitchPin = 6;
  7. int blueSwitchPin = 5;
  8.  
  9. int red = 0;
  10. int blue = 0;
  11. int green = 0;
  12.  
  13. void setup()
  14. {
  15. pinMode(redLEDPin, OUTPUT);
  16. pinMode(greenLEDPin, OUTPUT);
  17. pinMode(blueLEDPin, OUTPUT);
  18. pinMode(redSwitchPin, INPUT_PULLUP);
  19. pinMode(greenSwitchPin, INPUT_PULLUP);
  20. pinMode(blueSwitchPin, INPUT_PULLUP);
  21. }
  22.  
  23. void loop()
  24. {
  25. if (digitalRead(redSwitchPin) == LOW)
  26. {
  27. red ++;
  28. if (red > 255) red = 0;
  29. }
  30. if (digitalRead(greenSwitchPin) == LOW)
  31. {
  32. green ++;
  33. if (green > 255) green = 0;
  34. }
  35. if (digitalRead(blueSwitchPin) == LOW)
  36. {
  37. blue ++;
  38. if (blue > 255) blue = 0;
  39. }
  40. analogWrite(redLEDPin, red);
  41. analogWrite(greenLEDPin, green);
  42. analogWrite(blueLEDPin, blue);
  43. delay(10);
  44. }
  45.  

스케치를 보면 LED를 제어하기 위한 세개의 출력 핀이 있고, 이 출력 핀은 PWM핀으로 LED의 각 컬러로 들어가는 전력을 제어할 있습니다.

또 다른 세개의 핀이 필요한데 이 핀들은 버튼을 위하여 사용이 됩니다. setup함수에서 입력으로 설정되었으며 HIGH상태로 풀업되어, 만약 버튼이 눌리게 된다면 LOW상태로 변화하게 됩니다.

핀이 정의된 다음에는 red, green, blue라는 변수들이 나오게 됩니다.

  1. int red = 0;
  2. int blue = 0;
  3. int green = 0;
  4.  

이 변수들은 LED의 각 RGB 채널의 빛의 세기를 저장하는 값입니다. 만약 red가 0이라면 LED의 빨강색부분은 꺼지게 되며, 255라면 최고치의 빨강색을 밝게 표현합니다.

loop함수는 두 부분으로 나뉘어 있는데 첫번째 부분은 버튼을 체크해서 red, green, blue변수에 버튼의 상태에 따라 필요한 변화를 주는 부분입니다. 예를 들어 빨강색용 버튼을 체크하는 부분은 아래와 같습니다.

  1. if (digitalRead(redSwitchPin) == LOW)
  2. {
  3. red ++;
  4. if (red > 255) red = 0;
  5. }
  6.  

digitalRead함수를 실행하게 되고 red 핀이 LOW상태인것을 발견하게 되면 이것은 버튼이 눌렸다는 것을 의미합니다. 그래서 red변수에 1을 더하게 됩니다.

PWM용으로 쓸수 있는 최대 값은 255이기 때문에 다음 라인에서 red가 255를 넘는지를 확인 한 후 넘었다면 0으로 다시 설정합니다.

두번째 부분은 analogWrite함수를 수행하는 부분으로 각각의 LED의 색을 설정하게 됩니다.

  1. analogWrite(redLEDPin, red);
  2. analogWrite(greenLEDPin, green);
  3. analogWrite(blueLEDPin, blue);
  4.  

 

마지막으로 loop의 마지막에는 짧은 딜레이를 주어 색의 변화를 조금 늦추어 줍니다. 이 딜레이가 다다면 푸쉬버튼의 물리적인 노이즈로 색이 랜덤하게 변할 수 있습니다.


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
14 아두이노 강좌 아두이노란 무엇 일까요??? file 귀욤둥이 2017.02.20 106
13 아두이노 강좌 [아두이노 강좌] 13. 아두이노를 사용하여 DC모터 제어하기 file 귀욤둥이 2017.03.01 578
12 아두이노 강좌 [아두이노 강좌] 12. LCD에 온도 및 조도 표시하기 file 귀욤둥이 2017.02.24 599
11 아두이노 강좌 [아두이노 강좌] 11. LCD 디스플레이 연결하기 file 귀욤둥이 2017.02.24 752
10 아두이노 강좌 [아두이노 강좌] 10. 소리 만들어 음악 연주하기 file 귀욤둥이 2017.02.24 672
9 아두이노 강좌 [아두이노 강좌] 09. 광센서로 조도 측정하기 file 귀욤둥이 2017.02.24 324
8 아두이노 강좌 [아두이노 강좌] 08. 가변저항을 이용하여 아날로그 입력으로 LED 밝기 조절하기 file 귀욤둥이 2017.02.24 714
» 아두이노 강좌 [아두이노 강좌] 07. 버튼을 이용하여 RGB LED 색상 제어하기 file 귀욤둥이 2017.02.23 823
6 아두이노 강좌 [아두이노 강좌] 06. 푸쉬버튼을 이용한 디지털 입력하기 file 귀욤둥이 2017.02.23 409
5 아두이노 강좌 [아두이노 강좌] 05. PC상에서 Serial Monitor로 LED 제어하기 file 귀욤둥이 2017.02.23 341
4 아두이노 강좌 [아두이노 강좌] 04. 쉬프트 레지스터를 이용한 LED제어 file 귀욤둥이 2017.02.21 369
3 아두이노 강좌 [아두이노 강좌] 03. RGB LED 색깔 변경하기 file 귀욤둥이 2017.02.21 219
2 아두이노 강좌 [아두이노 강좌] 02. LED 밝기 변경하기 file 귀욤둥이 2017.02.21 180
1 아두이노 강좌 [아두이노 강좌] 01. LED 깜빡이기 file 귀욤둥이 2017.02.20 153
Board Pagination Prev 1 Next
/ 1