-
Notifications
You must be signed in to change notification settings - Fork 13
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;
}
}