Seguinte galera... quando digito "a", "b" e "0" seguidamente, ele executa primeiro o comando "a", depois o comando "b" e só depois o comando "0" (desligar)... gostaria que se eu digitasse o zero, msm que eu tenha digitado "a" e "b" antes, o programa desligasse. Alguém pode me ajudar?

Pensei em usar a interrupção mas não sei interromper algo usando comando pela serial, só por botões.

int LED1 = 11;
int LED2 = 8;
int LED3 = 9;
int LED4 = 10;

void setup()
{
Serial.begin(9600);

pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LED3,OUTPUT);
pinMode(LED4,OUTPUT);
}


void loop()
{
char comando = Serial.read();

digitalWrite(LED1,HIGH);
delay(5000);
digitalWrite(LED2,HIGH);
delay(5000);
digitalWrite(LED3,HIGH);
delay(5000);
digitalWrite(LED4,HIGH);

if (comando=='a')
{
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,HIGH);
digitalWrite(LED4,HIGH);
delay(5000);
}

if (comando=='b')
{
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);
delay(5000);
}

while (comando=='0') //desligar
{
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LED4,LOW);

if(Serial.available())
{
comando = Serial.read();
}

if(comando=='1') //ligar
{
break;
}
}
}

Exibições: 273

Responder esta

Respostas a este tópico

pelo que vi o seu problema esta no delay que você esta dando. teria que mudar o seus "if''s" e tirar o delay e adicionar millis().

da uma olhada no link onde estava ajudando o Alex Sandro com um semaforo que tirei o delay do codigo dele e adicionei millis()

http://pastebin.com/MCWAq6qc

Mas se não me engano, o millis() tem um problema de zerar depois de 49 dias, não é?

Isso pode acarretar algum problema?

Obrigado

na verdade ele volta a Zero. Se fizer algo para quando isto acontecer então da para usar.

Não entendi muito bem...

Pretendo nunca desligar o arduino da alimentação após o programa ser carregado... então se eu usar o millis(), depois de 49 dias meu programa vai deixar de funcionar corretamente?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço