Remote Control Pleo med Wii Nunchuck (5 / 5 steg)

Steg 5: Ladda programvaran



Pleo är en autonom robot och flyttar sitt eget. Innan du kan utfärda egna kommandon för Pleo måste du göra det stå stilla. Kalla det PleoStun eller PleoHypnosis, men du kan ladda ner det här: http://robostuff.com/wp-content/robostuff-com/stun.zip
Extrahera innehållet i arkivet till Tom SD-kortet (gamla SD kort mindre än 2Gb är preferrable) och sätt in det i Pleo's SD kortplats. Inte aktivera Pleo ännu.

Du måste också ladda programvaran till Arduino. För att du kommer att behöva ladda ner program som heter Arduino från här: http://arduino.cc/en/Main/Software. Installera och kör programmet Arduino och köra den. I Verktyg -> styrelse och verktyg -> menyer väljer du typ av Arduino och Port för seriell den är ansluten till. Nu copypaste kodas detta till Arduino skiss fönster och skriva den till Arduino minne (Arkiv -> Lägg upp på i/o-styrelsen).

#include
#include

#undef int
#include

#define BAUD_RATE 9600 / / 19200 för programmering, 115200 för att arbeta med Pleo, 9600 för överföring via xbee

#define LED_PIN 13 / / pin LED är kopplad till
#define GROUND_PIN PC2
#define POWER_PIN PC3
#define POWER_ON_LED_PIN 13
#define RECEIVE_LED_PIN 12

#define DELTA 20 / / joysticken läge tolerans

#define ACTION "motion spela vråla" / / playes på Z anc C knappar tryckte
#define J_TOP_LEFT "motion spela com_walk_fl_v1"
#define J_TOP "motion spela com_walk_fs_v1"
#define J_TOP_RIGHT "motion spela com_walk_fr_v1"
#define J_LEFT "motion spela hun_sniff_l" / /???
#define J_RIGHT "motion spela hun_sniff_r" / /???
#define J_BOTTOM_LEFT "motion spela com_walk_bl_v1"
#define J_BOTTOM "motion spela hun_exit" / /???
#define J_BOTTOM_RIGHT "motion spela com_walk_br_v1"

#define CMD_DISABLE_LOG "log inaktivera alla"

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

uint8_t buf [6]. globala buffert för att lagra nunchuck data, bad, bad...

ställer in allt
void setup()
{
pinMode (POWER_ON_LED_PIN, OUTPUT);
pinMode (RECEIVE_LED_PIN, OUTPUT);
digitalWrite (POWER_ON_LED_PIN, hög);
fördröjning (100); vänta på saker att stabilisera
Serial.BEGIN (BAUD_RATE); Konfigurera seriell utgång
wait_for_pleo(); vänta på Pleo till stöveln upp
Wire.BEGIN(); gå med i2c bussen med adress 0x52
power_on (PC3, PC2); PowerOn nunchuck
init_nunchuck(); Skicka initilization handslag
}

väntar på pleo att starta upp. Det är viktigt att XBee samordnare ansluten till arduino är aktiverat på första
sedan bör noden XBee ansluten till Pleo vara aktiverat.
statisk void wait_for_pleo()
{
digitalWrite (RECEIVE_LED_PIN, hög);
int vänta = 1;
int count = 0;
int läsa = 0;
medan (vänta)
{
om (Serial.available())
{
Läs = Serial.read();
om (Läs == ' >')
{
vänta = 0;
}
}
annat
{
fördröjning (500).
Serial.Print ("");
}
}
kommando (CMD_DISABLE_LOG, 500); Inaktivera Pleo loggning annars seriell blir skrotade och allt slutar fungera på en minut
digitalWrite (RECEIVE_LED_PIN, låg);
}

void delay_read (int sömn)
{
int läsa;
samtidigt (Serial.available())
{
Läs = Serial.read();
}
fördröjning (sömn);
}

vänder på power för nunchuck
statisk void power_on (byte pwr, byte gnd)
{
DDRC | = _BV(pwr) | _BV(GND); göra utgångar
PORTC & = ~ _BV(gnd);
PORTC | = _BV(pwr);
Delay(100); vänta på saker att stabilisera
}

initiera nunchuck
void init_nunchuck()
{
Wire.beginTransmission (0x52); överföra till enhet 0x52
Wire.send (0x40); skickar minnesadress
Wire.send (0x00); skickar minnesadress
Wire.endTransmission(); stoppa överföring
}

Skicka noll till nunchuck gör det skicka dess nuvarande viktiga data tillbaka
void send_zero()
{
Wire.beginTransmission (0x52); överföra till enhet 0x52
Wire.send (0x00); skickar en byte
Wire.endTransmission(); stoppa överföring
}

void loop()
{
digitalWrite (RECEIVE_LED_PIN, låg);
Serial.Print (""); Jag vet inte varför utan denna linje loopen fungerar bara inte.
int cnt = 0; antal byte som läses från ingång
Wire.requestFrom (0x52, 6); begäran 6 byte från nunchuck
samtidigt (Wire.available())
{
BUF [cnt ++] = dekryptera (Wire.receive()); ta emot byte som ett heltal
}
om (cnt > = 5)
{
process_buffer(); gör jobbet
}
send_zero(); skicka begäran om nästa byte
digitalWrite (RECEIVE_LED_PIN, hög);
}

positioner huvud enligt joystick position
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 ("gemensamma flytta 11");
Serial.Print (nh);
Serial.Print ("");
Serial.Print ("gemensamma flytta 12");
Serial.Print (nv);
Serial.Print ("");
delay_read (1000);
}

positioner svans enligt joystick position
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 ("gemensamma flytta 9");
Serial.Print (nh);
Serial.Print ("");
Serial.Print ("gemensamma flytta 10");
Serial.Print (nv);
Serial.Print ("");
delay_read (1000);
}

Annullera kommando (char cmd [], int sömn)
{
Serial.Print (cmd);
Serial.Print ("");
delay_read (sömn);
}

tolkar återvända från nunchuck (6 byte)
void process_buffer()
{
int jx = buf [0];
int jy = buf [1].
int ax = buf [2] > 2) & 0x03);
int ay = buf [3] > 4) & 0x03);
int az = buf [4] > 6) & 0x03);
int bz = buf [5] & 1.
int bc = (buf [5] >> 1) & 1;

om (kolla (jx, jy, 53, 205))
{
kommando (J_TOP_LEFT, 2000);
}
annars om (kolla (jx, jy, 123, 226))
{
kommando (J_TOP, 2000);
}
annars om (kolla (jx, jy, 202, 202))
{
kommando (J_TOP_RIGHT, 2000);
}
annars om (kolla (jx, jy, 25, 127))
{
kommando (J_LEFT, 2000);
}
annars om (kolla (jx, jy, 128, 132))
{
om ((bz == 1) & & (bc == 1))
{
position_head (ax, ay);
}
annars om ((bz == 0) & & (bc == 1))
{
position_tail (ax, ay);
}
annars om ((bz == 0) & & (bc == 0))
{
kommando (ACTION, 4000);
}
}
annars om (kolla (jx, jy, 226, 130))
{
kommando (J_RIGHT, 2000);
}
annars om (kolla (jx, jy, 54, 59))
{
kommando (J_BOTTOM_LEFT, 2000);
}
annars om (kolla (jx, jy, 126, 30))
{
kommando (J_BOTTOM, 2000);
}
annars om (kolla (jx, jy, 200, 57))
{
kommando (J_BOTTOM_RIGHT, 2000);
}
annat
{
print_data (jx jy, ax, ay, az, bz, f.Kr.); endast för debug lämna det här
}
}

kontrollerar om joystick placerar är i viss position med DELTA tolerans
int check (int sx, int sy, int tx, int ty) {
tillbaka (abs (sx - tx)}

debug utmatning av nunchuck's data
void print_data (int jx, int jy, int ax, int ay, int az, int bz, int f.Kr.)
{
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 (bc, DEC);
Serial.Print ("");
Serial.Print (bz, DEC);
Serial.Print ("");
Serial.Print ("");
}

dekrypterar nunchuck data, berömda "formel", jag hittade inte varför det fungerar
char dekryptera (char x)
{
tillbaka (x ^ 0x17) + 0x17;
}

Observera massa förseningar i programmet. Pleo ger inte feedback att kommandot har slutförts. Också när kommandot ges kan inte du avbryta den. Och, som jag nämnt tidigare, Pleos servon är riktigt långsam att undvika överhettning. Allt detta innebär att det finns en fördröjning mellan nunchuck flytta och Pleo flytta.

Denna kod ska fungera med andra robotar genom att skriva position_head och position_tail metoder att översätta till din robot kommandon kan du mod.

Det är allt, gott folk, har du din alldeles egna fjärrstyrda Pleo. Njut!

Se Steg
Relaterade Ämnen

ESP8266 och Visuino: WiFi fjärrkontroll Smart bil Robot med Wii Nunchuck

Smart Car anger i kombination med L298N Motor drivrutinsmoduler, erbjuder en av de enklaste sätten att göra roboten bilar. Jag har redan gjort en Instructable på hur du kan kontrollera Smart bil med Arduino och Joystick. Det är emellertid mer intress...

Desktop Frisbee Launcher med Wii Nunchuck

Här är hur man bygger min första iteration av en launcher som kastar Discraft mini Star Ultimate skivor. Du kan ringa detta snabba och smutsiga version. Det är verkligen grundläggande. Allt det gör är att skjuta. Men det kan lätt ändras för att göra...

Projektet Robot bugg - med wii nunchuck

Projektet Robot buggVad roboten måste:Rörliga objekt, ledde lichtRobot materialet måste bestå av 3 olika typer av material3D-skrivare är obligatoriska i processen att göra detta projekt.Steg 1: Församlingen steg & projekt delar lista över delar som b...

Remote Control bil med Arduino och Bluetooth

Projektet består i att göra en fjärrkontroll bil använder en bluetooth-anslutning. Denna bil är tänkt att användas i en ballong poppar konkurrens mot andra liknande bilar. Den trådlösa anslutningen uppnås genom att använda en bluetooth-modul som är a...

Arduino ledde matrisen med Wii Nunchuck kontroll

Main Video:Dokumentation...

Styra din Robot med en Wii Nunchuck (och en Arduino)

efter bär själv spela Wii boxning jag måste tänka vore det inte bra om jag kunde använda detta för att styra min robot, (ser att min vänstra hand).Titta runt på internet hittade jag en uppsjö av människor som gör liknande saker, (länkar till alla bar...

Arduino Wii nunchuck och Wii motion plus med uppdaterad kod för IDE 1.0.2 och lysdioder

så, jag var försökande till hacka min Wii nunchuck eftersom jag vill styra motorer och lampor med Wii nunchuck.Det första problemet som jag hittade var hur man ansluta kontrollen utan adapter, jag planerar att göra en, menNär jag var forskande för nu...

HackerBoxes 0002: Klivet upp till ARM32, MCU Video, Wii Nunchuck

Detta Instructable delar grunderna i arbetar med HackerBoxes #0002. HackerBoxes är den månatliga box prenumerationstjänsten för elektronik hobbyister, beslutsfattare och hackare. Om du vill få en box som denna rätt till din brevlåda varje månad, kan...

Animatronic ögon och Wii Nunchuck

Jag hittade denna 3D-fil på Thingiverse av Micropuller. Jag insåg snabbt att filen skapar en överdimensionerad öga enhet. Men jag ville ändå utforska skapa en animatronic ansikte som jag kunde kontrollera med en Arduino.Ju mer jag tänkte på det, dest...

DIY Cintiq Tablet med Wii Remote

detta instructable kommer att lära dig hur man bygger en mycket rudimentära version av en Wacom Cintiq visuella grafik tablett, med en wii remote, en platt bildskärm och en infraröd penna.Detta är ganska lik instructables om hur du skapar en whiteboa...

Spela in IR-koder för någon fjärrkontroll för användning med Linux Infrared Remote Control (LIRC) på Raspberry Pi GPIO-baserade infraröd mottagare

IntroduktionDe fjärrkontroller som är föräldralösa när enheten kontrollerar de kan slutat fungera återanvändas på din Raspberry Pi. Efter att ha avslutat detta instructable, du kan bli intresserad i försökande ute den följande instructables:Återanvän...

Automatisk remote ON/OFF med hjälp av mikrofon-uttaget på din videokamera / låg spänning Solid State Relay

Översikt: vi använde MIC-uttaget av en videokamera för att upptäcka när kameran är på. Vi byggde en låg spänning solid-state relä för att upptäcka MIC-uttaget och automatiskt aktivera och inaktivera en enhet samtidigt som videokameran. Solid-state re...

Wii Nunchuck Adapter

denna tutorial är för alla de människor som har en arduino och vill använda det Wii nunchuck som en inmatningsenhet, men inte verkligen känner för styckning öppna sladden och förstör nunchuck FOREVER!!!Tja har du kommit till rätt ställe!Steg 1: lever...

Trådlös Wii Nunchuck kontrollerade Arduino

Använda en helt omodifierade trådlös Wii Nunchuck som ett styrsystem för Arduino baserat projekt. Ingen extra radio sändare/mottagare par etc.Detta instructable förutsätter viss erfarenhet med Arduino mikrokontroller.Radiomottagare som kommer med trå...

Remote Control sällskapsdjur dörren

Dilemma:6 på morgonen den 1 januari. Du festade till 03: 00. Nu ska du sova det off när du väcks av ett påträngande avlysningen kommer från bakdörren. Din hund behöver gå ut och ta hand om sin verksamhet, men du är varm, skön, och golvet är kallt och...

Remote Control pipig leksak

detta är en enkel leksak för sällskapsdjur. Jag kom upp med detta att underhålla min hund. Du kan använda olika storlek fjärrkontroll bilar för olika stora hundar och olika typer av terräng.Steg 1: material Vad som behövs:Remote Control bilPipig leks...

Laddning Remote Control Robot

laddning Remote Control RobotFÖRST AV ALLT VILL JAG KLARA DIN ALLA TVIVEL INNAN DU BÖRJAR. JAG ÄR INTE NÅGON TEKNISK OCH MEKANISK EXPERT I MASKIN SÅ DU INTE BEHÖVER SPENDERA 100 DOLLAR I DETTA PROJEKT DET ÄR SÅ BILLIGT OCH ENKELT PROJEKT. Du kan bygg...

Animatronic ögon och Wii Nunchuck del 2 - ge det en röst

Efter att jag byggt animatronic ögonen i Del1, ville jag fylla i ansiktet med en röst och eventuellt flytta ögonbryn. Om du ser tillbaka på min Del1, ser du att jag använt en modell från Thingiverse för basen. När du har modell 3D tryckt, måste du lä...

Installera Linux Infrared Remote Control (LIRC) paket

IntroduktionLinux Infrared Remote Control (LIRC) är en svit av program som styr den IR hårdvaran av Pi-hallon. Lirc debian-paketet innehåller ett antal program:ircat - Skriv ut strängar när du trycker på knapparnairrecord - ansökan om inspelning IR-k...