18dof simple Hexapod, Arduino nano (opcionalmente con el chip maestro) (12 / 13 paso)

Paso 12:18 código de Servo

Ver "12 servo" Notas sobre el ajuste de las constantes. Código es en
https://github.com/nouyang/18-servo-hexapod/blob/master/pololu_aug17-2012.pde.

Explicación:
Consulte documentación en http://www.pololu.com/docs/0J40/5.e

a. BYTE es un parámetro que pecifies la base (formato) nos http://www.arduino.cc/en/Serial/Print

b. es un entero no negativo menos de 8192 (puede escribirse en notación binaria con dígitos de 14 o menos)
por ejemplo, 6000, o en binario: 01011101110000

c. 0x7F es 01111111 en binario, que infinito ceros a la izquierda, así que ing "y" (AND bit a bit) enmascara hacia fuera todos los dígitos en blanco (cuando el destino está escrito en binario) excepto los últimos 7 dígitos (sólo 1 y 1 == 1. todas las demás combinaciones == 0)
01011101110000
& 00000001111111
= 00000001110000

operador de cambio derecha d., cambios últimos siete dígitos (números 7 a 13) en blanco apagado en espacio vacío y ahora los últimos siete dígitos "nuevos" eran originalmente pedacitos #0 a 6 (véase a chip colores doc). Mascarilla 0x7F otra vez, sólo para asegurarse.
01011101110000, >> 7 a:
00000000101110, entonces:
& 00000001111111
= 00000000101110

La diferencia principal con el código por defecto es que asignan los valores para que sin pensar podía portar código de arduino-"Servo.write ()" - estilo a pololu-"settarget ()"-.

void settarget (servo unsigned char, unsigned int destino)
{
objetivo = mapa (destino, 0, 180, 2400, 9500);

Mi código, hasta en github, también se copian a continuación:
======================
#include < SoftwareSerial.h >
#define txPin 2
#define rxPin 3

#define TIBIA 25
#define retraso 150

#define CW 70
#define CCW 105

#define hasta 92
#define abajo 125

// ~~~~~~~~~~~~~~~~~~~~ //

#define A_COX 1
#define A_FEM 2
#define A_TIB 3

#define B_COX 4
#define B_FEM 5
#define B_TIB 6

#define C_COX 7
#define C_FEM 8
#define C_TIB 9

#define D_COX 10
#define D_FEM 11
#define D_TIB 12
#define E_COX 13
#define E_FEM 14
#define E_TIB 15

#define F_COX 16
#define F_FEM 17
#define F_TIB 18

int numtimes = 3;

MySerial SoftwareSerial (rxPin, txPin);

void setup() / / ejecuta una vez, cuando comienza el bosquejo
{
mySerial.begin(9600);
Delay(1000);
}
void loop()
{
para (int i = 0; i < = 4; i ++) {}
walkfwd();
}
para (int j = 0; j < = 4; j ++) {}
walkbwd();
}
para (int k = 0; k < = 2; k ++) {}
turnleft();
}
para (int l = 0; l < = 2; l ++) {}
TurnRight();
}
}

void tibia() {}
setTarget (A_TIB, TIBIA);
setTarget (B_TIB, TIBIA);
setTarget (C_TIB, TIBIA);
setTarget (D_TIB, TIBIA);
setTarget (E_TIB, TIBIA);
setTarget (F_TIB, TIBIA);
}

// ~~~~~~~~~~fwd~~~~~~~~~~ //

void f1() {}
[Cadera] cambiado
setTarget (A_COX, CW);
setTarget (C_COX, CW);
setTarget (E_COX, CCW);

setTarget (D_COX, CW);
setTarget (F_COX, CW);
setTarget (B_COX, CCW);

Delay(Delay);
}

void f2() {}
[FÉMUR] cambiado
setTarget (A_FEM, abajo);
setTarget (C_FEM, abajo);
setTarget (E_FEM, abajo);

setTarget (D_FEM, arriba);
setTarget (F_FEM, arriba);
setTarget (B_FEM, arriba);

Delay(Delay);
}

void f3() {}
[Cadera] cambiado
setTarget (A_COX, CCW);
setTarget (C_COX, CCW);
setTarget (E_COX, CW);

setTarget (D_COX, CCW);
setTarget (F_COX, CCW);
setTarget (B_COX, CW);

Delay(Delay);
}

void f4() {}
[FÉMUR] cambiado
setTarget (A_FEM, arriba);
setTarget (C_FEM, arriba);
setTarget (E_FEM, arriba);

setTarget (D_FEM, abajo);
setTarget (F_FEM, abajo);
setTarget (B_FEM, abajo);

Delay(Delay);
}

// ~~~~~~~~~bwd~~~~~~~~~~~ //

void b1() {}
[Cadera] cambiado
setTarget (A_COX, CCW);
setTarget (C_COX, CCW);
setTarget (E_COX, CW);

setTarget (D_COX, CCW);
setTarget (F_COX, CCW);
setTarget (B_COX, CW);

Delay(Delay);
}

void b2() {}
[FÉMUR] cambiado
setTarget (A_FEM, abajo);
setTarget (C_FEM, abajo);
setTarget (E_FEM, abajo);

setTarget (D_FEM, arriba);
setTarget (F_FEM, arriba);
setTarget (B_FEM, arriba);

Delay(Delay);
}

void b3() {}
[Cadera] cambiado
setTarget (A_COX, CW);
setTarget (C_COX, CW);
setTarget (E_COX, CCW);

setTarget (D_COX, CW);
setTarget (F_COX, CW);
setTarget (B_COX, CCW);

Delay(Delay);
}

void b4() {}
[FÉMUR] cambiado
setTarget (A_FEM, arriba);
setTarget (C_FEM, arriba);
setTarget (E_FEM, arriba);

setTarget (D_FEM, abajo);
setTarget (F_FEM, abajo);
setTarget (B_FEM, abajo);

Delay(Delay);
}

// ~~~~~~~~~left~~~~~~~~~~~ //

void l1() {}
[Cadera] cambiado
setTarget (A_COX, CCW);
setTarget (C_COX, CCW);
setTarget (E_COX, CCW);

setTarget (D_COX, CW);
setTarget (F_COX, CW);
setTarget (B_COX, CW);

Delay(Delay);
}

void l2() {}
[FÉMUR] cambiado
setTarget (A_FEM, abajo);
setTarget (C_FEM, abajo);
setTarget (E_FEM, abajo);

setTarget (D_FEM, arriba);
setTarget (F_FEM, arriba);
setTarget (B_FEM, arriba);

Delay(Delay);
}

void l3() {}
[Cadera] cambiado
setTarget (A_COX, CW);
setTarget (C_COX, CW);
setTarget (E_COX, CW);

setTarget (D_COX, CCW);
setTarget (F_COX, CCW);
setTarget (B_COX, CCW);

Delay(Delay);
}

void l4() {}
[FÉMUR] cambiado
setTarget (A_FEM, arriba);
setTarget (C_FEM, arriba);
setTarget (E_FEM, arriba);

setTarget (D_FEM, abajo);
setTarget (F_FEM, abajo);
setTarget (B_FEM, abajo);

Delay(Delay);
}

// ~~~~~~~~~right~~~~~~~~~~~ //

void r1() {}
[Cadera] cambiado
setTarget (A_COX, CW);
setTarget (C_COX, CW);
setTarget (E_COX, CW);

setTarget (D_COX, CCW);
setTarget (F_COX, CCW);
setTarget (B_COX, CCW);

Delay(Delay);
}

void r2() {}
[FÉMUR] cambiado
setTarget (A_FEM, abajo);
setTarget (C_FEM, abajo);
setTarget (E_FEM, abajo);

setTarget (D_FEM, arriba);
setTarget (F_FEM, arriba);
setTarget (B_FEM, arriba);

Delay(Delay);
}

void r3() {}
[Cadera] cambiado
setTarget (A_COX, CCW);
setTarget (C_COX, CCW);
setTarget (E_COX, CCW);

setTarget (D_COX, CW);
setTarget (F_COX, CW);
setTarget (B_COX, CW);

Delay(Delay);
}

void r4() {}
[FÉMUR] cambiado
setTarget (A_FEM, arriba);
setTarget (C_FEM, arriba);
setTarget (E_FEM, arriba);

setTarget (D_FEM, abajo);
setTarget (F_FEM, abajo);
setTarget (B_FEM, abajo);

Delay(Delay);
}

// ~~~~~~~~~~~~~~~~~~~~ //

void walkbwd() {}
tibia();
B1();
B2();
B3();
B4();
}
void walkfwd() {}
tibia();
F1();
F2();
F3();
F4();
}

{} void turnleft()
tibia();
L1();
L2();
L3();
L4();
}

{} void turnright()
tibia();
R1();
R2();
R3();
R4();
}

// ~~~~~~~~~~~~~~~~~~~~ //

Enviar un comando de destino establece al Maestro.
Blanco está en unidades de microsegundos de cuarto, por lo que el rango normal es de 4000 a 8000.
void settarget (servo unsigned char, unsigned int destino)
{
objetivo = mapa (destino, 0, 180, 2400, 9500);
mySerial.write(0xAA); Inicio bytes
mySerial.write(0x0C); id de dispositivo
mySerial.write(0x04); número de comando
mySerial.write(servo); número de servo
mySerial.write (destino & 0x7F);
mySerial.write ((blanco >> 7) & 0x7F);
}

Artículos Relacionados

Arduino Nano con sensor DHT y OLED

Arduino Nano con sensor DHT y OLED

En este tutorial voy a describir cómo utilizar un sensor DHT en un Arduino Nano y OLED de pantalla.Paso 1: introducciónHola,Mi nombre es Nick Hendriks y vivo en Holanda. No tengo experiencia con Arduino o los componentes utilizados, pero con la lectu
Base de Arduino Nano Hexbug araña robótica de escarabajo

Base de Arduino Nano Hexbug araña robótica de escarabajo

La Idea:Para construir una araña robótica programable basada en escarabajo Hexbug, equipado con el siguiente conjunto de sensores:[video]Sensor de distancia ultrasónicoObstáculo infrarrojo sensores y equiposGiroscopioAcelerómetroPuntero láserEl robot
Arduino Nano: Conexión de interruptor de la foto (optoacoplador ranurado) con Visuino

Arduino Nano: Conexión de interruptor de la foto (optoacoplador ranurado) con Visuino

Optoacoplador ranurado (foto interruptores) es muy útiles, incluida a menudo en proyectos de Arduino para detectar la posición de objetos en movimiento, medir la velocidad de rotación, o movimiento lineal, la frecuencia de eventos y muchos otros.Son
Arduino Nano: Detector de evitación de obstáculos infrarrojo con Visuino

Arduino Nano: Detector de evitación de obstáculos infrarrojo con Visuino

Sensores infrarrojos evitación del obstáculo son baratos, pequeños sensores de uso frecuente en robots y proyecto de Arduino para detectar objetos cerca del sensor.Los sensores infrarrojos funcionan enviando una luz infrarroja con cierta frecuencia,
RS485 Comunicación Serial entre Arduino Mega y Arduino Nano con Visuino

RS485 Comunicación Serial entre Arduino Mega y Arduino Nano con Visuino

A veces necesitamos conectar placas Arduino ubicados muy lejos unos de otros. RS485 es una manera muy conveniente para conectar las tablas con sólo 2 conductores y puede trabajar a una distancia de 1200 m (4000 pies). También permite múltiples tablas
Parpadeo LED con Arduino Nano

Parpadeo LED con Arduino Nano

Hola amigos,Ver un LED que parpadea es muy divertido, pero cuando haces uno como el que por ti mismo entonces la diversión es aún más. ^_^Así, que la diversión comience,En este instructable, he mostrado cómo a parpadear un LED con Arduino Nano.Nota:
Arduino Nano con WIZ550io = Internet fácil

Arduino Nano con WIZ550io = Internet fácil

Me encanta el Arduino Nano - es una agradable compacta pero totalmente funcional versión de Arduino Uno. Sin embargo, cuando fui a conectar a internet de esa pequeñez y prolijo desaparecidos bajo el gran escudo de ethernet de tamaño completo que tení
Arduino Nano con DHT11, RTC DS1307 y LCD 16 x 2

Arduino Nano con DHT11, RTC DS1307 y LCD 16 x 2

Hola. Este es mi primer Instructable, así que espero que va a estar bien.Este es mi proyecto de Arduino Nano con LCD I2C Junta, RTC DS1307 y sensor DHT11.Para este proyecto usé Arduino Nano, RTC DS1307 reloj tablero, tablero del sensor DHT11, 16 x 2
Arduino Nano con Ethernet Shield

Arduino Nano con Ethernet Shield

Hace poco compré un escudo Arduino Ethernet diseñado para el Arduino Uno y pensado que sólo fácilmente puede pude conectarlo a mi Arduino Nano existentes. Me equivoqué!No pude encontrar mucha informacion en todo sobre cómo hacer esto, excepto que alg
Arduino Nano: Teclado de matriz con Visuino

Arduino Nano: Teclado de matriz con Visuino

Telclados numéricos de la matriz son algunas de las maneras más simples y más populares para entrar información del teclado en microcontroladores Arduino tipo.En este Instructable mostrará lo fácil que es conectar Teclado matriz con Arduino y program
Arduino Nano: Contra rebotes y alternar botón con Visuino

Arduino Nano: Contra rebotes y alternar botón con Visuino

Botones conectado a Arduino se pueden utilizar fácilmente como interruptor de encendido/apagado. Desgraciadamente los botones tienden a crear ruido que despiden cuando conectar/desconectar, hacer la funcionalidad de alternar no fiable. El ruido puede
Arduino Nano: Leer múltiples DS1820/DS18S20 Maxim un alambre Termómetros con Visuino

Arduino Nano: Leer múltiples DS1820/DS18S20 Maxim un alambre Termómetros con Visuino

Una de las razones que los Termómetros DS18B20 OneWire Maxim DS1820 DS18S20 / / son tan populares es que varios termómetros pueden ser conectados e incluso funciona con sólo 2 hilos. Ya postee Instructables en cómo conectar un termómetro y cómo obten
Arduino Nano: Analógico 7 segmento MAX7219 pantalla con Visuino

Arduino Nano: Analógico 7 segmento MAX7219 pantalla con Visuino

Displays de 7 segmentos son una opción muy popular para Mostrar datos. Sin embargo, constan de un gran número de LEDs y controlar cada LED con un pin digital de Arduino no es una solución práctica. Maxim Integrated ofrece muy conveniente chip para el
Arduino Nano y Visuino: Control de Motor paso a paso con los botones

Arduino Nano y Visuino: Control de Motor paso a paso con los botones

Motores paso a paso se utilizan en proyectos de Arduino, cuando algo necesita ser movido o dado vuelta. En este Instructable, les mostraré lo fácil que es conectar el Motor de paso a paso con Arduino Nano y controlar con los botones.Tenga en cuenta q