아두이노 냠냠

10 LED 3개 IF문으로 깜박이기

낭만독타 2020. 10. 24. 11:29

1. 이번 시간은

 

LED 3개 차례로 깜박이기를 조금 응용하였습니다. 시리얼모니터에서 1을 입력하면 초록색 LED가 켜지고 2를 입력하면 노란색 LED가 켜지고 3을 입력하면 빨간색 LED가 켜지는 것입니다. IF문으로 조정하는 겁니다.

 

 


2. 코드

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
int green = 12;        //초록색 LED를 12번으로
int yellow = 10;       //노란색 LED를 10번으로
int red = 8;           //빨간색 LED를 8번으로
char inChar = 0;
 
void setup() {
  pinMode(green, OUTPUT);     //12번을 출력으로 설정
  pinMode(yellow, OUTPUT);    //10번을 출력으로 설정
  pinMode(red, OUTPUT);       // 8번을 출력으로 설정
  Serial.begin(9600);
}
 
void loop() {
  if(Serial.available() > 0){
    inChar = Serial.read();
    if(inChar == '1'){
      digitalWrite(green, HIGH);      //초록불 켜기
      digitalWrite(yellow, LOW);      //노란불 끄기
      digitalWrite(red, LOW);         //빨간불 끄기
      Serial.println("초록불");
      delay(1000);
    }
    if(inChar == '2'){
      digitalWrite(green, LOW);       //초록불 끄기
      digitalWrite(yellow, HIGH);     //노란불만 켜기
      digitalWrite(red, LOW);         //빨간불 끄기
      Serial.println("노란불");
      delay(1000);
    }
    if(inChar == '3'){
      digitalWrite(green, LOW);       //초록불 끄기
      digitalWrite(yellow, LOW);      //노란불 끄기
      digitalWrite(red, HIGH);        //빨간불만 켜기
      Serial.println("빨간불");
      delay(1000);
    }   
  }
}
cs

 

2.1 char inChar = 0; // 4 라인

변수 선언은 지난 시간의 LED 3개 차례로 깜박이기의 코드와 같은데 1개 코드가 추가되었습니다. 문자 1개인 char로 inChar이 선언되었습니다. 초기값은 0입니다.


2.2 Serial.begin(9600); // 10 라인

setup() 함수에도 1개 코드가 추가되었습니다. 시리얼통신속도를 9600으로 설정되었습니다. 본 블로그의 05 시리얼모니터 사용하기06 시리얼모니터 사용하기에서 공부했었습니다.


2.3 if(Serial.available() > 0) { . . . }                      // 14 라인

아두이노의 시리얼통신에서 받은 데이터가 있는 지를 확인하고 있으면 {} 사이의 코드들을 실행합니다. 만약 데이터가 없으면 실행할 코드가 없습니다. 반복문인 loop() 함수안에 있으니까 반복적이고 연속적으로 데이터가 있는지를 확인합니다. 데이터가 없으면 아무런 실행이 없으니까 현재 상태로 가만히 있는 것으로 보일 것입니다. 


2.4 inChar = Serial.read();                             // 15 라인

시리얼통신에서 받을 데이터가 있다고 확인되면 그 다음 바로 이 코드를 실행합니다. 시리얼통신에서 1개의 문자를 읽어 변수 inChar에 담습니다.


2.5 if(inChar == '1'){ . . . }                           // 16 라인

변수 inChar의 값이 문자 1이면  {  } 사이의 코드들을 실행합니다.


2.5 17 라인 ~ 21 라인 코드

초록색 LED는 켜고 노란색과 빨간색의 LED는 끄라는 코드이지요. 지난 시간의 내용입니다. 그리고 시리얼모니터로 "초록불"을 출력시키고 1초 동안 대기합니다.


2.6 23 라인 ~ 29 라인 코드

변수 inChar의 값이 문자 2이면  {  } 사이의 코드들을 실행합니다. 노란색 LED는 켜고 초록색과 빨간색의 LED는 끄라는 코드이지요. 지난 시간의 내용입니다. 그리고 시리얼모니터로 "노란불"을 출력시키고 1초 동안 대기합니다.


2.7 30 라인 ~ 36 라인 코드

변수 inChar의 값이 문자 3이면  {  } 사이의 코드들을 실행합니다. 빨간색 LED는 켜고 초록색과 노간색의 LED는 끄라는 코드이지요. 지난 시간의 내용입니다. 그리고 시리얼모니터로 "빨간불"을 출력시키고 1초 동안 대기합니다.

 

 


3. 실행 및 확인

3.1 시리얼모니터에서 1 을 입력

3.1.1 1 입력과 엔터키


3.1.2 시리얼모니터 출력


3.1.3 아두이노와 브레드보드 출력

 


3.2 시리얼모니터에서 2 를 입력

3.2.1 2 입력과 엔터키


3.2.2 시리얼모니터 출력


3.2.3 아두이노와 브레드보드 출력

 


3.3 시리얼모니터에서 2 를 입력

3.3.1 3 입력과 엔터키


3.3.2 시리얼모니터 출력


3.3.3 아두이노와 브레드보드 출력

 


3.4 시리얼모니터에서 12321 를 입력

3.4.1 12321 입력과 엔터키 그리고 시리얼 모니터 출력(동영상)

 


3.4.2 아두이노와 브레드보드 출력

 


3.5 시리얼모니터에서 121232321 를 입력

3.5.1 121232321 입력과 엔터키 그리고 시리얼 모니터 출력(동영상)


3.5.2 아두이노와 브레드보드 출력

 

 

 


5. 다음 시간에는

 

 

수고하셨습니다.

 


** 동영상 **