Skip to content

6 Control mediante botonera

Pedro Ruiz edited this page Jun 22, 2019 · 1 revision

6 - Control mediante botonera

Hasta ahora sólo hemos accionado actuadores, ha llegado el momento de interactuar con la botonera, para ello disponemos de un procedimiento para evaluar que botón ha sido pulsado, en función de su valor podemos accionar los actuadores (motores, leds y zumbador). El procedimiento es:

  • objetoEscornabot.pushButton(): devuelve el valor del botón pulsado o la posición en inglés. 1 o forward (delantero), 3 o backward (trasero), 4 o right (derecho), 2 o left (izquierdo), 5 o central (central).

En el siguiente programa (ejemplo 3a) al pulsar cualquiera de los cuatro botones de dirección (adelante, atrás, derecha, izquierda) realiza la correspondiente acción de movimiento o giro. Cuando se pulsa el botón central el robot gira sobre si mismo:

#include <escornabot.h>

escornabot mirobot;

void setup() {
  Serial.begin (9600);
}

void loop() {
  //prueba de librería

  if (mirobot.pushButton() == forward) {
    mirobot.driveD (10, 12);
  }
  else if (mirobot.pushButton() == backward) {
    mirobot.driveD (-10, 12);
  }
  else if (mirobot.pushButton() == right) {
    mirobot.turnA (90, 12);
  }
  else if (mirobot.pushButton() == left) {
    mirobot.turnA (-90, 12);
  }
  else if (mirobot.pushButton() == central) {
    mirobot.turnA (360, 12);
  }
}

En el siguiente programa (ejemplo 3b) al pulsar cualquiera de los cuatro botones de dirección (adelante, atrás, derecha, izquierda) realiza la correspondiente acción de movimiento o giro y mientras la está haciendo se enciende el led correspondiente que se apagará cuando termine la acción. Cuando se pulsa el botón central se enciende el zumbador durante un tiempo, a la vez que los cuatro leds:

#include <escornabot.h>

escornabot mirobot;

void setup() {
  Serial.begin (9600);
}

void loop() {
  //prueba de librería

  switch (mirobot.pushButton()) {

    case forward://si pulsamos el botón delantero, se enciende led delantero, se mueve 7 cm hacia delante, y se apaga el led delantero
      mirobot.ledON (forward);
      mirobot.driveD (7, 10);
      mirobot.ledOFF (forward);
      break;

    case backward://si pulsamos el botón trasero, se enciende led trasero, se mueve 7 cm hacia atrás, y se apaga el led trasero
      mirobot.ledON (backward);
      mirobot.driveD (-7, 10);
      mirobot.ledOFF (backward);
      break;

    case right://si pulsamos el botón derecho, se enciende led derecho, gira 45º hacia la derecha, y se apaga el led derecho
      mirobot.ledON (right);
      mirobot.turnA (45, 10);
      mirobot.ledOFF (right);
      break;

    case left://si pulsamos el botón izquierdo, se enciende led izquierdo, gira 45º hacia la izquierda, y se apaga el led izquierdo
      mirobot.ledON (left);
      mirobot.turnA (-45, 10);
      mirobot.ledOFF (left);
      break;

    case central://si pulsamos el botón central, suena el zumbador y se enciende todos los leds durante un segundo, después se apagan el zumbador y los leds
      mirobot.buzzON ();
      for (int i = 1; i < mirobot.numberLeds; i++)//La constante mirobot.numberLeds esta definida en la librera y vale 5
      {
        mirobot.ledON(i);
      }
      delay (1000);
      mirobot.buzzOFF();

      for (int i = 1; i < mirobot.numberLeds; i++)
      {
        mirobot.ledOFF(i);
      }
      break;

    default:
      mirobot.driveD(0,0);
      break;
  }

}