No puedo hacer cambiar una variable con un botón

Hola buenas

Estoy intentando hacer básicamente un contador para hacer cambiar entre relees
pero cuando le añadi la función “IF” para saber que número estaba seleccionado y desplegar la información correspondiente en el LCD.

Con un botón pretendo cambiar hacia arriba y con el otro hacia abajo para encender las 7 salidas que tengo conectadas y desplegar el texto de que “silo” está seleccionado en un pantalla LCD de 8X2.

Ayudaaaa. ;(
Aqui el codigo

es un arduino ONE

#include <LiquidCrystal.h>

const int rs = A0, en = A1, d4 = A2, d5 = A3, d6 = A4, d7 = A5;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

const int Pin1 = 2;
const int Pin2 = 3;
const int Pin3 = 4;
const int Pin4 = 5;
const int Pin5 = 6;
const int Pin6 = 7;
const int Pin7 = 8;
int Dir = 0;
int buttonState = 0;
int buttonState0 = 0;

void setup() {

lcd.begin(8, 2);
Serial.begin(9600);
pinMode(13, INPUT);
pinMode(11, INPUT);
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
pinMode(Pin5, OUTPUT);
pinMode(Pin6, OUTPUT);
pinMode(Pin7, OUTPUT);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
}

void loop()
{
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
digitalWrite(Pin4, HIGH);
digitalWrite(Pin5, HIGH);
digitalWrite(Pin6, HIGH);
digitalWrite(Pin7, HIGH);

if (digitalRead(13) == HIGH)
{
if(digitalRead(13) == LOW)
{
Dir++;
Serial.println(Dir);

delay(10);
}
}

if (Dir == 0)
{
digitalWrite(Pin1, LOW);
lcd.print(“Silo1”);
Serial.print(“S1”);

}else {
delay(10);
digitalWrite(Pin1, HIGH);
}

if (Dir == 1)
{
digitalWrite(Pin2, LOW);
lcd.print(“Silo2”);
Serial.print(“S2”);

}else {
delay(10);
digitalWrite(Pin2, HIGH);
}

if (Dir == 2)
{
digitalWrite(Pin3, LOW);
lcd.print(“Silo3”);
Serial.print(“S3”);
}else {
delay(100);
digitalWrite(Pin3, HIGH);
}

if (Dir == 3)
{
digitalWrite(Pin4, LOW);
lcd.print(“Silo4”);
Serial.print(“S4”);
}else {
delay(10);
digitalWrite(Pin4, HIGH);
}

if (Dir == 4)
{
digitalWrite(Pin5, LOW);
lcd.print(“Silo5”);
Serial.print(“S5”);
}else {
delay(10);
digitalWrite(Pin5, HIGH);
}

if (Dir == 5)
{
digitalWrite(Pin6, LOW);
lcd.print(“Silo6”);
Serial.print(“S6”);
}else {
delay(10);
digitalWrite(Pin6, HIGH);
}

if (Dir == 6)
{
digitalWrite(Pin7, LOW);
lcd.print(“Silo7”);
Serial.print(“S7”);
}else {
delay(10);
digitalWrite(Pin7, HIGH);
}

}

Debes poner tu código entre las etiquetas code, edita tu mensaje.

En principio los pulsadores tiene un defecto llamado rebote que complica el conteo de pulsasiones.

if (digitalRead(13) == HIGH){
   if(digitalRead(13) == LOW){
       Dir++;
       Serial.println(Dir);
       delay(10);
   }
}

Esto no tiene ningún sentido si el pulsador del pin 13 esta en HIGH para que preguntas luego si esta en LOW ?

Luego el if() es un condicional simple. Para hacer multiples consultas por el resultado de la variable DIR mejor usar el condicional multiple.