(Arduino UNO) Entradas de botón aleatorio debido a un cambio en el código

1

(En primer lugar: Lo siento por el título. Realmente no sé cómo describir mi problema en una oración)

Soy un principiante arduino. Construyo un control de dos botones para un motor electrónico.

simular este circuito : esquema creado usando CircuitLab

Escribí un código para configurar la velocidad con los dos botones (SW4 y SW3) y para mostrar la velocidad en el monitor serie de mi computadora portátil.

Está funcionando perfectamente con este código:

void setSpeedButton()
    {

     while(1){ 
      buttonLeftState = digitalRead(buttonLeft);
      buttonRightState = digitalRead(buttonRight);

      if(buttonLeftState == HIGH)
      {
        speed = speed - vChange;
        delay(200);
        if(speed < 0){
          speed = 0;
        }
      }
      if(buttonRightState == HIGH)
      {
        speed = speed + vChange;
        delay(200);
        if(speed > 255){
          speed = 255;
        }
      }
      analogWrite(motor, speed); 

    vDisplay();

  }
 }

vChange es un entero con el valor 9, el resto debe ser claro.

vDisplay () es un vacío con este código:

void vDisplay()
{
  Serial.print("Speed: ");
  Serial.println(speed);
}

Bien ... Hasta ahora, bien ... Pero ahora:

si cambio el código (primer bloque) y pongo vDisplay () en ambas consultas if (para mostrar la velocidad solo si se cambió) es como si mi tablero se estuviera volviendo loco y cambiara al azar la velocidad cada pocos milisegundos y mostrarla en el monitor serie ...

Realmente no encuentro ninguna solución para este problema. ¿que esta causando este problema?

Si olvidé agregar alguna información, hágamelo saber en los comentarios a continuación. ¡Gracias a todos por ayudar o comentar sobre esto!

    
pregunta progger

1 respuesta

1

Con la configuración actual, sus entradas están flotando cuando no se presionan los botones. Por lo tanto, si no se presiona ningún botón, la entrada podría ser cualquier cosa. No tienes control. Una mejor solución sería la siguiente:

simular este circuito : esquema creado usando CircuitLab

Ahora, sin presionar ningún botón, la entrada se eleva a 5V. Al presionar un botón, la entrada se desplaza hacia el suelo.

    
respondido por el Justin Trzeciak

Lea otras preguntas en las etiquetas