Pleo télécommande avec Wii Nunchuck (5 / 5 étapes)

Étape 5: Charger le logiciel

Pleo est un robot autonome et se déplace ses propres. Avant que vous pouvez émettre vos propres commandes à Pleo, vous devrez faire du surplace. Appeler PleoStun ou PleoHypnosis, mais vous pouvez le télécharger ici : http://robostuff.com/wp-content/robostuff-com/stun.zip
Extraire le contenu de cette archive dans la carte SD vide (ancienne carte SD plus petite que 2 Go est préférable) et insérez-la dans la fente SD de Pleo. N’allumez Pleo encore.

Vous devez également charger le logiciel Arduino. Pour cela, vous devrez télécharger le programme appelé Arduino ici : http://arduino.cc/en/Main/Software. Installez et exécutez le programme Arduino et exécutez-le. Dans l’outil de configuration -> Conseil et outils Port menus Sélectionnez le type d’Arduino et port série, à qu'il est connecté. Maintenant copypaste ce code dans l’Arduino croquis fenêtre et l’écrire dans l’Arduino mémoire (fichier -> charger sur i/o Board).

#include
#include

#undef int
#include

#define BAUD_RATE 9600 / / 19200 pour la programmation, 115200 pour travailler avec Pleo, 9600 pour transmission via xbee

#define LED_PIN 13 / / la goupille de la LED est attachée à
#define GROUND_PIN PC2
#define POWER_PIN PC3
#define POWER_ON_LED_PIN 13
#define RECEIVE_LED_PIN 12

#define DELTA 20 / / position de la manette de jeu tolérance

#define ACTION « motion jeu roar » / / playes sur boutons anc C Z enfoncée
#define J_TOP_LEFT « motion jeu com_walk_fl_v1 »
#define J_TOP « motion jeu com_walk_fs_v1 »
#define J_TOP_RIGHT « motion jeu com_walk_fr_v1 »
#define J_LEFT « motion jeu hun_sniff_l » / /???
#define J_RIGHT « motion jeu hun_sniff_r » / /???
#define J_BOTTOM_LEFT « motion jeu com_walk_bl_v1 »
#define J_BOTTOM « motion jeu hun_exit » / /???
#define J_BOTTOM_RIGHT « motion jeu com_walk_br_v1 »

#define CMD_DISABLE_LOG « journal désactiver tous les »

#define MIN_X 316
#define MAX_X 730
#define MIN_Y 380
#define MAX_Y 630

uint8_t buf [6] ; tampon global pour le stockage des données de nunchuck, bad, bad...

installation de tout
void setup()
{
pinMode (POWER_ON_LED_PIN, sortie) ;
pinMode (RECEIVE_LED_PIN, sortie) ;
digitalWrite (POWER_ON_LED_PIN, élevé) ;
retard (100) ; Attendez que des choses à se stabiliser
Serial.Begin (BAUD_RATE) ; configurer la sortie série
wait_for_pleo() ; Attendez que Pleo de démarrer
Wire.Begin() ; Rejoignez les bus i2c avec adresse 0 x 52
power_on (PC3, PC2) ; PowerOn le nunchuck
init_nunchuck() ; Envoyer l’initialisation du handshake
}

attend pleo de démarrer. Il est important que le coordonnateur XBee connecté à arduino est activé premier
puis le nœud XBee connecté à Pleo doit être activé.
public static void wait_for_pleo()
{
digitalWrite (RECEIVE_LED_PIN, élevé) ;
int wait = 1 ;
int count = 0 ;
int lire = 0 ;
tandis que (attente)
{
Si (Serial.available())
{
lire = Serial.read() ;
Si (lire == ' >')
{
attendre = 0 ;
}
}
d’autre
{
retard (500) ;
Serial.Print ("") ;
}
}
commande (CMD_DISABLE_LOG, 500) ; Disable Pleo logging autrement série se perdent et tout s’arrête de fonctionner en une minute
digitalWrite (RECEIVE_LED_PIN, basse) ;
}

void delay_read (int sommeil)
{
int lire ;
tandis que (Serial.available())
{
lire = Serial.read() ;
}
retard (veille) ;
}

tour à tour à la puissance pour le nunchuck
public static power_on Sub (pwr octet, octet gnd)
{
DDRC | = _BV(pwr) | _BV(GND) ; faire des sorties
PORTC & = ~ _BV(gnd) ;
PORTC | = _BV(pwr) ;
Delay(100) ; Attendez que des choses à se stabiliser
}

initialiser le nunchuck
Sub init_nunchuck()
{
Wire.beginTransmission (0 x 52) ; transmettre à un périphérique 0 x 52
Wire.Send (0 x 40) ; envoie l’adresse mémoire
Wire.Send (0 x 00) ; envoie l’adresse mémoire
Wire.endTransmission() ; arrêter la transmission
}

envoi de zéro à nunchuck rend à envoyer ses données vitales actuelles retour
Sub send_zero()
{
Wire.beginTransmission (0 x 52) ; transmettre à un périphérique 0 x 52
Wire.Send (0 x 00) ; envoie un octet
Wire.endTransmission() ; arrêter la transmission
}

void loop()
{
digitalWrite (RECEIVE_LED_PIN, basse) ;
Serial.Print ("") ; Je ne sais pas pourquoi sans cette ligne la boucle ne fonctionne tout simplement pas.
cnt int = 0 ; nombre d’octets lus à partir de l’entrée
Wire.requestFrom (0 x 52, 6) ; demande 6 octets de nunchuck
tandis que (Wire.available())
{
buf [cnt ++] = décrypter (Wire.receive()) ; recevoir des octets en tant qu’entier
}
Si (cnt > = 5)
{
process_buffer() ; fait le travail
}
send_zero() ; Envoyer la demande pour les octets suivants
digitalWrite (RECEIVE_LED_PIN, élevé) ;
}

tête de postes selon la position de la manette de jeu
void position_head (int x, int y)
{
int nh = ((x - 320) * 13 / 41) - 65 ;
NH = nh nh = nh > 65 ? 65: nh ;
int nv = ((380 - y) * 15 / 25) + 75 ;
NV = nv nv = nv > 75 ? 75: nv ;
Serial.Print ("joint déplacer 11") ;
Serial.Print (nh) ;
Serial.Print ("") ;
Serial.Print ("joint déplacer 12") ;
Serial.Print (nv) ;
Serial.Print ("") ;
delay_read (1000) ;
}

queue de postes selon la position de la manette de jeu
void position_tail (int x, int y)
{
int nh = ((x - 320) * 18 / 41) - 90 ;
NH = nh nh = nh > 90 ? 90: nh ;
int nv = ((380 - y) * 18 / 25) + 90 ;
NV = nv nv = nv > 90 ? 90: nv ;
Serial.Print ("joint déplacer 9") ;
Serial.Print (nh) ;
Serial.Print ("") ;
Serial.Print ("joint déplacer 10") ;
Serial.Print (nv) ;
Serial.Print ("") ;
delay_read (1000) ;
}

annuler la commande (la cmd de char [], int sommeil)
{
Serial.Print (cmd) ;
Serial.Print ("") ;
delay_read (veille) ;
}

parses retournent de nunchuck (6 octets)
Sub process_buffer()
{
int jx = buf [0] ;
int jy = buf [1] ;
int ax = buf [2] > 2) & 0 x 03) ;
ay int = buf [3] > 4) & 0 x 03) ;
int az = buf [4] > 6) & 0 x 03) ;
int bz = buf [5] & 1 ;
int bc = (buf [5] >> 1) & 1 ;

Si (vérifier (jx, jy, 53, 205))
{
commande (J_TOP_LEFT, 2000) ;
}
ElseIf (vérifier (jx, jy, 123, 226))
{
commande (J_TOP, 2000) ;
}
ElseIf (vérifier (jx, jy, 202, 202))
{
commande (J_TOP_RIGHT, 2000) ;
}
ElseIf (vérifier (jx, jy, 25, 127))
{
commande (J_LEFT, 2000) ;
}
ElseIf (vérifier (jx, jy, 128, 132))
{
Si ((bz == 1) & & (bc == 1))
{
position_head (ax, ay) ;
}
ElseIf ((bz == 0) & & (bc == 1))
{
position_tail (ax, ay) ;
}
ElseIf ((bz == 0) & & (bc == 0))
{
commande (ACTION, 4000) ;
}
}
ElseIf (vérifier (jx, jy, 226, 130))
{
commande (J_RIGHT, 2000) ;
}
ElseIf (vérifier (jx, jy, 54, 59))
{
commande (J_BOTTOM_LEFT, 2000) ;
}
ElseIf (vérifier (jx, jy, 126, 30))
{
commande (J_BOTTOM, 2000) ;
}
ElseIf (vérifier (jx, jy, 200, 57))
{
commande (J_BOTTOM_RIGHT, 2000) ;
}
d’autre
{
print_data (jx, jy, ax, ay, az, bz, c.-b.) ; uniquement à des fins de débogage, il laisse ici
}
}

vérifie si la position de la manette de jeu est dans la position donnée avec une tolérance DELTA
vérification d’int (int sx, sy int, int tx, ty int) {}
retour (abs (sx - tx)}

sortie de débogage des données du nunchuck
void print_data (int jx, int jy, ax int, int Ayé, int az, int bz, int c.-b.)
{
Serial.Print (jx, DEC) ;
Serial.Print ("") ;
Serial.Print (jy, DEC) ;
Serial.Print ("") ;
Serial.Print (ax, DEC) ;
Serial.Print ("") ;
Serial.Print (ay, DEC) ;
Serial.Print ("") ;
Serial.Print (az, DEC) ;
Serial.Print ("") ;
Serial.Print (c.-b., DEC) ;
Serial.Print ("") ;
Serial.Print (bz, DEC) ;
Serial.Print ("") ;
Serial.Print ("") ;
}

déchiffre les données nunchuck, célèbre « formule », je n’ai pas trouvé pourquoi ça fonctionne
déchiffrer les char (char x)
{
retour (x ^ 0 x 17) + 0 x 17 ;
}

Notez les tas de retards dans le programme. Pleo ne commenter que la commande est exécutée. Aussi une fois que la commande est envoyée, vous ne peut pas abandonner il. Et, comme j’ai mentionné auparavant, servos de Pleo sont vraiment lents éviter une surchauffe. Tout cela signifie qu’il y a un délai entre le nunchuck déménagement et déplacement Pleo.

Ce code fonctionne avec d’autres robots en réécrivant les méthodes position_head et position_tail la traduction de commandes spécifiques à votre robot, vous pouvez mod.

C’est tout, les gens, vous avez votre propre Pleo télécommandé. Profitez !

Articles Liés

ESP8266 et Visuino : télécommande WiFi Smart voiture Robot avec Wii Nunchuck

ESP8266 et Visuino : télécommande WiFi Smart voiture Robot avec Wii Nunchuck

Que voiture smart définit lorsqu'il est combiné avec Les Modules des pilotes automobile L298N, offre une des façons plus faciles à rendre les voitures robot. J'ai déjà fait une Instructable sur comment vous pouvez contrôler la voiture Smart avec Ardu
Lanceur de Frisbee bureau avec Wii Nunchuck

Lanceur de Frisbee bureau avec Wii Nunchuck

Voici comment construire ma première itération d'un lanceur qui lève les disques Discraft mini Star ultime. On pourrait appeler cela la version rapide et sale. C'est vraiment de base. Il ne fait tirer. Mais, il pourrait facilement être modifié pour e
Projet Robot Bug - avec wii nunchuck

Projet Robot Bug - avec wii nunchuck

Projet Robot BugCe que le robot doit avoir :Objet en mouvement, licht ledLe matériel du robot doit se composer de 3 types différents de matérielLes imprimantes 3D sont nécessaires dans le processus de réalisation de ce projet.Étape 1: Composants Proj
Matrice de LED Arduino avec Wii Nunchuck contrôle

Matrice de LED Arduino avec Wii Nunchuck contrôle

vidéo de la Main :Documentation
HackerBoxes 0002 : Renforcement à ARM32, MCU vidéo, Wii Nunchuck

HackerBoxes 0002 : Renforcement à ARM32, MCU vidéo, Wii Nunchuck

Ce Instructable partage l'essentiel du travail avec HackerBoxes #0002. HackerBoxes est le service de boîte d'abonnement mensuel pour les amateurs d'électronique, les responsables et les pirates. Si vous désirez recevoir une boite comme ce droit à vot
Commander votre Robot à l’aide d’un Wii Nunchuck (et un Arduino)

Commander votre Robot à l’aide d’un Wii Nunchuck (et un Arduino)

après les avoir portés moi-même en jouant à Wii boxe je suis arrivé à penser ne serait-il pas merveilleux si je pourrais l'utiliser pour contrôler mon robot, (à la recherche de ma main gauche).En regardant autour de l'internet j'ai trouvé une foule d
Arduino Wii nunchuck et Wii motion plus avec code mis à jour pour IDE 1.0.2 et del

Arduino Wii nunchuck et Wii motion plus avec code mis à jour pour IDE 1.0.2 et del

alors, j'ai essayé de pirater mon nunchuck Wii parce que je veux contrôler les moteurs et les lumières avec le nunchuck Wii.Le premier problème que j'ai trouvé était de savoir comment connecter le contrôle sans adaptateur, je comptais en faire un, ma
Sans fil Wii Nunchuck contrôlée Arduino

Sans fil Wii Nunchuck contrôlée Arduino

Utiliser un complètement non modifiée sans fil Wii Nunchuck comme un système de contrôle pour tout projet Arduino basé. Aucune paire d'émetteur/récepteur radio ajouté etc..Cette instructable assume-t-il certaine expérience avec le microcontrôleur Ard
Wii Nunchuck comme contrôleur généraliste via carte Arduino

Wii Nunchuck comme contrôleur généraliste via carte Arduino

Rappel des faits :J'ai fait une planche à roulettes électrique autonome qui est orientée à l'aide d'un Wii Nunchuck en utilisant le levier de commande de pouce sur le dessus ou en l'inclinant gauche ou droite, selon qui des deux boutons à l'extrémité
Wii nunchuck earbud cas

Wii nunchuck earbud cas

permet de dire vous avez acheté une wii Nunchuk pour un autre projet et vous ne voulez pas utiliser l'étui original ou peut-être votre nunchuck wii vient de se casser, mais vous ne voulez pas jeter tout de suite.Voici quelque chose que vous pouvez fa
Animatronic yeux et Wii Nunchuck partie 2 - lui donner une voix

Animatronic yeux et Wii Nunchuck partie 2 - lui donner une voix

Après que j'ai construit les yeux animatronique dans la partie 1, j'ai voulu remplissez le visage avec une voix et éventuellement déplacement sourcils. Si vous revenez à ma partie 1, vous verrez que pour la base, j'ai utilisé un modèle de Thingiverse
Animatronic yeux et Wii Nunchuck

Animatronic yeux et Wii Nunchuck

J'ai trouvé ce fichier 3D sur Thingiverse par Micropuller. J'ai vite compris que le fichier crée une unité oeil surdimensionné. Mais j'ai toujours voulu explorer la création d'un visage animatronique que je pouvais contrôler avec un Arduino.Plus j'y
Arduino Wii Nunchuck controller

Arduino Wii Nunchuck controller

Comment faire pour commander 2 servos pensé le nunchuck wii.Étape 1: pièces Wii nunchuckArduino2 servoCarte de prototypageFils de raccordementÉtape 2: se connecter Brancher le nunchuck wii comme ce schéma.Étape 3: Télécharger le CodeÉtape 4: fait!!!
USB souris faite sur A Wii Nunchuck

USB souris faite sur A Wii Nunchuck

cette instructable décrira comment convertir une Nintendo Wii Nunchuk controller une souris à 2 boutons USB utilisant un Teensy USB.  Le Teensy USB est une carte de développement très convivial qui peut être programmée dans un environnement Arduino.