boa noite pessoal, tudo bem?
Aguém poderia mim dar uma forcinha?
tem algum codigo ou logica de programação que faz com que eu acione um botão no lcd Keypad somente depois de eu ter precionado outro botão?
exemplo
suponhamos que meu lcd keypad tem 2 botoes.
botao 1 imprime no lcd uma mensagem
botao 2 imprime no lcd uma contagem regressiva
gostaria que a função do botao 2 só fosse executada se a função do botao 1 fosse executada primeiro
ou seja gostaria que o botao 2 ficasse inativo enquanto eu nao precionar o botao 1
no meu caso quando pressiono o botao 1 e depois o botão 2 começa a contagem
e se eu pressiono somente o botao 2 tambem começa a contagem.
desde ja agradeço a atenção de todos.
Tags:
Utilize uma variável auxiliar para isso. Ao declarar essa variável defina um valor inicial para ela, por exemplo 0, e após executar a função do botão 1 defina outro valor para essa variável, por exemplo 1.
Na parte do código que você verifica se o botão 2 foi pressionado, verifique também o valor da variável auxiliar. Se for 1, execute a função e se for 0 ignore.
if((digitalRead(botao2)==1 && (variavel==1))
Não se esqueça de voltar a variável para o valor inicial, no caso 0, depois de executar a função do botão 2.
Olá joão tudo bem?
Primeiramente gostaria de agradecer imenssamente por sua ajuda,
Perdoe minha ignorância, mas é que estou usando o arduino a poucos dias e meu conhecimento com linguagem de programação é 000,1%
então na teoria consegui entender um pouco, mas quando parti para pratica, não consegui fazer nada.Rsrrsrs
e agora qualquer tecla que preciono começa somente a primeira contagem.
o codigo é esse,
void loop() {
int Botao = analogRead (0);
if (Botao < 99) {
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Tempo");
lcd.setCursor(2, 1);
lcd.print("2 Segundos");
}
else if (Botao < 800) {
lcd.clear();
lcd.setCursor(7, 1);
lcd.print("1");
delay(1000);
lcd.setCursor(7, 1);
lcd.print("2");
}
if (Botao < 200) {
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Tempo");
lcd.setCursor(2, 1);
lcd.print("5 Segundos");
}
else if (Botao < 800) {
lcd.clear();
lcd.setCursor(7, 1);
lcd.print("1");
delay(1000);
lcd.setCursor(7, 1);
lcd.print("2");
lcd.setCursor(7, 1);
lcd.print("3");
delay(1000);
lcd.setCursor(7, 1);
lcd.print("4");
delay(1000);
lcd.setCursor(7, 1);
lcd.print("5");
}
}
desde sempre lhe agradeço.
bom dia João.
muito obrigado, deu certinho. muito legal mesmo.
agora caso eu queira por mais botões com tempos diferentes, sendo que o Botão <800 será sempre o botão de START devo criar uma nova variavél aux ou não?
tipo:
declaro uma nova variavel chamada int aux2 = 2
if ( < 400 ) {
"codigo"
aux2 = 3
}
else if(botao <800 && aux == 3 ) {
" codigo"
aux2=2;
}
Não sei se entendi direito mas você quer usar 3 desses botões para definir tempos e 1 botão como START, é isso?
Se for isso é bem simples, basicamente você vai precisar de apenas 1 variável que será responsável por guardar o tempo escolhido. Como exemplo, vamos chamar essa variável de 'tempo'. Crie a variável tempo com valor inicial igual a 0 e em cada botão de seleção de tempo você define um novo valor para essa variável. Por exemplo
if (Botao < 200 && Botao >= 99) {
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Tempo");
lcd.setCursor(2, 1);
lcd.print("2 Segundos");
tempo = 2;
}
if (Botao < 99) {
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Tempo");
lcd.setCursor(2, 1);
lcd.print("5 Segundos");
tempo = 5;
}
E dentro do IF do Bota < 800 você usa um FOR indo de 1 até o valor da variável tempo, e na condição do IF você verifica se a variável tempo é maior que 0. Dessa forma
if(Botao < 800 && Bota > 400 && tempo > 0){
for(int i=1; i<=tempo; i++){
lcd.clear();
lcd.setCursor(7, 1);
lcd.print(i);
delay(1000);
}
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por