18dof simple hexapode, Arduino nano (éventuellement avec le maestro pololu) (12 / 13 étapes)

Étape 12:18 Servo Code

Voir « 12 servo » pour les notes sur l’ajustement de l’une des constantes. Code est à
https://github.com/nouyang/18-servo-hexapod/blob/master/pololu_aug17-2012.pde.

Explication :
Voir documentation sur http://www.pololu.com/docs/0J40/5.e

a. BYTE est un paramètre qui spécifie le point de départ (format) pour nous http://www.arduino.cc/en/Serial/Print

b. cible est un entier non négatif inférieur à 8192 (il peut être écrit en notation binaire contenant des chiffres 14 ou moins)
par exemple 6000, ou en binaire : 01011101110000

c. 0x7F est 01111111 en binaire, quel infini des zéros à gauche, donc « & » ing (opérateur AND) il masque tous les chiffres dans la cible (lorsque la cible est écrit en binaire) sauf les 7 derniers chiffres (seulement 1 et 1 == 1. toutes les autres combinaisons == 0)
01011101110000
& 00000001111111
= 00000001110000

opérateur de décalage vers la droite d., décale les sept derniers chiffres (numéros 7 à 13) dans la cible au large dans le vide et donc maintenant les sept derniers chiffres « nouveau » étaient à l’origine bits #0 à 6 (voir doc pololu codés par couleur). Masque avec 0x7F encore une fois, juste pour être sûr.
01011101110000, >> 7 à :
00000000101110, puis :
& 00000001111111
= 00000000101110

La principale différence avec le code par défaut est que j’ai tracé les valeurs de sorte que je pouvais stupidement port code d’arduino-"Servo.write ()" style - style de pololu-« settarget () »-.

void settarget (servo unsigned char, unsigned int target)
{
cible = carte (cible, 0, 180, 2400, 9500) ;

Mon code, vers le haut sur github, est également copié ci-dessous :
======================
#include < SoftwareSerial.h >
#define txPin 2
#define rxPin 3

#define TIBIA 25
#define retard 150

#define CW 70
#define CCW 105

#define jusqu'à 92
#define bas 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 ;

SoftwareSerial mySerial (rxPin, txPin) ;

void setup() / / exécuter une seule fois, au démarrage de l’esquisse
{
mySerial.begin(9600) ;
Delay(1000) ;
}
void loop()
{
pour (int i = 0; i < = 4; i ++) {}
walkfwd() ;
}
pour (int j = 0; j < = 4; j ++) {}
walkbwd() ;
}
pour (int k = 0; k < = 2; k ++) {}
turnleft() ;
}
pour (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() {}
[COXA] changé
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] changé
SetTarget (A_FEM, en bas) ;
SetTarget (C_FEM, en bas) ;
SetTarget (E_FEM, en bas) ;

SetTarget (D_FEM, UP) ;
SetTarget (F_FEM, UP) ;
SetTarget (B_FEM, UP) ;

Delay(Delay) ;
}

void f3() {}
[COXA] changé
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] changé
SetTarget (A_FEM, UP) ;
SetTarget (C_FEM, UP) ;
SetTarget (E_FEM, UP) ;

SetTarget (D_FEM, en bas) ;
SetTarget (F_FEM, en bas) ;
SetTarget (B_FEM, en bas) ;

Delay(Delay) ;
}

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

void b1() {}
[COXA] changé
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] changé
SetTarget (A_FEM, en bas) ;
SetTarget (C_FEM, en bas) ;
SetTarget (E_FEM, en bas) ;

SetTarget (D_FEM, UP) ;
SetTarget (F_FEM, UP) ;
SetTarget (B_FEM, UP) ;

Delay(Delay) ;
}

void b3() {}
[COXA] changé
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] changé
SetTarget (A_FEM, UP) ;
SetTarget (C_FEM, UP) ;
SetTarget (E_FEM, UP) ;

SetTarget (D_FEM, en bas) ;
SetTarget (F_FEM, en bas) ;
SetTarget (B_FEM, en bas) ;

Delay(Delay) ;
}

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

void l1() {}
[COXA] changé
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] changé
SetTarget (A_FEM, en bas) ;
SetTarget (C_FEM, en bas) ;
SetTarget (E_FEM, en bas) ;

SetTarget (D_FEM, UP) ;
SetTarget (F_FEM, UP) ;
SetTarget (B_FEM, UP) ;

Delay(Delay) ;
}

void l3() {}
[COXA] changé
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] changé
SetTarget (A_FEM, UP) ;
SetTarget (C_FEM, UP) ;
SetTarget (E_FEM, UP) ;

SetTarget (D_FEM, en bas) ;
SetTarget (F_FEM, en bas) ;
SetTarget (B_FEM, en bas) ;

Delay(Delay) ;
}

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

void r1() {}
[COXA] changé
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] changé
SetTarget (A_FEM, en bas) ;
SetTarget (C_FEM, en bas) ;
SetTarget (E_FEM, en bas) ;

SetTarget (D_FEM, UP) ;
SetTarget (F_FEM, UP) ;
SetTarget (B_FEM, UP) ;

Delay(Delay) ;
}

void r3() {}
[COXA] changé
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] changé
SetTarget (A_FEM, UP) ;
SetTarget (C_FEM, UP) ;
SetTarget (E_FEM, UP) ;

SetTarget (D_FEM, en bas) ;
SetTarget (F_FEM, en bas) ;
SetTarget (B_FEM, en bas) ;

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() ;
}

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

Envoyer une commande définir cible au Maestro.
Cible est en unités de microsecondes trimestre, alors que la normale se situe entre 4000 à 8000.
void settarget (servo unsigned char, unsigned int target)
{
cible = carte (cible, 0, 180, 2400, 9500) ;
mySerial.write(0xAA) ; commencer octets
mySerial.write(0x0C) ; id de périphérique
mySerial.write(0x04) ; Numéro de commande
mySerial.write(servo) ; nombre de servos
mySerial.write (cible & 0x7F) ;
mySerial.write ((cible >> 7) & 0x7F) ;
}

Articles Liés

Arduino Nano avec capteur DHT & OLED

Arduino Nano avec capteur DHT & OLED

Dans ce tutoriel, je vais décrire comment utiliser un capteur DHT sur un affichage Arduino Nano et OLED.Étape 1: IntroSalutMon nom est Nick Hendriks et j'habite aux Pays-Bas. Je n'ai aucune expérience avec Arduino ou les composants utilisés, mais ave
Arduino Nano : Affichage analogique OLED I2C Simple SSD1306 avec Visuino

Arduino Nano : Affichage analogique OLED I2C Simple SSD1306 avec Visuino

Les écrans OLED sont parmi les plus cool et le plus avancés des modules que vous pouvez utiliser dans votre projet Arduino. Ils viennent à petit facteur de forme et ont de très faible consommation d'énergie tout en offrant des couleurs vives. Certain
Arduino Nano : Branchement interrupteur Photo (à fente optocoupleur) avec Visuino

Arduino Nano : Branchement interrupteur Photo (à fente optocoupleur) avec Visuino

Optocoupleurs fendues (Photo interrupteurs) sont des capteurs très utiles, souvent inclus dans les projets d'Arduino pour détecter la position des objets en mouvement, de mesurer la vitesse de rotation ou mouvement linéaire, fréquence des événements
Arduino Nano avec DHT11, RTC DS1307 et LCD 16 x 2

Arduino Nano avec DHT11, RTC DS1307 et LCD 16 x 2

Salut. Il s'agit de mon premier Instructable, alors j'espère que ce sera OK.C'est mon projet Arduino Nano avec écran LCD avec I2C, RTC DS1307 et capteur DHT11.Pour ce projet, j'ai utilisé Arduino Nano, RTC DS1307 horloge board, Conseil de capteur DHT
Arduino Nano avec WIZ550io = Internet facile

Arduino Nano avec WIZ550io = Internet facile

J'aime l'Arduino Nano - c'est une jolie version compacte et entièrement fonctionnelles de l'Arduino Uno. Cependant, quand je suis allé pour le connecter à l'internet toutes cette exiguïté propre et bien rangée disparu sous le grand taille plein boucl
Arduino Nano : Infrarouge Obstacle Avoidance capteur avec Visuino

Arduino Nano : Infrarouge Obstacle Avoidance capteur avec Visuino

Capteurs infrarouges évitement d'obstacles sont bon marché, petits capteurs souvent utilisées dans des robots et projet Arduino pour détecter des objets à proximité du capteur.Les capteurs infrarouges fonctionnent en envoyant une lumière infrarouge a
Faible encombrement Arduino Nano avec circuit (Li Ion ou LIPO) qui peut éteindre lui-même (loquet souple) de chargement USB

Faible encombrement Arduino Nano avec circuit (Li Ion ou LIPO) qui peut éteindre lui-même (loquet souple) de chargement USB

Quand j'ai commencé mon premier projet Arduino, j'ai réalisé que je devais utiliser un Arduino de petit format, afin que je pourrais placer mon appareil. Étant nouveau Arduino, je ne savais pas tous les défis que j'aurais avec gestion de la batterie
Clignotant LED avec Arduino Nano

Clignotant LED avec Arduino Nano

Bonjour les amis,Voyant un témoin clignotant est tellement amusant, mais lorsque vous effectuez un comme qui par vous-même puis le plaisir est d'autant plus. ^_^Alors, que la fête commence,Dans ce instructable, j'ai montré comment clignoter une diode
Arduino Nano avec bouclier Ethernet

Arduino Nano avec bouclier Ethernet

J'ai récemment acheté un bouclier Arduino Ethernet destiné à l'Arduino Uno et pensé que je pouvais tout bien brancher à mon Arduino Nano existants. J'ai eu tort !Je ne pouvais pas trouver beaucoup d'informations sur comment faire cela, sauf que certa
Arduino Nano et Visuino : moteur pas à pas avec des boutons de contrôle

Arduino Nano et Visuino : moteur pas à pas avec des boutons de contrôle

Moteurs pas à pas sont souvent utilisés dans les projets de l'Arduino, chaque fois que quelque chose doit être déplacé ou transformé. Dans ce Instructable, je vais vous montrer comment il est facile à connecter le moteur pas à pas à l'Arduino Nano et
Ventilateur de salle de bain automatique avec Arduino Nano

Ventilateur de salle de bain automatique avec Arduino Nano

Vous connaissez ce sentiment gênant quand tu dois sortir de votre lit pour éteindre le ventilateur de salle de bain ? Celui qui vous devez allumer car sinon tout devient humide et éventuellement moisi à votre place ? Eh bien, vous pouvez oublier que
Arduino Nano : Matrice clavier avec Visuino

Arduino Nano : Matrice clavier avec Visuino

Matrice de claviers sont parmi les moyens les plus simples et les plus populaires de conclure informations clavier micro-contrôleurs de type Arduino.Dans ce Instructable je vais vous montrer comment il est facile pour connecter Clavier matrice Arduin
Arduino Nano : Analogique 7 Segment MAX7219 affichage avec Visuino

Arduino Nano : Analogique 7 Segment MAX7219 affichage avec Visuino

Affichage à 7 segments sont un choix très populaire pour l'affichage des données. Toutefois, ils se composent d'un grand nombre de LEDs et contrôler chaque LED avec une épingle numérique de l'Arduino n'est pas une solution pratique. Maxim Integrated
Arduino Nano: À l’aide de la résistance de pull-up avec Visuino

Arduino Nano: À l’aide de la résistance de pull-up avec Visuino

Une des caractéristiques plus sous-utilisés d'Arduino sont les Résistances de pull-up des broches numériques. Nous savons tous qu'ils sont là, et pourtant nous continuons oublier que nous pouvons les utiliser et continuer à ajouter des résistances ex