Como podéis ver, lo único que añadimos son las dos entradas de los pulsadores a Arduino, pines 22 y 23, con los que haremos que el BiRueda vaya Adelante o Atrás dependiendo de cual se pulse. En el caso de que no pulsemos ninguno o pulsemos los dos a la vez el vehículo permanecerá parado. Aquí podéis ver como es el sketh usado para este propósito:
//Importamos la libreria AFMotor.h #include <AFMotor.h> //Definimos los pines de los botones #define ADELANTE 22 #define ATRAS 23 //Creamos los dos motores que están conectados a M1 y M2 respectivamente con frecuencia 64KHZ AF_DCMotor motor(2, MOTOR12_64KHZ); AF_DCMotor motor2(1, MOTOR12_64KHZ); //variable para la velocidad int velocidad //Función 'Setup' void setup() { //Inicializamos Serial Serial.begin(9600); Serial.println("BiRueda Pulsador (Adelante y atrás)"); //Botones como entrada y abiertos pinMode(ADELANTE, INPUT); digitalWrite(ADELANTE, HIGH); pinMode(ATRAS, INPUT); digitalWrite(ATRAS, HIGH); //Le damos velocidad a los motores motor.setSpeed(255); motor2.setSpeed(255); } //Eventos de captura de los botones //Botón adelante boolean UP() { //Si el pin está LOW quiere decir que está pulsado int up_pulsado = !digitalRead(ADELANTE); return up_pulsado; } //Botón atras boolean DOWN() { int down_pulsado = !digitalRead(ATRAS); return down_pulsado; } //Función 'Loop' void loop() { //Obtenemos los eventos de cada botón usando las funciones implementadas boolean ad = UP(); boolean at = DOWN(); //Si los dos pulsadores están pulsados o no el BiRueda no se moverá if ((ad == 1 && at==1) || (ad == 0 && at==0)){ Serial.print("."); motor.run(RELEASE); motor2.run(RELEASE); }//Si sólo está pulsado ADELANTE else if(ad ==1){ Serial.print("U"); motor.run(FORWARD); motor2.run(FORWARD); }else if(at == 1){ Serial.println("D"); motor.run(BACKWARD); motor2.run(BACKWARD); } //Dejamos un retraso de 20 milisegundos delay(20); }
Como hemos visto en otros miniproyectos que usan pulsadores, necesitamos funciones para que capturen los eventos de pulsación de cada botón, que durante 'Loop' vamos comprobando para ver que comando debe ejecutar el BiRueda. Sin más os dejo con una demostración de su funcionamiento.