Paso 16: Listado de código el controlador de robot
/ * Bluetooth Rover. Meta en la vida... Sigue a los comandos enviaron por arte de magia aunque el aire! O desde USB :) Escrito por Scott Beasley - 2015 gratis para usar o modificar. Disfrutar. * / / * Utiliza la biblioteca L9110S. Funciona con el puente h L9110S. Descargar de https://github.com/jscottb/L9110Driver o copia el zip de https://github.com para quitar el '-maestro ' del nombre del archivo para agregar la biblioteca * / #include < L9110Driver.h > #include < Servo.h > #define SERVO_Y 2 / / Pin servo garra Y #define SERVO_CLAW 7 / pasador pinza pinza servo #define pinAIN1 5 / / define I1 interfaz #define pinAIN2 6 / / definir I2 interfaz #define pinBIN1 3 / / definir I3 interfaz #define pinBIN2 11 / / definir interfaz de I4 / / velocidad define #define MAXFORWARDSPEED 225 / máx. velocidad queremos moviendo adelante #define MAXBACKWARDSPEED 225 / reversa máxima velocidad #define TOPSPEED 255 / usados para ayudar a girar mejor en alfombras y superficies más ásperas. Vario tiempo demoras para conducción y servo #define TURNDELAY 475 #define TURNDELAY45 235 #define BACKUPDELAY 400 #define SERVOMOVEDELAY 200 #define SERVOSEARCHDELAY 85 / * área de Globals. * / / / Crear los objetos servo motor, interfaz con L9110_Motor motor_left (pinAIN1, pinAIN2); Crear objeto motor izquierdo L9110_Motor motor_right (pinBIN1, pinBIN2); Crear derecho motor objeto Servo grip_y_servo; Crea un objeto servo para la pinza Y eje Servo grip_servo; Crea un objeto servo para la garra garra void setup () {/ / cambiar la velocidad si diferentes 57600 Serial.begin (57600); grip_y_servo.attach (SERVO_Y); / / Conecte el servo SERVO_LR grip_y_servo.write (90); grip_servo.attach (SERVO_CLAW); / / Conecte el servo SERVO_LR grip_servo.write (90); delay (500);} void loop () {comando byte = 0, val = 0; si (Serial.available () > 0) {/ / leer el entrada comando byte = Serial.read ();} interruptor (comando) {caso 'w' : go_forward (); Serial.println ("adelantando"); rotura; caso 'z': go_backward (); Serial.println ("yendo hacia atrás"); rotura; caso 'a': go_left (); retardo (TURNDELAY); detener (); Serial.println ("dando vuelta izquierda"); rotura; de caso ': go_right (); retardo (TURNDELAY); detener (); Serial.println ("Girar derecha"); rotura; caso 'q': go_left (); retardo (TURNDELAY45); detener (); Serial.println ("dando vuelta izquierda"); rotura; caso 'e': go_right (); retardo (TURNDELAY45); detener (); Serial.println ("Girar derecha"); rotura; caso 'h': detener (); Serial.println ("detener"); rotura; caso ' >': / / movimiento de pinza X envía servo ajuste val = Serial.read (); Limitamos el valor a los límites de movimiento real de la configuración grip_servo.write (restringir (val, 64, 179)); Serial.println ("GripperX"); rotura; caso ' ^': / / movimiento de pinza Y envía servo ajuste val = Serial.read (); Limitamos el valor a los límites de movimiento real de la configuración grip_y_servo.write (restringir (val, 53, 179)); Serial.println ("GripperY"); rotura; caso 'c': / / la que limitamos el valor límite de movimiento real de la configuración grip_y_servo.write (90); grip_servo.Write (90); Serial.println ("GripperHome"); rotura; 255 del caso: / / enviado después de que agarre todos los comandos (Serial.flush); rotura; } Serial.flush (); Delay(125); } void go_forward () {//Serial.println ("va adelante..."); Los motores hasta la velocidad de la rampa. Ayuda con giro hacia fuera en algunas superficies y mercancías y Tara en ramp_it de la GM (MAXFORWARDSPEED, adelante, adelante); Conjunto a toda la velocidad fijada sólo en caso la rampa IVA pasado no fue todo de / / se. motor_left.SETSPEED (MAXFORWARDSPEED); motor_right.SETSPEED (MAXFORWARDSPEED); motor_left.Run (FORWARD| COMUNICADO); motor_right.Run (FORWARD| COMUNICADO); } void go_backward () {//Serial.println ("ir hacia atrás..."); Los motores hasta la velocidad de la rampa. Ayuda con giro hacia fuera en algunas superficies y mercancías y Tara en ramp_it de la GM (MAXBACKWARDSPEED, al revés, al revés); Conjunto a toda la velocidad fijada sólo en caso la rampa IVA pasado no fue todo de / / se. motor_left.SETSPEED (MAXBACKWARDSPEED); motor_right.SETSPEED (MAXBACKWARDSPEED); motor_left.Run (BACKWARD| COMUNICADO); motor_right.Run (BACKWARD| COMUNICADO); } void go_left () {//Serial.println ("ir izquierdo..."); Los motores hasta la velocidad de la rampa. Ayuda con spinning en algunas superficies y mercancías y Tara en ramp_it de GM (TOPSPEED, atrás, adelante); Conjunto a toda la velocidad fijada sólo en caso la rampa IVA pasado no fue todo de / / se. motor_left.SETSPEED (TOPSPEED); motor_right.SETSPEED (TOPSPEED); motor_left.Run (BACKWARD| COMUNICADO); motor_right.Run (FORWARD| COMUNICADO); } void go_right () {//Serial.println ("va derecho..."); Los motores hasta la velocidad de la rampa. Ayuda con spinning en algunas superficies y mercancías y Tara en ramp_it de GM (TOPSPEED, adelante, atrás); Conjunto a toda la velocidad fijada sólo en caso la rampa IVA pasado no fue todo de / / se. motor_left.SETSPEED (TOPSPEED); motor_right.SETSPEED (TOPSPEED); motor_left.Run (FORWARD| COMUNICADO); motor_right.Run (BACKWARD| COMUNICADO); } (alto vacío) {//Serial.println ("alto!"); ramp_it (0, freno, freno); motor_left.SETSPEED (0); motor_right.SETSPEED (0); motor_left.Run (freno); motor_right.Run (freno); } void ramp_it (uint8_t velocidad, uint8_t lf_dir, uint8_t rt_dir) {uint8_t ramp_val = 0, step_val = 0; step_val = abs (velocidad / 4); si (! velocidad) step_val = - step_val; para (uint8_t i = 0; i < 4; i ++) {ramp_val += step_val; motor_left.setSpeed (ramp_val); motor_right.setSpeed (ramp_val), motor_left.run (lf_dir| COMUNICADO); motor_right.Run (rt_dir| COMUNICADO); retraso (25); } }