Boom och gripdon bot (14 / 15 steg)

Steg 14: Kodlista för robot-drivrutinen

/*
Bluetooth Boom-gripdon bot.

Mål i livet...
Följer dina kommandon skickas magiskt genom luften! Eller från USB :)

Skriven av Scott Beasley - 2015
Gratis att använda eller ändra. Njuta av.
*/

#include

Olika tidsfördröjningar används för körning och servo
#define TURNDELAY 475
#define TURNDELAY45 235

Pololu servo controller-befäl
#define SETSPEED 0x01
#define SETPOS 0x04

/*
Globals område.
*/

Skapa de motor, servo objekt att samverka med
SoftwareSerial Serial_servo (10, 11);
SoftwareSerial Serial_motors (10, 12);

Ogiltiga inställningar)
{
Ändra överföringshastigheter här om annorlunda än under
Serial.BEGIN (9600); Bluethooth anslutning
Serial_servo.BEGIN (9600);
Serial_motors.BEGIN (19200);

stoppa ();
set_servo_speed (0, 10); Servo rörelse hastighet
set_servo_speed (1, 10); att få dem att flytta lite mjukare
home_boom ();
home_gripper ();

fördröjning (500).
}

Ogiltig loop)
{
byte kommando = 0, val = 0;
Följande behöver bo intakt under livet av den
session så de görs "statisk". Detta håller oss från
att ha dem som globals
statiska byte dist = 1; Börja med korta drag
statiska byte hastighet = 1; långsam hastighet
statiska byte speed_offset = 40;
statiska byte turn_style = 1; och med vänder hårt
statiska byte boom_val = 60.
statiska byte gripper_val = 60.

om (Serial.available () > 0) {
Läs den inkommande kommandobyte
kommandot = Serial.read ();
}

Växla (kommandot) {
fallet "w":
go_forward (speed_offset);
Serial.println ("kommer fram");

om (dist == 1) {
fördröjning (750);
stoppa ();
} else om (dist == 2) {
fördröjning (1250);
stoppa ();
}

bryta;

fallet "z":
go_backward (speed_offset);
Serial.println ("går baklänges");

om (dist == 1) {
fördröjning (750);
stoppa ();
} else om (dist == 2) {
fördröjning (1250);
stoppa ();
}

bryta;

fallet "a":
go_left (speed_offset, turn_style);
fördröjning (TURNDELAY);
stoppa ();
Serial.println ("vrida vänster");
bryta;

fallet ":
go_right (speed_offset, turn_style);
fördröjning (TURNDELAY);
stoppa ();
Serial.println ("vrida rätt");
bryta;

fallet "q":
go_left (speed_offset, turn_style);
fördröjning (TURNDELAY45);
stoppa ();
Serial.println ("vrida vänster");
bryta;

fallet "e":
go_right (speed_offset, turn_style);
fördröjning (TURNDELAY45);
stoppa ();
Serial.println ("vrida rätt");
bryta;

fallet "h":
stoppa ();
Serial.println ("stoppa");
bryta;

fallet ">":
Gripdon X flytta skickar servo sätta värde
Val = Serial.read ();
gripper_val = val;

Vi begränsar värdet till verkliga movemovent gränserna för installationen
set_gripper (val);
Serial.println ("GripperX");
bryta;

fallet ' ^':
Gripdon Y flytta skickar servo sätta värde
Val = Serial.read ();
boom_val = val;

Vi begränsar värdet till verkliga movemovent gränserna för installationen
set_boom (val);
Serial.println ("GripperY");
bryta;

fallet "c":
gripper_val = 60.
boom_val = 60.
home_boom ();
home_gripper ();

Serial.println ("GripperHome");
bryta;

fallet "v":
Ange den spped bot kommer att flytta; 1 = långsammast, 3 = snabbast
hastighet = Serial.read ();

om (hastighet == 1) {
speed_offset = 40; Långsam
} else om (hastighet == 2) {
speed_offset = 20; Med
} else om (hastighet == 3) {
speed_offset = 0; Snabb!
}

Serial.println ("inställda hastigheten");
bryta;

fall skulle ":
Ange hur länge bot kommer att flytta; 1 = kort, 2 medium,
3 = kontinuerlig
dist = Serial.read ();
Serial.println ("flytta avstånd uppsättning");
bryta;

't i mål ":
Ange hur bot gör svängar, ett hjul (mjuka) eller två (svårt)
turn_style = Serial.read ();

Serial.println ("tur stil");
bryta;

fallet "+": / / Speed set från telefon
Speed ++;
om (hastighet > = 4)
hastighet = 1;

om (hastighet == 1) {
speed_offset = 40; Långsam
} else om (hastighet == 2) {
speed_offset = 20; Med
} else om (hastighet == 3) {
speed_offset = 0; Snabb!
}

bryta;

fallet '-': / / Dist flyttade från telefon
Dist ++;

om (dist > = 4)
dist = 1;
Serial.println ("flytta avstånd uppsättning");
bryta;

fallet ",": / / öppen gripare från telefon
gripper_val += 10.

om (gripper_val > = 179)
gripper_val = 179;

set_gripper (gripper_val);

Serial.println ("Gripper uppsättning");
bryta;

fallet '.': / / Stäng gripare från telefon
gripper_val-= 10.

om (gripper_val < = 0)
gripper_val = 0;

set_gripper (gripper_val);

Serial.println ("Gripper uppsättning");
bryta;

ärende '0': / / Sänk bommen från telefon
boom_val += 10.

om (boom_val > = 179)
boom_val = 179;

set_boom (boom_val);

Serial.println ("Boom uppsättning");
bryta;

ärende '1': / / höja bommen från telefonen
boom_val-= 10.

om (boom_val < = 0)
boom_val = 0;

set_boom (boom_val);

Serial.println ("Boom uppsättning");
bryta;

fall 255: / / skickas efter alla gripdon kommandon
Serial.flush ();
bryta;
}

Serial.flush ();
Delay(125);
}

void go_forward (byte speed_offset)
{
Serial.println ("framöver...");
Serial_motors.write ((byte) 1 + speed_offset);
Serial_motors.write ((byte) 128 + speed_offset);
}

void go_backward (byte speed_offset)
{
Serial.println ("går bakåt...");
Serial_motors.write ((byte) 127 - speed_offset);
Serial_motors.write ((byte) 255 - speed_offset);
}

void go_left (byte speed_offset, byte turn_style)
{
Serial.println ("kommer vänster...");
om (turn_style == 1)
Serial_motors.write ((byte) 1 + speed_offset);
annat
Serial_motors.write ((byte) 64); Stänga av vänstra motorn (mjuk tur)

Serial_motors.write ((byte) 255 - speed_offset);
}

void go_right (byte speed_offset, byte turn_style)
{
Serial.println ("kommer rätt...");

Serial_motors.write ((byte) 127 - speed_offset);

om (turn_style == 1)
Serial_motors.write ((byte) 128 + speed_offset);
annat
Serial_motors.write ((byte) 192); Stäng av den rätt motorn (mjuk tur)
}

void stopp)
{
Serial.println ("stopp!");
Serial_motors.write ((byte) 0);
}

Ange en servon position
servo_id är antalet servo (0-7)
vinkel är den abs positionen från 500 till 5500
void move_servo (int servo_id, int vinkel)
{
unsigned char buff [6] = {0x80, 0x01, SETPOS, 0x00, 0x00, 0x00};

unsigned int härda;
unsigned char data_hi, data_low;

Temp = vinkel & 0x1f80;
data_hi = temp >> 7.
data_low = vinkel & 0x7f;

buff [3] = servo_id; servo nummer
buff [4] = data_hi; data1
buff [5] = data_low; data2

Serial_servo.write (buff, 6);
Serial_servo.flush ();
}

void set_servo_speed (int servo_id, int hastighet)
{
unsigned char buff [5] = {0x80, 0x01, SETSPEED, 0x00, 0x00};
om (hastighet > 127)
hastighet = 127;

buff [3] = lowByte (servo_id);
buff [4] = lowByte (hastighet);
Serial_servo.write (buff, 5);
Serial_servo.flush ();
}

void set_boom (byte vinkel)
{
move_servo (0, karta (vinklar, 0, 179, 2500, 4000));
}

void set_gripper (byte vinkel)
{
move_servo (1, karta (vinklar, 0, 179, 2500, 4000));
}

void home_boom)
{
move_servo (0, 3000);
}

void home_gripper)
{
move_servo (1, 3000);
}

Se Steg
Relaterade Ämnen

Mjuk robotar: Göra en konstgjord muskel Arm och gripdon

Med hjälp av konstgjord luft muskler, kan en mycket flexibel robotarm och gripare göras.Denna mjuka robot drivs av komprimerad luft och var och en av de 11 musklerna kan styras av en standard IR universell fjärrkontroll eller en infraröd lysdiod ansl...

Hur man gör en mobiltelefon / iPhone kamera Boom och stativ

projekt att bygga är kul, men det är ännu roligare när du kan dela dem med andra människor. Jag letade efter ett sätt att använda min iPhone kamera för att videofilma vissa av mina hantverk projekt men kunde inte hitta vad jag behövde, så jag bestämd...

BaW-Bot del 3: Lägga till syn och Touch till Bot

detta är den tredje delen av vår BaW-Bot (klockor och visselpipor Bot) bygga-5 separata instructables som undersöka olika Arduino-relaterade tekniker, kombinera för att skapa en Bot med alla klockor-och-visselpipor.Del 1: Bygga en Arduino på ett bräd...

Svärm Bots: Montering och kooperativa Transport

Hej alla,Detta instructable handlar om "Swarm Bots: montering och kooperativa Transport" i vilken vi kan bygga våra egna master och slave robot, slav kommer att följa master robot och vi kommer att kontrollera master robot med vår smartphone. De...

Hur man rita bilder och skapa typsnitt med hjälp av exempelkoden Doodle Bot

om du läser detta före 31 juli, 2013 är det en tävling med priser kör. Se här för detaljer.Doodle Bot är en enkel robot plattform som är perfekt för hobby och eleverna lära sig grunderna i robot förflyttning. Roboten har 2 inriktade motorer för förfl...

En mjuk robotstyrda gripdon för MeArm

Mjuk robotics är en ung robotics som gör robotar av mjuka material. Även om många mjuka robotics projekt där ute är helt mjuk, har mjuk robotics sin största effekter i kombination med hård robotar. För att bevisa detta, jag tog en MeArm (http://www.m...

Remote control Gripper bot

Ett par månader tillbaka min son bad mig att göra honom en avlägsen kontrollerade bot. Han gav mig en lista över vad han ville och vi minskat ner en hanterbar lista det :) Detta är vad jag hamnade byggnaden för honom...Möt klämmor, en mobil remote gr...

Candy Dispenser Bot

Tetrix MAX robot som levererar godisSteg 1: ChassidelarSteg 2: Chassi sub församlingSteg 3: Monterade chassi Direct drive, Hej clearance chassi med omni hjul att tillåta exakt leverans av godisSteg 4: Boom och elektronik Steg 5: Inriktade arm monteri...

BaW-Bot del 1: Bygga en Arduino på ett bräde

Detta är den första delen av våra BaW-Bot (klockor och visselpipor Bot) bygga-5 separata instructables som undersöka olika Arduino-relaterade tekniker, kombinera för att skapa en Bot med alla klockor-och-visselpipor.Del 1: Bygga en Arduino på ett brä...

BaW-Bot del 2: Bygga motor-controller & kropp

detta är den andra delen av vår BaW-Bot (klockor och visselpipor Bot) bygga-5 separata instructables som undersöka olika Arduino-relaterade tekniker, kombinera för att skapa en Bot med alla klockor-och-visselpipor.Del 1: Bygga en Arduino på ett bräde...

Arduino och Plotly baserat seismograf

Detta är en enkel arduino baserad seismograf som skickar data som samlas in till ett python-skript som grafer data live och kan exportera det till plotly. Denna seismograf är ganska känslig, kan man upptäcka en person hoppa bredvid den. Seismographen...

Sonic Boom yo-yo trick (Anti-yo tävling)

en rolig en hand yo-yo trick för spelare som har gått förbi grundläggande kroken.Grundtanken bakom detta trick är att ta Hidemasa Hook (skapad av japanska 1A spelare och Duncan besättningsmedlem Hidemasa Semba) och vrid den åt sidan. Faktiskt, den ve...

Trådlöst styr en Robot med hjälp av Arduino och RF-moduler!

/*Redigera 05/05/2016Hej killar, jag har varit upptagen med college och kunde inte svara på commments. De flesta av y'all ville koden och scheman gjort lite bättre så jag har gjort scheman på Eagle 7.2.0 och laddat upp allt på Github.Här är länken: h...

Göra en ordentlig PCB exponering enhet ur en billig UV spik bota lampa

Vad gör PCB produktion och falska naglar har gemensamt? De båda använder UV ljuskällor av hög intensitet och som tur är det, dessa ljuskällor har exakt samma våglängd. Endast de för PCB produktion är oftast ganska dyrt och de för falska naglar är lit...

TeleLab - övervaka ditt lab med Telegram, Node.js och Websockets

Detta är en mycket enkel applicering av Intel Edison utifrån krav på ett övervakningssystem för lab. Med detta jag kan lämna laboratoriet samtidigt kontrollera emellanåt att temperaturen i en blandning är stabil eller hålla luft förorening av labbet...

Scratch 4 Arduino och Cybot kontroll (Rover grunder)

Jag har haft ett par Cybots som Tom robotar för ett antal år - varje så ofta de får dras ut och mixtrar med. Nu är detta år tur. Jag har beslutat att prova min hand på Arduino kontroll av motorerna som robotar.Det verkar finnas ett stort antal du tub...

Kontoret tillförsel tävling: Memo-Bot

The Memo-Bot är en liten, relativt enkla projekt. Det kan göras av vem som helst med en sax och en lim pinne. Jag skulle ha gjort en Instructable på trebuchet i bakgrunden, men som kräver varmt lim, tänger och hobby knivar och jag ville ha något som...

Snabb och enkel RC bil bränsletank reparation i 10 minuter.

Hej, i detta instructable jag ska visa dig hur man reparera din rc-bil bränsletank. Detta kommer att fungera på små sprickor i tanken. Jag kommer att reparerar tanken för min P190 rally car.the reparation bör vara stark och permanent och tar bara någ...

Hotmail värmaren, prepper bugg ut utanför rutnätet värme och varmvatten

jag byggde en Teardrop trailer i 2011, att hitta en billig värmekälla för av-the-grid camping som är säkert är en av de idéer som alltid sparkas på webbplatsen bästa (IMO) för Tear Drop släpvagnar (TD) http://www.tnttt.com/index.php. Det finns ett fö...