Olá!
Preciso de ajuda;
Gostaria de implementar 3 funções em um só botão.
Imaginem que tenho um botão e ois leds:
Acionando o botão o led 1 liga ( só pode liga depois que o botão for solto);
Mantendo o botão acionado por um tempo maior que um intervalo definido ele acenderia o led 2;
Quando o led 1 estiver ligado e o botão for acionado por um tempo menor que o intervalo ele desliga tudo.
Deu para intender?.
Já consegui algumas coisas, trabalhando com millis(). mas não tá dando muito certo.
Basicamente, preciso ligar uma máquina, manter ligada, ligar e desligar outra com o mesmo botão. Tenho que poder fazer isso várias vezes sem desligar a primeira. ( a segunda máquina pode ficar ligada somente com botão pressionado).
Estou tentado trabalhar com tempo de acionamento de botão diferentes, mas não estou conseguindo.
Tags:
Bom, como não tive resposta, juntei uma dica com outra e deu nisso:
unsigned long intervalo = 500;
unsigned long t_high;
unsigned long tempo;
#define botao 5
#define aciona 8
#define troca 9
int est_atual = 0;
int est_anterior = 0;
int estado = 0; // guarda o valor 0 ou 1 (HIGH ou LOW)
int ok = 0;
void setup()
{
Serial.begin(9600);
pinMode(aciona, OUTPUT);
pinMode(troca, OUTPUT);
pinMode (botao, INPUT);
}
void imprimir()
{
Serial.print("t_high = ");
Serial.println(t_high);
Serial.print("tempo = ");
Serial.println(tempo);
}
void loop()
{
est_atual = digitalRead(botao); // detecta a mudança do estado
if ((est_atual == HIGH) && (est_anterior == LOW)) {
t_high = millis();
}
if ((est_atual == LOW) && (est_anterior == HIGH)) {// tefine o tempo em High
tempo = millis() - t_high;
imprimir();
}
est_anterior = est_atual;
if((est_atual == LOW) && (tempo >= intervalo)){ // compara o tempo com o intevelo
digitalWrite(aciona, HIGH);
ok = 1;
}
if((est_atual == HIGH) && (ok == 1)){ // aciona outra saida sem desligar a primeira
digitalWrite(troca, HIGH);
}
else{
digitalWrite(troca, LOW);
}
if((est_atual == LOW) && (tempo < intervalo)){
digitalWrite(aciona, LOW);
ok = 0;
}
}
Ta funcionando, mas se alguém tiver uma ideia melhor...
Ola você devera trabalhar com tempo para cada maquina .
Maquina 1 N tempo ligado.
Maquina 2 N tempo ligado.
Maquina 3 N tempo ligado.
veja nesta link se ajuda usando microcontrolador PIC.
http://microcontrolandos.blogspot.com.br/2012/12/timer-utilizando-o...
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por