2016-05-07 21 views
-1

私は単純なプロジェクト、携帯電話で制御arduinoリレーに取り組んでいます。ループを作成しようとしていますが、リレースイッチをHIGHLOWの間でのみ、ピン7に1回送信します。複数のパターンを試しましたが、うまくいかないため、間違いを見つけられません。 Here'sコードは、おかげでadvance.`単純なarduinoコードのループが動作しません

int relay = 7; 
int prev; //previous value 
int val; //actual value 

void setup() 
{ 
    pinMode(relay, OUTPUT); 
    Serial.begin(9600); 
} 

void loop() 
{ 
if(Serial.available()>0) //send data when recieved 
    { 
    val = Serial.read(); //read value 
    } 

    if (val == '1') 
    { 
    if (prev == '1') 
    { 
    digitalWrite(relay, LOW); 
    prev=val; 
    } 
    else 
    { 
    digitalWrite(relay, HIGH); 
    prev=val; 
    } 
    } 
    else if (val == '0'); 
    { 
    if (prev == '0') 
    { 
    digitalWrite(relay, HIGH); 
    prev=val; 
    } 
    else 
    { 
    digitalWrite(relay, LOW); 
    prev=val; 
    } 
    } 
} 

答えて

0

に現在のコードは、シリアルポートを読み取ろうとすると、変数のvalにセットにそれを読むために何かを持っている場合。

値を読み取ったが別の値を持たない場合でも、valは以前と同じ値に設定されています。

したがって、ループが行くことができるように速く高/低遷移をトグルトグルします。

代わりに、論理コードをif(Serial.available()> 0)ステートメント内に移動して、キーが押されたときにのみ呼び出されるようにすることができます。

関連する問題