2016-07-07 2 views
-1

저는 Android 모바일을 통해 집 TV를 제어하려고합니다. 리모컨에서 RF 수신기를 통해 IR NEC 코드를 가져 왔습니다. 그 후 Arduino와 WiFi 모듈 및 IR 송신기를 인터페이스했습니다. 이를 통해 WiFi를 통해 내 TV를 제어 할 수 있습니다. 하지만, Arduino 보드를 리셋 할 때마다 전원 켜기, 채널 증가 및 감소, 볼륨 증가/감소 및 전원 꺼짐과 같은 모든 기능이 자동으로 발생합니다. 그 후에, 나는 안드로이드 모바일을 통해 그것을 제어 할 수 있으며 모든 것이 의도대로 작동 할 것이다. 하지만 Arduino 보드를 다시 설정하면이 작업이 다시 반복됩니다. 무엇이 이것을 일으킬 수 있습니까?모든 기능이 Arduino 재설정시 실행됩니다.

나는 여기에 코드를 부착 해요 :

#include<IRremote.h> 
IRsend ir; 

char serialA; 


void setup() 
{ 
    pinMode(3, OUTPUT); 

    Serial.begin(115200); //baud rate - make sure it matches that of the module you got: 
    Serial.println("AT"); 
    delay(1000); 
    Serial.println("AT+CIPMUX=1\r\n"); 
    delay(1000); 
    Serial.println("AT+CIPSERVER=1,80\r\n"); 
    delay(1000); 
} 

void loop() 
{ 
if (Serial.available()>0) 
    { 
    serialA = Serial.read(); 
    IRREMOTE(); 
    } 
} 
void IRREMOTE() 
{ 
    switch (serialA) 
    { 

     case 'A':   //Power 
     ir.sendNEC(0x2FD48B7,32); 
     delay(500); 
     break; 

     case 'B':   // AV/TV 
     ir.sendNEC(0x2FD28D7,32); 
     delay(500); 
     break; 

     case 'C':   // Mute 
     ir.sendNEC(0x2FD08F7,32); 
     delay(500); 
     break; 

     case 'D':  // CH+ 
     ir.sendNEC(0x2FDD827,32); 
     delay(500); 
     break; 


     case 'E': // CH- 

     ir.sendNEC(0x2FDF807,32); 
     delay(500); 
     break; 

     case 'F': // Vol+ 

     ir.sendNEC(0x2FD58A7,32); 
     delay(500); 
     break; 

      case 'G': // Vol- 

     ir.sendNEC(0x2FD7887,32); 
     delay(500); 
     break; 

     case 'H': 
     // Menu 
     ir.sendNEC(0x2FD30CF,32); 
     delay(500); 
     break; 

     case 'I':  
     // Alt 
      ir.sendNEC(0x2FD708F,32); 
      delay(500); 
      break; 

     case 'J': 
     // Scan 
     ir.sendNEC(0x2FDDA25,32); 
     delay(500); 
     break; 
     } 
} 

#include<IRremote.h> 
IRsend ir; 

char serialA; 

void setup() 
{ 
    pinMode(3, OUTPUT); 

    Serial.begin(115200); //baud rate - make sure it matches that of the module you got: 
    Serial.println("AT"); 
    delay(1000); 
    Serial.println("AT+CIPMUX=1\r\n"); 
    delay(1000); 
    Serial.println("AT+CIPSERVER=1,80\r\n"); 
    delay(1000); 
} 

void loop() 
{ 
if (Serial.available()>0) 
    { 
    serialA = Serial.read(); 
    IRREMOTE(); 
    } 
} 
void IRREMOTE() 
{ 
     if(serialA == '$')  //Power 
     { 
     ir.sendNEC(0x2FD48B7,32); 
     } 

     else if(serialA == 'b') // AV/TV 
     { 
     ir.sendNEC(0x2FD28D7,32); 
     } 

     else if(serialA == 'c') // Mute 
     { 
     ir.sendNEC(0x2FD08F7,32); 
     } 

     else if(serialA == 'd') // CH+ 
     {  
     ir.sendNEC(0x2FDD827,32); 
     } 

     else if(serialA == 'e') // CH- 
     {   
     ir.sendNEC(0x2FDF807,32); 
     } 

     else if(serialA == 'f') // Vol+ 
     { 
     ir.sendNEC(0x2FD58A7,32); 
     } 

     else if(serialA == 'g') // Vol- 
     { 
     ir.sendNEC(0x2FD7887,32); 
     } 

     else if(serialA == 'h') // Menu 
     { 
     ir.sendNEC(0x2FD30CF,32); 
     } 

     else if(serialA == 'i') // Alt 
     { 
      ir.sendNEC(0x2FD708F,32); 
     } 

     else if(serialA == 'j') // Scan 
     { 
     ir.sendNEC(0x2FDDA25,32); 
     } 
} 
+0

안녕하세요 친구, 입력 버퍼를 지우려고했습니다. 하지만 여전히 같은 문제에 직면하고 있습니다 –

답변

0

헤이즈 명령 일반적으로 응답을 생성 시리얼 장치로 전송할 것을. 예를 들어, AT 명령을 보낼 때 해당 명령을 수신하는 장치는 "OK"로 응답합니다. 또한 특정 시나리오에서 장치/직렬 회선에 쓰는 내용이 입력 처리기 (Serial.read())에 다시 표시 될 수 있습니다.

이렇게 문제를 해결하려면 입력 버퍼를 완전히 지워야합니다 마지막 AT 명령을 보낸 후에

+0

어느 누구도이 문제를 해결할 수 있습니까? –

+0

코드를 삭제 한 방법에 대한 코드를 업데이트하는 데주의해야합니까? – rasjani

관련 문제