2012-07-04 4 views
0

Je suis en train de programmer un Arduino pour allumer une LED quand il reçoit quelque chose dans le port série. Je l'ai fait et il a reçu les données, mais après que la LED aurait dû être éteint, il continue. Voici mon code actuel:Effacer les données dans Serial.read()

int ledPin = 13; 

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

void loop() { 
    if(Serial.available() > 0) { 
    Serial.print("RECEIVED_CALL"); 
    digitalWrite(ledPin, HIGH); 
    delay(4500); 
    digitalWrite(ledPin, LOW); 
    Serial.clear(); 
    } 
} 

S'il vous plaît laissez vos suggestions.

+0

Y a-t-il une raison pour laquelle vous avez un délai de 4 500 ms, c'est-à-dire de 4,5 secondes? De plus, si vous avez encore des données disponibles, elles seront réactivées. Essayez d'ajouter un délai après avoir réglé la broche bas –

+0

1. J'en ai besoin pendant 4,5 secondes 2. Je vais essayer – cheese5505

Répondre

0

Ajoutez des instructions de débogage (telles que Serial.print("LED_OFF")) pour vous assurer que votre Arduino ne redémarre pas lors de la réception de données série comme décrit dans mon article here.

Ceci peut expliquer que la lumière reste allumée. Il se peut que vous redémarriez encore et encore si vous envoyez suffisamment de données série.

Questions connexes