Boa tarde pessoal,
Estou com dúvida de como criar um menu no Arduino que, a cada pulso que eu der em um botão, ele alterne entre "SOMA" e "SUBTRAÇÃO" (alternando também no display de LCD 16x2). O código que fiz abaixo é apenas para incrementar e decrementar (um botão para cada, respectivamente). Apenas quero adicionar um botão que selecione qual função quero (Incremento ou Decremento) e que mostre esse decremento/incremento na linha 2 do display.
/* CONTADOR COM DOIS BOTÕES (INCREMENTO E DECREMENTO) COM DEBOUNCING E DISPLAY LCD
*/
const int button1 = 7;
const int button2 = 8;
int conta = 0;
int estado_button1, estado_button2;
int ultimoestado_button1 = LOW, ultimoestado_button2 = LOW;
long time_ultimo_debounce = 0, debounce_delay = 100;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
lcd.print("CONTADOR: ");
pinMode(button1 && button2, INPUT);
}
void loop() {
int reading = digitalRead(button1);
if(reading != ultimoestado_button1){ time_ultimo_debounce = millis();}
if((millis() - time_ultimo_debounce) > debounce_delay){
if(reading != estado_button1){
estado_button1 = reading;{
if(digitalRead(button1) == HIGH){ conta++; }
}
}
}
int reading2 = digitalRead(button2);
if(reading2 != ultimoestado_button2){ time_ultimo_debounce = millis();}
if((millis() - time_ultimo_debounce) > debounce_delay){
if(reading2 != estado_button2){
estado_button2 = reading2; {
if(digitalRead(button2) == HIGH){ conta--; }
}
}
}
ultimoestado_button1 = reading;
ultimoestado_button2 = reading2;
lcd.setCursor(0, 1);
lcd.print(conta);
lcd.print(" ");
}
Se alguém puder ajudar, agradeço!
Tags:
As respostas para este tópico estão encerradas.
HG, boa noite.
Testa ái: http://pastebin.com/Gc0uNjYu
Rui
/* CONTADOR COM DOIS BOTÕES (INCREMENTO E DECREMENTO) COM DEBOUNCING E DISPLAY LCD */
const int button1 = 7;
const int button2 = 8;
unsigned int debounceDelay_button = 100; // Tempo de debounce do Botao
unsigned int Flagbutton2; // Variavel que identifica o "status" do botao
unsigned int Flagbutton1; // Variavel que identifica o "status" do botao
int Soma = 1;
int conta = 0;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
lcd.begin(16, 2);
lcd.print("CONTADOR: SOMA ");
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
}
void loop()
{
delay(debounceDelay_button); // espere um tempo
if(!digitalRead(button1)) // se continua apertado
{
if (Soma == 1) // Se for 1
conta++; // incrementa
else // E se for 0
conta--; // Decrementa
delayMicroseconds(1); // Espera 1 us só
}
delay(debounceDelay_button); // espere um tempo
if(!digitalRead(button2)) // se continua apertado
{
Flagbutton2 = !Flagbutton2; // Inverte estado do botão
if (Flagbutton2 == 1) // Se for 1
{
Soma = 1; // Operação soma
lcd.begin(16, 2);
lcd.print("CONTADOR: SOMA ");
}
else // E se for 0
{
Soma = 0; // Operação subtração
lcd.begin(16, 2);
lcd.print("CONTADOR: SUBTRAI ");
}
while(!digitalRead(button2)) // Espera pela liberação do switch
delayMicroseconds(1); // Espera 1 us só
}
lcd.setCursor(0, 1);
lcd.print(conta);
lcd.print(" ");
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por