Contador de puntos para pinball

Hola, buenas noches. Estoy haciendo un contador para puntaje de un pinball usando la interface de programación gráfica visualino y estoy teniendo un problema para poner a 0 una variable en una pantalla de 16 x 2, el problema es que al pulsar el botón de reset queda el valor previo que había en la pantalla y ademas el 0. Necesito saber porque pasa esto y como lo puedo solucionar. Adjunto el código de visualino en zip porque no permite subirlo en su extencion original. Desde ya gracias.

contador pinball.zip (927 Bytes)

Hola Thejulaitor.

Al leer tu post y sin ver el código (no uso visualino), parece que faltaría borrar la pantalla en el setup.
Por curiosidad he descargado visualino y veo que lo estás haciendo.

Quizás una foto de la pantalla lcd después del reset, ayude al resto de la comunidad a entender el problema y encontrar la solución.

Aca subo imagenes con un conteo antes y despues de presionar reset...

Las imagenes deben visualizarse, asi que lee el COMPLEMNTARIO COmo visualizar imagenes adjuntas y edita tu post.

aca subo las dos imagenes porque tuve problema con el tamaño

I

Sin código no se te puede ayudar. No usamos visualino. No tiene algo que lo transforme en codigo .ino?

Aca esta el codigo que me genero el visualino.

#include <Wire.h>
#include <LiquidCrystal.h>

/***   Global variables   ***/
int boton1=6;
int boton2=8;
int boton3=9;
int contador=0;
int reset=10;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

/***   Function declaration   ***/

void setup()
{





  lcd.begin(16, 2);
lcd.clear();



  Serial.begin(9600);

}


void loop()
{
    pinMode(boton2,INPUT_PULLUP);
    if (digitalRead(boton2) == 1) {
      delay(100);
      contador=contador + 200;
     }
    pinMode(boton1,INPUT_PULLUP);
    if (digitalRead(boton1) == 1) {
      delay(100);
      contador=contador + 100;
     }
    pinMode(reset,INPUT_PULLUP);
    if (digitalRead(reset) == 1) {
      delay(100);
      contador=0;
     }
    Serial.print("contador");
    Serial.println(contador);
    lcd.setCursor(0,0);
    lcd.print(contador);

}

/***   Function definition   ***/

O tu visualino no programa bien o tu no sabes poner los bloques donde corresponde.
No se inicializan los pines dentro del loop, se hace en el setup

Estar tres instrucciones van en el setup no en el loop

  pinMode(boton2,INPUT_PULLUP);
  pinMode(boton1,INPUT_PULLUP);
  pinMode(reset,INPUT_PULLUP);

Espero que instales el IDE porque de acá en mas solo hablaremos para el IDE y perdona pero este foro se maneja con formato .ino.
De lo contrario te seguiremos aconsejando para este formato y tu deberás encontrar la traduccion al Visualino.

Si yo tengo un switch que cada vez que esta en 1 me suma un contador
Lo que tienes ahi es algo que lo hace espera 100 mseg y suma el contador.
Esperemos que tu bola o pelota no se quede accionando el switch porque el contador marcará tantos goles que tendras problema con la hinchada

para ello defines una variable del tipo bool o mejor dicho dos

bool var1, var1Ant = false;

Esto como variable global

y luego en el loop haces

   var1 = digitalRead(boton1);
   if (var1 && !var1Ant) {
       contador += 100;        // no se porque el +100 y no +1
   }
   var1Ant = var1;

Este código reemplaza a tu

    if (digitalRead(boton2) == 1) {
        delay(100);
        contador=contador + 100;
    }

No hay retardo.. y si lapelota se quedara en el switch no contaría hasta infinito... o hasta el máximo del contador.

Prueba y repite para los demas con otras variables como var2 y var2Ant;

Bueno muchas gracias... El ide ya lo tengo instalado porque de echo visualino lo necesita para cargar el codigo a la placa... lo de el bloqueo de la pelota no deberia ser un problema porque en el futuro pienso implementar un sensor de barrera infrarrojo que hace que la pelota no se pueda trancar nunca pero igual voy a probar este codigo... y talvez puse los bloques de manera incorrecta porque lo unico que el programa hace es generar el codigo automaticamente...

Hola. Ya modifique el codigo tal como me recomendaron pero ahora me salta un problema al verificar. Que estoy haciendo mal?

#include <Wire.h>
#include <LiquidCrystal.h>

/***   Global variables   ***/
int boton1=6;
int boton2=8;
int boton3=9;
int contador=0;
int reset=10;
bool var1, var1Ant = false;
bool var2, var2Ant = false;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

/***   Function declaration   ***/

void setup()
{
  

  
pinMode(boton2,INPUT_PULLUP);
pinMode(reset,INPUT_PULLUP);
  lcd.begin(16, 2);
lcd.clear();



  Serial.begin(9600);

}


void loop()
{
   var2 = digitalRead(boton2);
   if (var2 && !var2Ant) {
       contador += 200;      
   }
   var2Ant = var2;
     }
   var1 = digitalRead(boton1);
   if (var1 && !var1Ant) {
       contador += 100;        // no se porque el +100 y no +1
   }
   var1Ant = var1;
     }
    
    if (digitalRead(reset) == 1) {
      delay(100);
      contador=0;
     }
    Serial.print("contador");
    Serial.println(contador);
    lcd.setCursor(0,0);
    lcd.print(contador);

}

/***   Function definition   ***/

Y el error. Recuerda que errores se postean como códigos.

Esto me sale.

Arduino:1.8.10 (Windows 10), Tarjeta:"Arduino/Genuino Uno"

sketch_oct21a:41:4: error: 'var1' does not name a type

    var1 = digitalRead(boton1);

Consejo: si eres desprolijo, solo verás problemas como este y no sabrás resolverlos.
Aprende a usar sangría o identar el código, usando TAB.
Si abres una llave revisa donde debe cerrarse.
Esta todo en los libros y guias de youtube presentes en la sección Documentación => Indice de temas tutoriales.

#include <Wire.h>
#include <LiquidCrystal.h>

/***   Global variables   ***/
int boton1=6;
int boton2=8;
int boton3=9;
int contador=0;
int reset=10;
bool var1, var1Ant = false;
bool var2, var2Ant = false;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

/***   Function declaration   ***/

void setup() {
 
  pinMode(boton2,INPUT_PULLUP);
  pinMode(reset,INPUT_PULLUP);
  lcd.begin(16, 2);
  lcd.clear();
  Serial.begin(9600);
}


void loop() {
   var2 = digitalRead(boton2);
   if (var2 && !var2Ant) {
       contador += 200;     
   }
   var2Ant = var2;

   var1 = digitalRead(boton1);
   if (var1 && !var1Ant) {
       contador += 100;        // no se porque el +100 y no +1
   }
   var1Ant = var1;
   
    if (digitalRead(reset) == 1) {
        delay(100);
        contador=0;
     }
    Serial.print("contador");
    Serial.println(contador);
    lcd.setCursor(0,0);
    lcd.print(contador);

}