Kontrollera en Roomba robot med Arduino och Android (6 / 8 steg)

Steg 6: Flytta Roomba runt




För rörlighet har Roomba 2 oberoende DC-motorer som kan vara programmerat att köra upp till 500mm/s. Det finns flera kommandon som kan användas för att köra roboten. De viktigaste är:

  1. Kod [137]: Köra == > måste skicka +/-hastighet i mm/s och +/-Radius i mm
  2. Kod [145]: Köra direkt == > måste sända vänster/höger fart i mm/s (+ för framåt och - för bakåt)
  3. Kod [146]: Kör PWM == > måste skicka +/-PWM data för vänster och höger hjul

Nedan koden för dessa 3 alternativ:

Ogiltig enhet (int hastighet, int radie)
{
klämman (hastighet,-500, 500); def högsta och lägsta hastighet i mm/s
klämman (radie,-2000, 2000). def max och min radius i mm

Roomba.write(137);
Roomba.write (velocity >> 8);
Roomba.write(Velocity);
Roomba.write (radie >> 8);
Roomba.write(RADIUS);
}

//---------------------------------------------------------------

void driveWheels (int rätt, int vänster)
{
klämma (rätt,-500, 500).
klämma (vänster,-500, 500);

Roomba.write(145);
Roomba.write (rätt >> 8);
Roomba.write(Right);
Roomba.write (vänster >> 8);
Roomba.write(Left);
}

//---------------------------------------------------------------
void driveWheelsPWM (int rightPWM, int leftPWM)
{
klämman (rightPWM,-255, 255);
klämman (leftPWM,-255, 255);

Roomba.write(146);
Roomba.write (rightPWM >> 8);
Roomba.write(rightPWM);
Roomba.write (leftPWM >> 8);
Roomba.write(leftPWM);
}

Observera att funktionen "klämma" definierar de högsta och lägsta värden som är högt till insatsen. Funktionen definieras i filen rombaDefines.h:

#define klämman (värde, min, max) (värdet < min? min: värde > max? max: värde)

Med hjälp av ovanstående kod, kan enklare funktioner skapas för att driva Roomba runt:

/---------------------------------------------------------------
void turnCW (osignerad kort hastighet, osignerade kort grader)
{
enhet (hastighet, -1);
klämma (hastighet, 0, 500);
Delay(6600);
fördröja ((1580 + 2.25*velocity)/hastighet * grader);
fördröjning ((-0.03159720835 * hastighet + 21.215270835) * grader);
Drive(0,0);
}

//---------------------------------------------------------------
void turnCCW (osignerad kort hastighet, osignerade kort grader)
{
enhet (hastighet, 1);
klämma (hastighet, 0, 500);
Delay(6600);
Delay(2708.3333/Velocity*Degrees);
fördröja ((1580 + 2.25*velocity)/hastighet * grader);
fördröjning ((-0.03159720835 * hastighet + 21.215270835) * grader);
Drive(0,0);
}

//---------------------------------------------------------------
void driveStop(void)
{
Drive(0,0);
}

//---------------------------------------------------------------
void driveLeft(int left)
{
driveWheels (vänster, 0);
}

//---------------------------------------------------------------
void driveRight(int right)
{
driveWheels (0, rätt);
}

Observera att argumentet "delay" för att stänga i vinkel, måste beräknas för en given hastighet

Nedan några exempel som kan användas för att testa motorerna:

turnCW (40, 180); snurra medurs 180 grader och stoppa

driveWheels (20, -20); Spin

driveLeft(20); svänger vänster

För att testa motorerna, det är bra att lägga till en extern tryckknapp (i mitt fall ansluten till Arduino stift 12), så du kan ladda ner koden till Arduino, börjar Roomba, men med stopp utförandet tills knappen trycks. Vanligtvis, för motorer testning kan du göra det på set-up delen av koden.

Som ett exempel, se enkla Arduino koden nedan:

#include "roombaDefines.h"
#include < SoftwareSerial.h >

Roomba Create2 anslutning
int rxPin = 10;
int txPin = 11;
SoftwareSerial Roomba(rxPin,txPin);

//---------------------------------------------
void setup()
{
Roomba.BEGIN(19200);

pinMode (ddPin, produktionen);
pinMode (buttonPin, INPUT_PULLUP); ansluten till Arduino stift 12 och används för att "starta"

Delay(2000);

wakeUp (); Wake-up Roomba
startSafe(); Starta Roomba i felsäkert läge

medan ({digitalRead(buttonPin))} / / wait knapp vara intryckt till kontinuerlig köra kod

turnCW (40, 180); o-kommentera om du vill testa Roomba spin viss 180 grader och stoppa
}

//---------------------------------------------
void loop()
{

}

Se Steg
Relaterade Ämnen

Gest kontroll car(robot) med Arduino och Android(bluetooth)

Hej folk,Här är ett intressant projekt för alla er kreativa hjärnor ute. Vi ska bygga en android-telefon kontrollerade RC bil.Inget kunde vara mer fascinerande än avlägsen kontrollerade bilar. Denna använder en Bluetooth för kommunikation och acceler...

Arduino Uno och Visuino: kontrollera Smart Car Robot med Joystick och L298N motorn förarens

Smart Car anger i kombination med L298N Motor drivrutinsmoduler, erbjuder en av de enklaste sätten att göra roboten bilar. L298N Motor Driver modul är lätt att kontrollera med Arduino, och med hjälp av Visuino kan du programmera din bil i sekunder.I...

Styra din Tv, Dvd och ljud system med Arduino och Android

Hej alla, detta är min andra instructable och min första på engelska, så, ledsen för misstag.Jag vill dela detta projekt det handlar om hur du kan styra din Tv, DVD och ljudanläggningen med Arduino och en app för Android med app inventor.Om du gillar...

Kontrollera en RGB ledde med Arduino och bearbetning

detta instructable (min första inte mindre) visar hur man styr en RGB ledde med bearbetning och arduino.Den viktiga funktionen att vara färg markeras genom att klicka på en bild, RGB-värdet för den pixel du klickar på bearbetas och skickas till den a...

ITEAD intelligenta Switch fungerar med Arduino och Android

ITEAD nu erbjuda den intelligenta switchs som stöder touch och fjärrkontroll, och det kommer att vara mycket lätt att hacka och få det att fungera med din Arduino och Android telefon. Här visar vi dig en liten demo och mer positivt överraskad att bli...

Hur man gör en mobiltelefon och dator kontrolleras 3D tryckta Robot med Arduino - IoBot.

Om du letar efter ett sätt att kontrollera en Arduino baserade enheter, kommer att denna anvisning Visa dig hur man gör det genom att bygga enkla robot.IoBot kan styras med mobil och dator ansökan via LAN eller USB-kabel. Programmet körs på Android,...

Hacka en RC bil med Arduino och Android

(Om du gillar detta Instructable, glöm inte att rösta på det (ovan: högra hörnet flaggan). det konkurrerar på ROBOTICS och sensorer tävlingar. Tack så mycket! ;-)Varje gång jag går in i en leksaksaffär och se fjärrkontroll bilar i fönstret, jag längt...

Bygga din Internet kontrollerad Video-Streaming Robot med Arduino och Raspberry Pi

< the Instructable och koden är redo. Njut! Lämna en kommentar med du feedback! >Jag är (aka LiquidCrystalDisplay / Itay), en 14 år gammal student från Israel lärande i Max Shein Junior High School för avancerad vetenskap och matematik. Jag gör dett...

En nätverksansluten LED Strip Controller med Arduino och Android

jag är fascinerande från belysningen verkställer sedan barn och en gång hittade på Ebay en billigt multicolor LED strip har jag börjat titta hur kontroll det, letar efter en Ethernet aktiverat kontroll som gör remsorna en uppsättning nätverk objekt,...

2WD röst kontrollerat Robot med Arduino och BitVoicer Server

I detta Instructable ska jag visa hur man bygger en 2WD röststyrd robot. Även om jag kontrollera endast DC motorer om du vill flytta roboten, samma tillvägagångssätt kan användas till röststyrning stegmotorer och servomotorer, så om du planerar att b...

Avlägsen kontrollerade robot med Arduino och T.V. remote

Denna fjärrkontroll bil kan flyttas runt med praktiskt taget alla slags remote såsom TV, AC etc.Det använder sig av det faktum att fjärrkontrollen avger IR(infrared).Den här egenskapen är gjord använda av med hjälp av en IR-mottagare, vilket är en my...

Realtid ansikte spårning Robot med Arduino och Matlab

Realtid ansiktsspårning avser uppgiften att lokalisera ansikten i en videoström och spårning hittas eller igenkända ansikten. Numera finns det många verkliga tillämpningar av ansiktsavkänning och andra tekniker för bildbehandling. Det finns många alg...

Med en NES-kontrollant för emulatorer med Arduino och bearbetning

Jag har hittat flera sätt att ansluta en NES controller till datorn för användning som en emulator gamepad men verkade ingen vara enkel och förenlig med vad jag hade på hand.Den här bara arbeten med Arduino Leonardo, Micro och vederbörlig: https://gi...

Nybörjarguide till att bygga Arduino robotar med Bluetooth och Android

i den här guiden vi gå mot att skapa en Arduino robot som kan styras via bluetooth med en Android-telefon/tablett. Detta är en Nybörjarguide som kommer att kort gå över ledningar och programmering din robot.Steg 1: Bygga lista... Följande är en lista...

Kontrollera din DSLR kamera med iPhone och Arduino BLE modul

Här är 10 minuters instructable för att kontrollera DSLR kamera med Arduino och iPhone.Steg 1: ReservdelslistaEn Arduino UNO eller Mega eller Nano eller etc.Jag använde en HM-10 Bluetooth låg energi modul men jag tror några andra Ble moduler kommer a...

Kontrollera en LED med arduino och Wifly sköld

För att visa hur du kan styra enheter via wifi med hjälp av arduino wifly shield, kommer jag slå på och av en LED genom att skicka en http-begäran från webbläsaren till wifly sköld.Krav:1. Arduino uno2. Wifly sköld3. ledde4. 220 ohm motstånd5. ett pa...

Grundläggande raden efter Robot med Arduino

09/07/2015Det har varit några år eftersom vi Ursprungligen postat denna grundläggande linje följande Robot med Arduino handledning, och det verkar så många människor tyckte att det bra att vi ska skicka en uppdatering som löper nuvarande Arduino bibl...

Röst aktiverat lampor / Led (ARDUINO och ANDROID)

Styra You'r hem lampor med en arduino och you'r android-telefon!Detta är min allra första instructable, jag ville styra mitt hem med en arduino och android telefonen.Det fanns många andra alternativ tillgängliga för mig att göra så. men det billiga a...

Mugg musik: Förvandla vatten till ett Instrument med Arduino och ChucK

Vad händer om du slå alla ledande yta till ett instrument? Gillar, säga... en mugg vatten? Bäst av allt, är det billigt; du behöver bara $1 värt extra elektriska komponenter (inte inklusive Arduino).För detta projekt, min vän skörd och jag kombinerad...