Remote control Gripper bot (16 / 16 steg)
Steg 16: Kodlista för robot-drivrutinen
/*
Bluetooth Rover.
Mål i livet...
Följer dina kommandon skickas magiskt men luften! Eller från USB :)
Skriven av Scott Beasley - 2015
Gratis att använda eller ändra. Njuta av.
*/
/*
Använder L9110S-biblioteket. Det fungerar med L9110S h-bron.
Hämta från https://github.com/jscottb/L9110Driver eller klona zip från
https://github.com att ta bort den '-master "från arkiverade filens namn att lägga till
biblioteket
*/
#include < L9110Driver.h >
#include < Servo.h >
#define SERVO_Y 2 / / Pin gripdon Y servo
#define SERVO_CLAW 7 / / Pin gripdon Gripper servo
#define pinAIN1 5 / / definiera I1 gränssnitt
#define pinAIN2 6 / / definiera I2 gränssnitt
#define pinBIN1 3 / / definiera I3 gränssnitt
#define pinBIN2 11 / / definiera I4 gränssnitt
Speed definierar
#define MAXFORWARDSPEED 225 / / Max hastighet vi vill flytta fram
#define MAXBACKWARDSPEED 225 / / Max reverse hastighet
#define TOPSPEED 255 / / används för att omvandla bättre på mattan och grövre ytor.
Olika tidsfördröjningar används för körning och servo
#define TURNDELAY 475
#define TURNDELAY45 235
#define BACKUPDELAY 400
#define SERVOMOVEDELAY 200
#define SERVOSEARCHDELAY 85
/*
Globals område.
*/
Skapa de motor, servo objekt att samverka med
L9110_Motor motor_left (pinAIN1, pinAIN2); Vänster motor objekt skapas
L9110_Motor motor_right (pinBIN1, pinBIN2); Skapa rätt motor objekt
Servo grip_y_servo; Skapa ett servo objekt för gripdon Y-axeln
Servo grip_servo; Skapa ett servo objekt för gripdon klo
Ogiltiga inställningar)
{
Ändra baudfrekvens här om olika sedan 57600
Serial.BEGIN (57600);
grip_y_servo.attach (SERVO_Y); Bifoga servo SERVO_LR
grip_y_servo.write (90).
grip_servo.attach (SERVO_CLAW); Bifoga servo SERVO_LR
grip_servo.write (90).
fördröjning (500).
}
Ogiltig loop)
{
byte kommando = 0, val = 0;
om (Serial.available () > 0) {
Läs den inkommande kommandobyte
kommandot = Serial.read ();
}
Switch (kommando)
{
fallet "w":
go_forward ();
Serial.println ("kommer fram");
bryta;
fallet "z":
go_backward ();
Serial.println ("går baklänges");
bryta;
fallet "a":
go_left ();
fördröjning (TURNDELAY);
stoppa ();
Serial.println ("vrida vänster");
bryta;
fallet ":
go_right ();
fördröjning (TURNDELAY);
stoppa ();
Serial.println ("vrida rätt");
bryta;
fallet "q":
go_left ();
fördröjning (TURNDELAY45);
stoppa ();
Serial.println ("vrida vänster");
bryta;
fallet "e":
go_right ();
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 ();
Vi begränsar värdet till verklig rörelse gränserna för installationen
grip_servo.write (begränsa (val, 64, 179));
Serial.println ("GripperX");
bryta;
fallet ' ^':
Gripdon Y flytta skickar servo sätta värde
Val = Serial.read ();
Vi begränsar värdet till verklig rörelse gränserna för installationen
grip_y_servo.write (begränsa (val, 53, 179));
Serial.println ("GripperY");
bryta;
fallet "c":
Vi begränsar värdet till verklig rörelse gränserna för installationen
grip_y_servo.write (90).
grip_servo.write (90).
Serial.println ("GripperHome");
bryta;
fall 255: / / skickas efter alla gripdon kommandon
Serial.flush ();
bryta;
}
Serial.flush ();
Delay(125);
}
void go_forward)
{
Serial.println ("framöver...");
Ramp motorer upp till hastigheten.
Hjälp med spinning ut på vissa ytor och ware och tare på GM: s
ramp_it (MAXFORWARDSPEED, framåt, framåt);
Set för den inställda hastigheten alla bara incase rampen förra moms var inte alla
det.
motor_left.setSpeed (MAXFORWARDSPEED);
motor_right.setSpeed (MAXFORWARDSPEED);
motor_left.Run (FORWARD| UTGÅVA);
motor_right.Run (FORWARD| UTGÅVA);
}
void go_backward)
{
Serial.println ("går bakåt...");
Ramp motorer upp till hastigheten.
Hjälp med spinning ut på vissa ytor och ware och tare på GM: s
ramp_it (MAXBACKWARDSPEED, bakåt, bakåt);
Set för den inställda hastigheten alla bara incase rampen förra moms var inte alla
det.
motor_left.setSpeed (MAXBACKWARDSPEED);
motor_right.setSpeed (MAXBACKWARDSPEED);
motor_left.Run (BACKWARD| UTGÅVA);
motor_right.Run (BACKWARD| UTGÅVA);
}
void go_left)
{
Serial.println ("kommer vänster...");
Ramp motorer upp till hastigheten.
Hjälp med spinning ut på vissa ytor och ware och tare på GM: s
ramp_it (TOPSPEED, bakåt, framåt);
Set för den inställda hastigheten alla bara incase rampen förra moms var inte alla
det.
motor_left.setSpeed (TOPSPEED);
motor_right.setSpeed (TOPSPEED);
motor_left.Run (BACKWARD| UTGÅVA);
motor_right.Run (FORWARD| UTGÅVA);
}
void go_right)
{
Serial.println ("kommer rätt...");
Ramp motorer upp till hastigheten.
Hjälp med spinning ut på vissa ytor och ware och tare på GM: s
ramp_it (TOPSPEED, framåt, bakåt);
Set för den inställda hastigheten alla bara incase rampen förra moms var inte alla
det.
motor_left.setSpeed (TOPSPEED);
motor_right.setSpeed (TOPSPEED);
motor_left.Run (FORWARD| UTGÅVA);
motor_right.Run (BACKWARD| UTGÅVA);
}
void stopp)
{
Serial.println ("stopp!");
ramp_it (0, bromsar, bromsar);
motor_left.setSpeed (0);
motor_right.setSpeed (0);
motor_left.Run (broms);
motor_right.Run (broms);
}
void ramp_it (uint8_t hastighet, uint8_t lf_dir, uint8_t rt_dir)
{
uint8_t ramp_val = 0, step_val = 0;
step_val = abs (hastighet / 4);
om (! hastighet)
step_val = - step_val;
för (uint8_t jag = 0; jag < 4; i ++) {
ramp_val += step_val;
motor_left.setSpeed (ramp_val);
motor_right.setSpeed (ramp_val);
motor_left.Run (lf_dir| UTGÅVA);
motor_right.Run (rt_dir| UTGÅVA);
fördröjning (25).
}
}