정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

if - else if 구문 문의드립니다.
안홍석 | 2017-11-30

안녕하세요. 이번에 아두이노를 처음 배우는 학생입니다.

이번에 온도에 따라 여러 소자들(서보모터, 펜, LED)를 제어하는 작품을 만들고 있습니다.

각 소자들을 개별적으로 실험하여 동작 확인 후, 각각의 소스를 합쳐서 실험을 하였는데

소자들이 동작하지 않았습니다.  제 개인적인 생각으로는 if와 else if를 많이 쓰는 바람에

아두이노가 어떤 if와 어떤 else if 가 연결되어 있는지 헷갈려 하는거 같습니다.

혹시 소스를 간단히 만들 수 있는 방법이나 제가 모르는 틀린 부분을 알려주시면 감사하겠습니다.

바쁘시더라도 간단한 답변 부탁드립니다.

 

 

char ch = 'r'; // ch 변수값을 'r'로 지정합니다
char data = 'l'; // data 변수값을 'l'로 지정합니다


              if( sum < 22 ) // 온습도 평균이 22도보다 작을 경우
              {
                digitalWrite(ledpin, HIGH);
                delay(1000);

                                                              if(ch != data)
                                                              {
                                                                servo.detach();   
                                                                delay(10);
                                                              }

 

                             else if( 22 <= sum && sum <= 26 ) // 온습도 평균이 22~26 사이일 경우
                             {
                               digitalWrite(ledpin, LOW);
                               delay(1000);
  
                                                              if(ch == data) // ch변수와 data변수가 같을 경우
                                                              {
                                                                servo.attach(9);
                                                                servo.write(180);   
                                                                delay(4000);
                                                                servo.detach();   
                                                                delay(10);
                                                                data = 'l';
                                                              }
                                                              else // ch변수와 data변수가 다를 경우
                                                              {
                                                                servo.detach();   
                                                                delay(10);
                                                              }
                            }

 

                            else if( 26 < sum && sum < 30 ) // 온습도 평균이 26~30 사이이고 변수ch와 data 값이 다를 경우
                            {
                              digitalWrite(E2,LOW); // 펜 정지
                              analogWrite(M2,LOW);
                              delay(1000);
                                                              if(ch != data) // ch변수와 data변수가 다를 경우
                                                              {
                                                                servo.attach(9);
                                                                servo.write(0);   
                                                                delay(4000);
                                                                servo.detach();   
                                                                delay(10);
                                                                data = 'r';
                                                              }
                                                              else  // ch변수와 data변수가 같을 경우
                                                              {
                                                                servo.detach();   
                                                                delay(10);
                                                              }
                                                             
                            }
                           
                            else // 온습도 평균이 30 보다 클 경우
                            {
                              digitalWrite(E2,HIGH); // 펜 작동
                              analogWrite(M2,LOW);
                              delay(1000);
                            }
              }

 

이전글   |    Mega ADK와 HC-06 연결 문의 2017-11-29
다음글   |    OrangeBoard WiFi와 조이스틱 센서 쉴드로 RC카 제어해보기... 2017-11-30