Auge y pinza bot (14 / 15 paso)

Paso 14: Listado de código el controlador de robot

/ * Bot Bluetooth Boom-pinza. Meta en la vida... Sigue los comandos enviados por arte de magia en el aire! O desde USB :) Escrito por Scott Beasley - 2015 gratis para usar o modificar. Disfrutar. * / #include / / vario tiempo demoras para conducción y servo #define TURNDELAY 475 #define TURNDELAY45 235 / / comandos de chip controlador de servo #define SETSPEED 0 x 01 #define SETPOS 0 x 04 / * área de Globals. * / / / Crear los objetos servo motor, interfaz con SoftwareSerial Serial_servo (10, 11); SoftwareSerial Serial_motors (10, 12); void setup () {/ / cambiar el baudio si es diferente de abajo Serial.begin (9600); / / conexión Bluethooth Serial_servo.begin (9600); Serial_motors.Begin (19200); detener (); set_servo_speed (0, 10); Establecer el movimiento servo velocidad set_servo_speed (1, 10); para mover un poco más suave (de home_boom); home_gripper (); Delay (500); } void loop () {comando byte = 0, val = 0; / / el siguiente deba permanecer intacto durante la vida de la / / sesión así que ellos se hacen 'static'. Esto nos mantiene de / / que tienen como variables globales estáticas byte dist = 1; Comienzo con corto mueve velocidad estática byte = 1; velocidad lenta static byte speed_offset = 40; Static byte turn_style = 1; y con vueltas duro estático byte boom_val = 60; Static byte gripper_val = 60; Si (Serial.available () > 0) {/ / leer el entrada comando byte = Serial.read ();} switch (comando) {caso 'w': go_forward (speed_offset); //Serial.println ("va adelante"); si (dist == 1) {delay (750); (alto);} else if (dist == 2) {delay (1250); (alto);} break; caso 'z': go_backward (speed_offset); //Serial.println ("ir hacia atrás"); si (dist == 1) {retardo (750), detener ();} else if (dist == 2) {retardo (1250), detener ();} break; caso 'a' : go_left (speed_offset, turn_style); retardo (TURNDELAY); detener (); Serial.println ("dando vuelta izquierda"); rotura; de caso ': go_right (speed_offset, turn_style); retardo (TURNDELAY); detener (); Serial.println ("Girar derecha"); rotura; caso 'q': go_left (speed_offset, turn_style); retardo (TURNDELAY45); detener (); Serial.println ("dando vuelta izquierda"); rotura; caso 'e': go_right (speed_offset, turn_style); 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 (); gripper_val = val; Limitamos el valor real movemovent límites de la configuración set_gripper (val); Serial.println ("GripperX"); rotura; caso ' ^': / / movimiento de pinza Y envía servo ajuste val = Serial.read (); boom_val = val; Limitamos el valor real movemovent límites de la configuración set_boom (val); Serial.println ("GripperY"); rotura; caso 'c': gripper_val = 60; boom_val = 60; home_boom (); home_gripper (); Serial.println ("GripperHome"); rotura; caso 'v': / / establecer la velocidad se moverá al bot; 1 = más lento, 3 = velocidad más rápida = Serial.read (); Si (velocidad == 1) {speed_offset = 40; / / lenta} else if (velocidad == 2) {speed_offset = 20; / / Med} else if (velocidad == 3) {speed_offset = 0; / / rápido!} //Serial.println ("Set speed"); rotura; caso sería ': / / establecer cuánto se moverá al bot; 1 = corto, 2 medio, / / 3 = continua dist = Serial.read (); Serial.println ("movimiento distancia set"); rotura; caso ' t ': / / Set de la manera que el bot hace giros, una rueda (suave) o dos (duro) turn_style = Serial.read (); Serial.println ("estilo de la vuelta"); rotura; caso '+': / / velocidad sistema de teléfono velocidad ++; Si (velocidad > = 4) velocidad = 1; Si (velocidad == 1) {speed_offset = 40; / / lenta} else if (velocidad == 2) {speed_offset = 20; / / Med} else if (velocidad == 3) {speed_offset = 0; / / rápido
! } break; caso '-': / / Dist se movió desde teléfono dist ++; Si (dist > = 4) dist = 1; Serial.println ("movimiento distancia set"); rotura; caso ',': / / pinza abierta desde teléfono gripper_val += 10; Si (gripper_val > = 179) gripper_val = 179; set_gripper (gripper_val); Serial.println ("conjunto de la pinza"); rotura; caso '.': / / cierre pinza de teléfono gripper_val-= 10; Si (gripper_val < = 0) gripper_val = 0; set_gripper (gripper_val); Serial.println ("conjunto de la pinza"); rotura; caso '0': / / disminuir el auge del teléfono boom_val += 10; Si (boom_val > = 179) boom_val = 179; set_boom (boom_val); Serial.println ("juego de la pluma"); rotura; caso '1': / / aumentar el auge del teléfono boom_val-= 10; Si (boom_val < = 0) boom_val = 0; set_boom (boom_val); Serial.println ("juego de la pluma"); rotura; 255 del caso: / / enviado después de que agarre todos los comandos (Serial.flush); rotura; } Serial.flush (); Delay(125); } void go_forward (speed_offset bytes) {//Serial.println ("va adelante..."); Serial_motors.Write ((byte) 1 + speed_offset); Serial_motors.Write ((byte) 128 + speed_offset); } void go_backward (speed_offset bytes) {//Serial.println ("ir hacia atrás..."); Serial_motors.Write ((byte) 127 - speed_offset); Serial_motors.Write ((byte) 255 - speed_offset); } void go_left (speed_offset bytes, turn_style bytes) {//Serial.println ("ir izquierdo..."); Si (turn_style == 1) Serial_motors.write ((byte) 1 + speed_offset); más Serial_motors.write ((byte) 64); Apague el motor izquierdo (giro suave) Serial_motors.write ((byte) 255 - speed_offset); } void go_right (speed_offset bytes, turn_style bytes) {//Serial.println ("va derecho..."); Serial_motors.Write ((byte) 127 - speed_offset); Si (turn_style == 1) Serial_motors.write ((byte) 128 + speed_offset); más Serial_motors.write ((bytes) 192); Apagar el motor adecuado (giro suave)} void frenar () {//Serial.println ("alto!"); Serial_motors.Write ((byte) 0); } / / Establecer una posición de servos / servo_id es el número de servo (0-7) / ángulo es la posición abs desde 500 a 5500 void move_servo (int servo_id, int ángulo) {unsigned buff char [6] = {0 x 80, 0 x 01, SETPOS, 0 x 00, 0 x 00, 0 x 00}; unsigned unsigned char data_hi, data_low int temp; temp = ángulo & 0x1f80; data_hi = temp >> 7; data_low = ángulo & 0x7f; buff [3] = servo_id; //servo número buff [4] = data_hi; //data1 buff [5] = data_low; //data2 () Serial_servo.write Buff, 6); Serial_servo.Flush (); } void set_servo_speed (int servo_id, int velocidad) {unsigned buff char [5] = {0 x 80, 0 x 01, SETSPEED, 0 x 00, 0 x 00}; si la velocidad (velocidad > 127) = 127; buff [3] = lowByte (servo_id); buff [4] = lowByte (velocidad); Serial_servo.Write (buff, 5); Serial_servo.Flush (); } void set_boom (ángulo de byte) {move_servo (0, mapa (ángulo, 0, 179, 2500, 4000));} void set_gripper (ángulo de byte) {move_servo (1, mapa (ángulo, 0, 179, 2500, 4000));} void home_boom () {move_servo (0, 3000);} void home_gripper () {move_servo (1, 3000);}

Artículos Relacionados

Fix + reparación Nintendo Wii rompe energía Reset / Sync / botón (s)

Fix + reparación Nintendo Wii rompe energía Reset / Sync / botón (s)

ADVERTENCIA: Si no eres experto en soldadura le podría destruir tu Wii.  Si tu Wii está bajo garantía, envíe a Nintendo.  Si tu Wii está fuera de garantia, usted ha venido al lugar correcto.Entiendo que toma toda la responsabilidad si se rompe tu Wii
Trípode Ultimate DIY con el auge de la cámara

Trípode Ultimate DIY con el auge de la cámara

En este tutorial aprenderá a fabricar un trípode de webcam gratis de manos con un duradero y profesional buscando brazo de pluma telescópica y montaje de cámara universal. La varilla puede ser fácilmente extraída el trípode base, contraída a un tamañ
Botón en 3D impreso, bajo presupuesto y súper fácil!

Botón en 3D impreso, bajo presupuesto y súper fácil!

Para diferentes proyectos que necesitaba muchos botones baratos. Interruptores de tacto son baratos; pero no siempre útil puesto que pueden ser demasiado pequeños, que señalando las piernas etc. Por lo tanto decidí invertir algún tiempo en el diseño
Bote de basura manejable 2.0

Bote de basura manejable 2.0

Versión 1 de mi papelera manejable fue divertido, pero versión 2 tiene manija plegable y manejo. Todavía sin frenos...Paso 1: Herramientas y materialesPara hacer tu propia basura manejable puede usted va a necesitar,MaterialesBote de basuraScooter Ra
Corte occidental bricolaje botas

Corte occidental bricolaje botas

¿Quieres las botas que atraparán la atención de todos? En cinco horas puede crear su propio personalizado par de botas de vaquero de corte llevar junto al rodeo o para cualquier consigue al aire libre.MaterialesBotas de vaquero, señaló toeTienda de z
Aluminio bote pesca conversación y restauración

Aluminio bote pesca conversación y restauración

Epilog reto VI: he entré en esto en el reto de Epilog por favor voto en él si te gusta la construcción. Usar el láser para ayudarme con algunos proyectos muy interesantes como láser corta objetos de madera, señal luminosa led, azulejo grabado y mucho
Pinza para la ropa Piano para el iPad

Pinza para la ropa Piano para el iPad

Pantallas táctiles son grandes, pero cuando se trata de reproducir música en ellos, la falta de teclas físicas puede ser un lastre. Así que decidí reunir algunas cosas en casa y hacer un teclado de piano que engaña el iPad de pensamiento es tocada po
Perdió el bastidor de espuma - botón Play YouTube

Perdió el bastidor de espuma - botón Play YouTube

Hey todo el mundo! Últimamente he estado viendo muchos videos de aluminio fundido y quería seguir adelante y tratar de lanzar algo yo. Las posibilidades son infinitas con este material y literalmente puede hacer lo que quieras de aluminio sólido! En
Cómo hacer un carrusel de herramientas de un bote de pintura

Cómo hacer un carrusel de herramientas de un bote de pintura

Este proyecto fue inspirado al ver centros de maquinado Haas cambiar las herramientas. Es esencialmente un rotativa tablero de clavija de que montar en el techo o la parte inferior de un armario (que es lo que voy a mostrar cómo hacerlo). En este ins
Bota - cuero matraz

Bota - cuero matraz

Ver a piratas del Caribe muchas veces cuenta, animado por mis dos pequeños que sostienen el entusiasmo a pesar de la repetición, noté mantuvo superficie frasco de cuero de Gibbs. Ser de Español decente y dueño de varios bien hacer Botas de vino españ
Botas de cuero de enanos

Botas de cuero de enanos

Recuerdo una vez hace mucho tiempo, antes de que la abominación que es la trilogía del hobbit la horrible realidad. Cuando la primera película apenas había salido, y yo fui vencido por el ingenuo encanto de ser en la tierra media durante tres horas m
Cómo leer un vernier (pinza)

Cómo leer un vernier (pinza)

mirando un calibrador temprano, se dará cuenta de que un poco se ve como un tomahawk y tiene una escala abajo de su longitud. Más sobre la escala más adelante. En la parte inferior izquierda, la "lámina del destral de la" es las mordazas de la p
Controlador de MIDI botón Arcade

Controlador de MIDI botón Arcade

tener una interfaz de hardware para su música favorita / DJ / software de VJ realmente puede abrir puertas en tu creatividad. La forma más generalizada de control de hardware a su PC para este tipo de aplicaciones es un MIDI controlador.Un controlado
Grabar su propio mensaje en botón fácil de grapas

Grabar su propio mensaje en botón fácil de grapas

He visto un par otros web posts acerca de cómo modificar el botón fácil de grapas para reproducir su propio mensaje, pero ahora que ha cerrado Radio Shack, algunos de esos puestos ya no son válidos.Otro método requiere tener una batería de 9 voltios