2014-10-12 2 views
0

У меня есть простой код Arduino:буфер последовательных Расчетной Arduino в

void loop() 
{ 
    if serial.available 
    { 
    c = serial.read(); 
    if (c == 'a') 
    { 
     blinkled(); 
    } 
    else 
     offled(); 
    } 
} 

он должен светиться светодиод, если я отправить символ «а». , и он выключается, когда я ничего не даю, когда цикл переходит к следующему титрованию.

но однажды я даю 'a'. он начинает светиться и никогда не гаснет.

Он читает символ 'a' из буфера? если да, то как его очистить?

Serial.flush() не работает.

любые идеи пожалуйста. Я новичок в arduino. извините, если его глупо.

ответ

0

Вы поместили свою включенную функцию INSIDE в путь Serial.available(). Вы можете отключить его только Serial.available(), и вы нажимаете другой символ, чтобы он читал что-то другое, кроме 'a'

К сожалению, приведенный выше пример делает ту же ошибку.

Постройте его так, чтобы светодиод выключился снаружи, если заявление

+0

thankyou! да, это была ошибка! –

0

Вы могли бы использовать что-то вроде этого:

void loop() { 
    while (Serial.available() > 0) 
    { 
     char received = Serial.read(); 
     inData += received; 

     // Process message when new line character is received 
     if (received == '\n') 
     { 
      Serial.print("Arduino Received: "); 
      Serial.print(inData); 

      // You can put some if and else here to process the message juste like that: 

      if(inData == "a\n"){ // DON'T forget to add "\n" at the end of the string. 
       Serial.println("OK, I'll blink now."); 
       blinkled(); 
      } 
      else if (inData == "b\n") { 
       offled(); 
      } 

      inData = ""; // to flush the value. 
     } 
    } 
} 

EDIT: Я изменил свой ответ на основе правильного ответа.

+0

благодарю вас за исправление! –

+0

@JonesJoseph я сделал исправление :) – ladislas

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