desculpe me pela demora em responder, mas é que a faculdade consome o tempo todo,,,,
decidi mudar um pouquinho o programa usando switch case,,,
desta forma ficou assim..
#define botao 8
#define led 13
typedef enum {
BOTAO_OFF,
BOTAO_ON} t_estados;
t_estados estado;
int time;
void setup() {
pinMode(botao, INPUT);
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
estado = BOTAO_OFF;}
void loop()
{
switch (estado)
{
case BOTAO_OFF:
if(digitalRead(botao) != 0)
{
time= millis();
estado = BOTAO_ON;
}
break;
case BOTAO_ON:
if(digitalRead(botao) == 0)
{
time= millis() - time;
if(time >= 3000)
digitalWrite(led, HIGH);
else if(time <= 1000)
digitalWrite(led, LOW);
estado = BOTAO_OFF;
}
break;
default:
break;
}
}
porém ainda tenho o problema do led apenas dar uma piscada quando deveria permanecer aceso, se eu tiro a linha da condição <= 1000 ai funciona normal, aí nao consigo apagar o led por não ter este comando no programa,, por que será??
obrigado