2016-06-17 2 views
0

Я хотел бы спросить. Я делаю светодиодный проект с использованием последовательного монитора. Если клавиша для последовательного монитора 1 нажата один раз, светодиод 1 загорится, пока я не нажму 2-ю кнопку для последовательного монитора 2, и загорится светодиод 2.ARDUINO: Удерживать значения и серийный монитор

как я могу это сделать? задержка()? или hold()?

+0

http://stackoverflow.com/help/how-to-ask –

ответ

0

Вы не можете использовать delay(), потому что время до следующего следующего нажатия клавиши не может быть определено.

Вы можете использовать флаги, как показано ниже

int ledPin1 = 8, ledPin2 = 9; 
boolean flag1, flag2; 

void setup() 
{ 
    Serial.begin(9600); 
    pinMode(ledPin1, OUTPUT); 
    pinMode(ledPin2, OUTPUT); 
} 
void loop() 
{ 
    if(Serial.available()) 
    { 
     int c = Serial.read(); 
     if(c == 49) { // 1 is pressed 
      flag1 = true; 
      flag2 = false; 
     } 
     else if(c == 50) { // 2 is pressed 
      flag2 = true; 
      flag1 = false; 
     } 
    } 
    if(flag1) { 
     digitalWrite(ledPin1, HIGH); 
     digitalWrite(ledPin2, LOW); 
    } 
    if(flag2) { 
     digitalWrite(ledPin1, LOW); 
     digitalWrite(ledPin2, HIGH); 
    } 
    delay(50); 
} 

Надеется, что это помогает.

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