Boa Tarde pessoal, estou com dificuldade para colocar tempo no botão,
funciona assim: eu tenho que pressionar o botão durante 2 segundos e depois aciona a saida, e se eu manter o botão pressionado mais que 3 segundos ele desliga a saida.
eu consegui fazer a primeira parte de acionar a saida depois de um tempo, mas não consigo fazer a mesma desligar se eu manter o botão pressionado.
SEGUE O CÓGIDO:
# define botao 12
# define saida 13
unsigned long tempo_acionado = 2000;
unsigned long ultimo_tempo = 0;
int i = 0;
void setup() {
Serial.begin(9600);
pinMode(botao, INPUT);
pinMode(saida, OUTPUT);
digitalWrite(botao, 1);
}
void loop() {
unsigned long tempo_atual = millis();
if (digitalRead(botao) == 0)
{
if (tempo_atual - ultimo_tempo >= tempo_acionado)
{
i++;
Serial.println("Apeto: ");
Serial.println(i);
digitalWrite(saida, 1);
ultimo_tempo = tempo_atual;
}
}
Tags:
Na prática, não se consegue uma transição limpa de níveis de tensão
ALTO e BAIXO a partir de uma chave mecânica, devido a trepidação do
contato, ao mover a chave de um contato (posição) para outro.
Trepidações de contado geram falsas informações, verifique isto.
Leandro, da uma olhada nesse código e vê se funciona:
# define botao 12
# define saida 13
#define TEMPO_ACIONAR 2000
#define TEMPO_DESLIGAR 3000
#define ATIVADO 0
unsigned long tempo_inicial;
void setup() {
Serial.begin(9600);
pinMode(botao, INPUT);
pinMode(saida, OUTPUT);
digitalWrite(botao, 1);
tempo_inicial = millis();
}
boolean botaoAtivado() {
int contadorFiltro = 0;
for (int j = 0; j < 10; j++) {
digitalRead(botao)==ATIVADO? contadorFiltro++ : contadorFiltro;
delay(2);
}
return contadorFiltro > 5;
}
void loop() {
while(botaoAtivado()) {
if(millis() - tempo_inicial > TEMPO_DESLIGAR)
digitalWrite(saida, 1);
else if(millis() - tempo_inicial > TEMPO_ACIONAR)
digitalWrite(saida, 0);
delay(5);
}
tempo_inicial = millis();
}
A ideia é que ele trate esse problema da transição limpa entre níveis de tensão e trate também o acionamento e desligamento da saída. Qualquer coisa fala aew.
Vou testar o código aqui Gabriel
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por