2015-05-22 5 views
0

Это проект, который будет включен через 8 часов! Мы застряли в этой проблеме и подумали об этом месте как о крайней необходимости.Проблемы с Arduino, дистанционно управляющие выходом

Я пытаюсь включить/выключить дистанционно управляемую розетку с помощью Arduino. При этом мы получаем несоответствия. Иногда, когда он переходит в инструкцию if, что ”should be ON”, но вместо этого отключает питание от розетки и наоборот.

Код:

// on off remote control 
int off = 12; 
int on = 13; 

void setup() { 

    pinMode(off, OUTPUT);  // sets the digital pin as output 
    pinMode(on, OUTPUT); 

} 
void loop() { 

    // ..first we getting response from server if remote control should be on/off, 
    // working fine so not really relevant to problem. 

    // then we determine if outlet should be ON or OFF: 
    response.toCharArray(responseCharArray,100); 
    if(strstr(responseCharArray, "active") && strstr(responseCharArray, "1")) { 
     // This should turn ON the outlet. 
     digitalWrite(on, HIGH); 
     delay(250); 
     digitalWrite(on, LOW); 
     Serial.println("should be ON"); 
    } 
    else if(strstr(responseCharArray, "active") && strstr(responseCharArray, "0")) { 
     // This should turn OFF the outlet. 
     digitalWrite(off, HIGH); 
     delay(250); 
     digitalWrite(off, LOW); 
     Serial.println("should be OFF"); 
    } 

} 

Изображение проводкой: enter image description here

Вопрос: Что может быть здесь отсутствует? Поскольку он случайным образом включает его/выключает при вводе того же оператора if.

ответ

0

Здесь слишком мало информации.

Обратите внимание, что ваш код активируется (включается), если responseCharArray содержит что-то вроде, например. "retroactively from 1941", или выключите для чего-то вроде "active for 37 seconds".

Другими словами, соответствие строк не очень точное, но трудно понять, что должно быть, поскольку я ничего не знаю о формате ответа.

Возможно, это должно быть по крайней мере

if(strstr(responseCharArray, "active=1") != NULL) 

или что-то, по крайней мере, зафиксировать 1 к active части.

В журнале, который вы делаете, распечатайте значение responseCharArray. Это позволит вам проанализировать, имеет ли смысл принятие решений.

Кроме того, как всегда, проверьте правильность проводки и проверьте, например. резервное питание.

+0

Я знаю, что проверка нашего if-case несколько неточна, но она работает для нас. Я думаю, что наша проблема связана с оборудованием. но спасибо за ваш вклад в любом случае! веселит. – JimboSlice

Смежные вопросы