Afstandsbediening Pleo met Wii Nunchuck (5 / 5 stap)

Stap 5: De Software laden


Pleo is een autonome robot en beweegt op haar eigen. Voordat u uw eigen opdrachten aan Pleo uitgeven kan moet u om het stil te maken. Noem het PleoStun of PleoHypnosis, maar u kunt het hier downloaden: http://robostuff.com/wp-content/robostuff-com/stun.zip
Pak de inhoud van dit archief naar de lege SD-kaart (oude SD kaart kleiner dan 2Gb speeciaal is) en plaatst u deze in de groef van de Pleo de. Niet inschakelen Pleo nog.

U moet ook de Arduino software laden. Daarvoor moet u download programma genaamd Arduino vanaf hier: http://arduino.cc/en/Main/Software. Installeren en uitvoeren van het programma van de Arduino en draaien. In het hulpprogramma -> bestuur en Tools -> Port menu's Selecteer het soort Arduino en seriële poort die is aangesloten. Nu copypaste dit code in de Arduino schets venster en het schrijven naar de Arduino geheugen (bestand -> uploaden naar i/o-Board).

#include
#include

#undef int
#include

#define BAUD_RATE 9600 / / 19200 voor het programmeren, 115200 voor het werken met de Pleo, 9600 voor transmissie via xbee

#define LED_PIN 13 / / de pin de LED is aangesloten op
#define GROUND_PIN PC2
#define POWER_PIN PC3
#define POWER_ON_LED_PIN 13
#define RECEIVE_LED_PIN 12

#define DELTA 20 / / de joystick positie tolerantie

#define actie "gebrul van de spelen van de beweging" / / playes op Z anc C knoppen ingedrukt
#define J_TOP_LEFT "beweging spelen com_walk_fl_v1"
#define J_TOP "beweging spelen com_walk_fs_v1"
#define J_TOP_RIGHT "beweging spelen com_walk_fr_v1"
#define J_LEFT "beweging spelen hun_sniff_l" / /???
#define J_RIGHT "beweging spelen hun_sniff_r" / /???
#define J_BOTTOM_LEFT "beweging spelen com_walk_bl_v1"
#define J_BOTTOM "beweging spelen hun_exit" / /???
#define J_BOTTOM_RIGHT "beweging spelen com_walk_br_v1"

#define CMD_DISABLE_LOG "logboek uitschakelen alle"

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

uint8_t buf [6]; Global buffer voor het opslaan van gegevens van de nunchuck, bad, bad...

Setup alles
VOID Setup
{
pinMode (POWER_ON_LED_PIN, uitvoer);
pinMode (RECEIVE_LED_PIN, uitvoer);
digitalWrite (POWER_ON_LED_PIN, hoge);
vertraging (100); wachten op dingen te stabiliseren
Serial.begin (BAUD_RATE); uitgang voor seriële configureren
wait_for_pleo(); Pleo voor schoen opwaarts wachten
Wire.begin(); Join i2c bus met adres 0x52
power_on (PC3, PC2); PowerOn nunchuck
init_nunchuck(); Stuur de handdruk initilization
}

wacht op pleo te starten. Het is belangrijk dat XBee coördinator verbonden met arduino eerste is ingeschakeld
vervolgens moet het XBee knooppunt verbonden met Pleo worden ingeschakeld.
static void wait_for_pleo()
{
digitalWrite (RECEIVE_LED_PIN, hoge);
int wachten = 1;
int count = 0;
int lezen = 0;
terwijl (wachten)
{
Als (Serial.available())
{
lezen = Serial.read();
Als (Lees == ' >')
{
wachten = 0;
}
}
anders
{
vertraging (500);
Serial.Print ("");
}
}
opdracht (CMD_DISABLE_LOG, 500); uitschakelen Pleo loggen anders seriële wordt weggegooid en alles stopt met werken in een minuut
digitalWrite (RECEIVE_LED_PIN, laag);
}

VOID delay_read (int slaap)
{
int lezen;
terwijl (Serial.available())
{
lezen = Serial.read();
}
vertraging (slaap);
}

Hiermee schakelt u macht voor de nunchuck
statische nietige power_on (byte pwr, byte gnd)
{
DDRC | = _BV(pwr) | _BV(GND); uitgangen maken
PORTC & = ~ _BV(gnd);
PORTC | = _BV(pwr);
delay(100); wachten op dingen te stabiliseren
}

initialiseren van de Wii nunchuck
VOID init_nunchuck()
{
Wire.beginTransmission (0x52); verzenden naar apparaat 0x52
Wire.send (0x40); stuurt geheugenadres
Wire.send (0x00); stuurt geheugenadres
Wire.endTransmission(); stoppen met het verzenden van
}

verzenden van nul tot nunchuck maakt het sturen van de huidige essentiële gegevens terug
VOID send_zero()
{
Wire.beginTransmission (0x52); verzenden naar apparaat 0x52
Wire.send (0x00); stuurt één byte
Wire.endTransmission(); stoppen met het verzenden van
}

void loop
{
digitalWrite (RECEIVE_LED_PIN, laag);
Serial.Print (""); Ik weet niet waarom zonder deze regel de lus gewoon niet werkt.
int cnt = 0; aantal gelezen bytes van invoer
Wire.requestFrom (0x52, 6); 6 bytes voor aanvragen vanaf nunchuck
terwijl (Wire.available())
{
BUF [cnt ++] = decoderen (Wire.receive()); Ontvangen bytes als integer
}
Als (cnt > = 5)
{
process_buffer(); doet het werk
}
send_zero(); stuurt het verzoek om de volgende bytes
digitalWrite (RECEIVE_LED_PIN, hoge);
}

posities hoofd volgens het standpunt van de joystick
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 ("gezamenlijke Verplaats 11");
Serial.Print (nh);
Serial.Print ("");
Serial.Print ("gezamenlijke Verplaats 12");
Serial.Print (nv);
Serial.Print ("");
delay_read (1000);
}

posities staart volgens het standpunt van de joystick
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 ("gezamenlijke Verplaats 9");
Serial.Print (nh);
Serial.Print ("");
Serial.Print ("gezamenlijke Verplaats 10");
Serial.Print (nv);
Serial.Print ("");
delay_read (1000);
}

VOID opdracht (char cmd [], int slaap)
{
Serial.Print (cmd);
Serial.Print ("");
delay_read (slaap);
}

parseert retourneren uit nunchuck (6 bytes)
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;

Als (controleren (jx, jy, 53, 205))
{
opdracht (J_TOP_LEFT, 2000);
}
anders als (controleren (jx, jy, 123, 226))
{
opdracht (J_TOP, 2000);
}
anders als (controleren (jx, jy, 202, 202))
{
opdracht (J_TOP_RIGHT, 2000);
}
anders als (controleren (jx, jy, 25, 127))
{
opdracht (J_LEFT, 2000);
}
anders als (controleren (jx, jy, 128, 132))
{
Als ((bz == 1) & & (bc == 1))
{
position_head (ax, ay);
}
anders als ((bz == 0) & & (bc == 1))
{
position_tail (ax, ay);
}
anders als ((bz == 0) & & (bc == 0))
{
opdracht (actie, 4000);
}
}
anders als (controleren (jx, jy, 226, 130))
{
opdracht (J_RIGHT, 2000);
}
anders als (controleren (jx, jy, 54, 59))
{
opdracht (J_BOTTOM_LEFT, 2000);
}
anders als (controleren (jx, jy, 126, 30))
{
opdracht (J_BOTTOM, 2000);
}
anders als (controleren (jx, jy, 200, 57))
{
opdracht (J_BOTTOM_RIGHT, 2000);
}
anders
{
print_data (jx, jy, ax, ay, az, bz, v.Chr.); voor debug doeleinden alleen laat het hier
}
}

controleert of de joystick positie in de bepaalde positie met DELTA tolerantie
controle van int (int sx, int sy, int tx, ty int) {}
retourneren (abs (sx - tx)}

debug output van de nunchuck gegevens
VOID print_data (int jx, int jy, int ax, int ay, int az, int bz, int v.Chr.)
{
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 ("");
}

decodeert nunchuck gegevens, beroemde "formule", vind ik niet waarom het werkt
char decoderen (char x)
{
retourneren (x ^ 0x17) + 0x17;
}

Opmerking stelletje vertragingen in het programma. Pleo feedback niet geven dat de opdracht is voltooid. Ook zodra de opdracht wordt gegeven kan niet u het afbreken. En, zoals ik eerder al noemde, Pleo de servo's zijn echt traag om oververhitting. Dit alles betekent dat er een vertraging tussen de nunchuck verplaatsen en de Pleo verplaatsen.

Deze code werkt met andere robots door het herschrijven van de methoden van de position_head en position_tail te vertalen naar de opdrachten die specifiek zijn aan uw robot kunt u mod.

Dat is alles, mensen, heb je uw eigen afstandsbediening Pleo. Geniet van!

Gerelateerde Artikelen

ESP8266 en Visuino: WiFi-afstandsbediening Smart auto Robot met Wii Nunchuck

ESP8266 en Visuino: WiFi-afstandsbediening Smart auto Robot met Wii Nunchuck

Dat Smart auto ingesteld wanneer gecombineerd met L298N Motor Driver Modules, bieden een van de gemakkelijkste manieren om robot auto's maken. Ik maakte al een Instructable op hoe u slimme auto met Arduino en Joystick kunt controleren. Het is echter
Bureaublad Frisbee Launcher met Wii Nunchuck

Bureaublad Frisbee Launcher met Wii Nunchuck

Hier is hoe te bouwen mijn eerste iteratie van een draagraket die Discraft mini Star Ultimate schijven gooit. Je zou kunnen noemen dit de snelle en vuile versie. Het is echt basic. Alles wat het doet is te schieten. Maar het kan gemakkelijk worden ge
Project Robot Bug - met wii nunchuck

Project Robot Bug - met wii nunchuck

Project Robot BugWat de robot moet hebben:Bewegend object, led lichtHet materiaal van de robot moet bestaan uit 3 verschillende soorten materiaal3D printers zijn vereist in het proces van het maken van dit project.Stap 1: Project delen & assemblage s
HackerBoxes 0002: Intensivering van ARM32, MCU Video, Wii Nunchuck

HackerBoxes 0002: Intensivering van ARM32, MCU Video, Wii Nunchuck

Dit Instructable deelt de basisbeginselen van het werken met HackerBoxes #0002. HackerBoxes is de maandelijkse abonnement vak dienst voor electronica hobbyisten, makers en hackers. Als u wil graag een doos als dit recht naar uw mailbox elke maand, ku
Controle van uw Robot met behulp van een Wii Nunchuck (en een Arduino)

Controle van uw Robot met behulp van een Wii Nunchuck (en een Arduino)

na het dragen van mezelf spelen van Wii Boksen, ik kreeg aan het denken zou het niet geweldig als ik zou kunnen dit gebruiken om te controleren mijn robot, (op zoek naar mijn linkerhand).Op zoek rond het internet vond ik een schare van mensen die soo
Arduino Wii nunchuck en Wii motion plus met bijgewerkt code voor IDE 1.0.2 en LEDs

Arduino Wii nunchuck en Wii motion plus met bijgewerkt code voor IDE 1.0.2 en LEDs

dus, mij watertje trying voor kappen mijn Wii nunchuck omdat ik wil besturen van motoren en verlichting met de Wii nunchuck.Het eerste probleem dat ik vond was hoe om verbinding te maken met het besturingselement zonder een adapter, ik was van plan o
Animatronic ogen en Wii Nunchuck deel 2 - Geef het een stem

Animatronic ogen en Wii Nunchuck deel 2 - Geef het een stem

Nadat ik de animatronic ogen in deel 1 bouwde, wilde ik om te voltooien van het gezicht met een stem en eventueel verplaatsen wenkbrauwen. Als je kijkt terug op mijn deel 1, ziet u dat voor de base ik een model uit Thingiverse gebruikte. Als u eenmaa
Wii Nunchuck Adapter

Wii Nunchuck Adapter

deze tutorial is voor al die mensen die hebben een arduino en wilt gebruiken er Wii nunchuck als een input device, maar niet echt het gevoel dat knippen het snoer open en nunchuck voor eeuwig verpest!!!ook bent u bij ons aan het juiste adres!Stap 1:
Draadloze Wii Nunchuck gecontroleerd Arduino

Draadloze Wii Nunchuck gecontroleerd Arduino

Gebruik een volledig ongewijzigde draadloze Wii Nunchuck als een controlesysteem voor elke Arduino gebaseerd project. Geen toegevoegde radio zender/ontvanger paren enz.Dit instructable aanvaardt enige ervaring met de Arduino microcontroller.De radio-
Wii Nunchuck als General-Purpose controller via Arduino board

Wii Nunchuck als General-Purpose controller via Arduino board

Achtergrond:Ik maakte een zelfbalancerende elektrische skateboard die is gestuurd met behulp van een Wii Nunchuck door hetzij met behulp van de joystick van de duim op de top of door het kantelen van het links of rechts, afhankelijk van welke van de
USB-muis Made Out Of A Wii Nunchuck

USB-muis Made Out Of A Wii Nunchuck

dit instructable zal beschrijven hoe u een controlemechanisme van Nintendo Wii Nunchuck converteert naar een USB 2-knops muis met behulp van een Teensy USB.  De Teensy USB is een zeer gebruiksvriendelijk ontwikkeling boord die kan worden geprogrammee
Wii Nunchuck Arduino waterpas

Wii Nunchuck Arduino waterpas

want ik een artikel op todbot bloggelezen heb, ik kocht een paar Wii Nunchucks van ebay. Ik weet niet meer hoeveel ik betaald heb voor hen, maar het was veel goedkoper dan het kopen van de versnellingsmeter breakout boards. Met de nunchuck gegevens l
Animatronic ogen en Wii Nunchuck

Animatronic ogen en Wii Nunchuck

Ik vond deze 3D-bestand op Thingiverse door Micropuller. Ik besefte al snel dat het bestand een oversized oog-eenheid creëert. Maar ik wilde nog verkennen een animatronic gezicht waarmee ik kon maken met een Arduino.Hoe meer ik erover nadacht, hoe me