본문 바로가기
Study/Arduino

Arduino Sensor kit 1 - 3색 LED

by Answer Choi 2017. 9. 20.
반응형


Arduino를 이용한 센서 킷 실습을 하려고 합니다.


사용할 센서 킷은 아래와 같습니다.



아두이노는 아두이노 우노 WIFI입니다.



첫번째는 3색LED 테스트입니다.




3색 LED입니다.


R G B GND 라고 적혀있는데, R G B 는 3색 LED의 색상이고, 


이곳에 +5V가 흐르고, GND에 0V 가 흐르면 LED가 켜지게 됩니다.




1. LED 오토플래셔


소스 다운로드


결선은 RGB를 차례대로 4,3,2번에 연결하고, GND를 GND라고 적혀있는 곳에 연결해 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
int LED_R=4int LED_G=3int LED_B=2;
int col=0;
void setup() {
  // put your setup code here, to run once:
  pinMode(LED_R,OUTPUT);
  pinMode(LED_G,OUTPUT);
  pinMode(LED_B,OUTPUT);
  Serial.begin(9600);
}
 
void loop() {
  // put your main code here, to run repeatedly:  
  col++;
  if(col>7)
    col=1;
  color(col);
  Serial.print("col=");
  Serial.println(col);
  delay(1000);
}
 
void color(int color){
  switch(color){
    case 1:
      digitalWrite(LED_R,HIGH);
      digitalWrite(LED_G,LOW);
      digitalWrite(LED_B,LOW);
    break;
    case 2:
      digitalWrite(LED_R,LOW);
      digitalWrite(LED_G,HIGH);
      digitalWrite(LED_B,LOW);
    break;
    case 3:
      digitalWrite(LED_R,LOW);
      digitalWrite(LED_G,LOW);
      digitalWrite(LED_B,HIGH);
    break;  
    case 4:
      digitalWrite(LED_R,HIGH);
      digitalWrite(LED_G,HIGH);
      digitalWrite(LED_B,LOW);
    break;
    case 5:
      digitalWrite(LED_R,LOW);
      digitalWrite(LED_G,HIGH);
      digitalWrite(LED_B,HIGH);
    break;
    case 6:
      digitalWrite(LED_R,HIGH);
      digitalWrite(LED_G,LOW);
      digitalWrite(LED_B,HIGH);
    break;
    case 7:
      digitalWrite(LED_R,HIGH);
      digitalWrite(LED_G,HIGH);
      digitalWrite(LED_B,HIGH);
    break
  }
}
cs


Line 5~7 : 포트를 OUTPUT으로 설정해줍니다.


Line 23~59 : case문을 이용하여 3색 LED를 차례대로 켜줄뿐 아니라, 혼합해서도 켜주게 합니다.



연결한 후 켜져있는 깜박이는 모습입니다.



동작 모습입니다.



printf를 통해 serial로 출력된 모습입니다.



2. 입력값에 따른 LED 켜기


소스 다운로드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
int LED_R=4int LED_G=3int LED_B=2;
int col=0;
void setup() {
  // put your setup code here, to run once:
  pinMode(LED_R,OUTPUT);
  pinMode(LED_G,OUTPUT);
  pinMode(LED_B,OUTPUT);
  Serial.begin(9600);
  Serial.println("Plz typing a or b or c");
}
 
void loop() {
  // put your main code here, to run repeatedly:  
  if(Serial.available()>0) {
   byte data = Serial.read();
   Serial.write(data);
   Serial.print(" ");
   Serial.println(data);
   if((data==97)||(data==98)||(data==99))
    color(data);
   else
     Serial.println("Retry typing");
  
}
 
void color(int color){
  switch(color){
    case 97:
      digitalWrite(LED_R,HIGH);
      digitalWrite(LED_G,LOW);
      digitalWrite(LED_B,LOW);
    break;
    case 98:
      digitalWrite(LED_R,LOW);
      digitalWrite(LED_G,HIGH);
      digitalWrite(LED_B,LOW);
    break;
    case 99:
      digitalWrite(LED_R,LOW);
      digitalWrite(LED_G,LOW);
      digitalWrite(LED_B,HIGH);
    break;      
  }
}

cs


이번 소스는 a,b,c 입력값을 받아서 R,G,B를 켜주는 소스입니다.


Line 14~23 : 키 입력을 받습니다. a,b,c인 경우만 LED를 켭니다.



실행모습입니다.





반응형

인기글