case 2:
for(int i=0;i<1;i++){digitalWrite(led, HIGH);delay(50);digitalWrite(led, LOW);delay(100);pulsos = 1;}
break;
case 3:
for(int i=0;i<1;i++){digitalWrite(led, HIGH);delay(50);digitalWrite(led, LOW);delay(100);pulsos = 1;}
break;
case 6:
for(int i=0;i<3;i++){digitalWrite(led, HIGH);delay(50);digitalWrite(led, LOW);delay(100);pulsos = 1;}
break;
case 11:
for(int i=0;i<6;i++){digitalWrite(led, HIGH);delay(50);digitalWrite(led, LOW);delay(100);pulsos = 1;}
break;
case 21:
for(int i=0;i<10;i++){digitalWrite(led, HIGH);delay(50);digitalWrite(led, LOW);delay(100);pulsos = 1;}
break;
}}}
Galera nesse script eu tenho um equipamento que gera pulsos que são contados pelo pino 3. Até ai tudo bem... Mais para execultar o case referente aos pulsos eu tenho que clicar o pino 5 ( if(digitalRead(5)==LOW) ). O que eu gostaria mesmo era que esse processo aconteça automaticamente e não estou sabendo como fazer isso. Tentei tirar o if(digitalRead(5)==LOW) ai não consigo passar do premeiro clik. Ajuda ai amigos!!!
Podes temporizar e tens de dar X pulsos dentro dum determinado tempo. Ao fim desse determinado tempo, o programa faz a seccao dos pulsos. Isto pode funcionar... mas das duas uma, ou ficas a espera da temporizacao... ou nao das os pulsos todos dentro da temporizacao.
A solucao que tens do segundo botao e a mais eficiente que tens.
Obrigado Bubulindo pela resposta!!!! Mais eu estava pensando em fazer algo assim; se digitalRead(5) ficar em HIGH por mais que X tempo execultar switch(pulsos){ case.....), e que essa contage de tempo começaria com o primeiro pulso LOW... Mais não sei como escrever isso. Poderia me ajudar? desde já muito obrigado!!!!
vagner:
Obrigado Bubulindo pela resposta!!!! Mais eu estava pensando em fazer algo assim; se digitalRead(5) ficar em HIGH por mais que X tempo execultar switch(pulsos){ case.....), e que essa contage de tempo começaria com o primeiro pulso LOW... Mais não sei como escrever isso. Poderia me ajudar? desde já muito obrigado!!!!
Em relação a contagem de tempo enquanto um botão for pressionado, já implementei o código abaixo e deu certo. veja se consegue implementar algo semelhante.
if(digitalRead(5)==HIGH){
unsigned long time = millis(); //Armazena tempo atual
while(digitalRead(5)==HIGH){} //Não faz nada enquanto o 5 == HIGH
unsigned long diferenca = millis() - time; //Armazena o tempo em que o botão for pressionado
//como tempo do botão pressionado a implementação posterior fica por sua conta
}