Hola a todos el día de hoy me ha surgido tremendo lió que he podido solucionar y puesto a que estuve algún tiempo tratarlo de hacerlo por mi mismo pues no he podido solucionar mi problema, espero me puedan ayudar.
Estoy realizando un temporizador y pasa que cuando pulso un boton quiero que se realice una accion, para esto el estado de ese boton esta dentro de un "if" pero cuando dejo de pulsar ese boton vuelve a la accion anterior, se que esto se debe al mismo "if" pero lo que yo quiero es que cuando presione el boton avance con las siguiente instrucciones y no regrese cuando el estado del boton cambie.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
//////// Pines para los botones //////////////
int boton_min = 2;
int boton_seg = 3;
int inicio = 4;
int reinicio = 5;
int aceptar = 6;
int ok;
/////////////////////////////////////////////
//////////// Pines para los relés /////////////////////
int green = 8;
int yellow = 9;
int red = 10;
int buzzer = 11;
///////////////////////////////////////////////////////
//////////////// Variables para tiempo e impresion en lcd /////////////////////
int minutos, segundos, rounds, rounds_lcd;
void setup() {
//////////////////////////////// Mensaje de Bienvenida ///////////////////////////////////////////
lcd.init();
lcd.backlight();
delay(1000);
lcd.setCursor(0,0);
lcd.print("Cargando");
delay(600);
lcd.clear();
lcd.print("Cargando.");
delay(600);
lcd.clear();
lcd.print("Cargando..");
delay(600);
lcd.clear();
lcd.print("Cargando...");
delay(600);
lcd.clear();
lcd.print("Bienvenido");
lcd.setCursor(6,1);
lcd.print("Usuario");
delay(1300);
////////////////////////////////////////////////////////////////////////////////////////////////////
for (int x=2; x<7; x++)
{
pinMode(x, INPUT);
}
for (int i=8; i<12; i++)
{
pinMode(i, OUTPUT);
}
}
void loop() {
seleccion_rounds();
}
void seleccion_rounds()
{
lcd.init();
lcd.setCursor(0,0);
lcd.print("Numero De Rounds");
lcd.setCursor(2,1);
lcd.print("Rounds");
rounds = digitalRead(boton_min);
if(rounds != 0)
{
rounds_lcd = rounds_lcd +1;
delay(75);
}
if(digitalRead(boton_seg) !=0)
{
rounds_lcd = rounds_lcd -1;
delay(75);
}
lcd.setCursor(0,1);
lcd.print(rounds_lcd);
if(digitalRead(aceptar) !=0)
{
ok=ok+1;
}
if(ok == 1)
{
lcd.init();
lcd.print("hola");
}
}
espero y puedan ayudarme uso una placa arduino uno un display lcd por i2c