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!

Exibições: 2482

As respostas para este tópico estão encerradas.

Respostas a este tópico

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(" ");

}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço