Bumbley - lilla servo roboten (9 / 12 steg)
Steg 9: Det är dags att ladda koden!
Med ledningarna kontrolleras och kontrollräknat, är det dags att läsa koden. Följ instruktionerna på webbplatsen Arduino på hur till installera Arduino IDE. Efter IDE är installerad, kopiera nedan program och tidigare den i Arduino IDE. Anslut din PC och Arduino upp med USB-kabeln. Nu väljer styrelse från Verktyg -> styrelsen menyn i IDE, Uno för detta projekt (välja styrelsen du har om olika från Uno) nu från Verktyg -> Port-menyn, Välj com-porten. När detta är gjort, klicka på knappen Ladda upp. Om allt gick bra, koden lästes in, om inte se här för Hjälp på IDE och därmed sammanhängande frågor.
/*
Bumbley Arduino hinder avoider.
Mål i livet...
Bumblels runt och försökte bo ur vägen :-)
Skriven av Scott Beasley - 2015
Gratis att använda eller ändra. Njuta av.
*/
*/
Använder Arduino Servo-biblioteket.
*/
#include < Servo.h >
Tur baserad på tydlig riktning eller till vänster om båda är blockerade
#define turn(dir) (dir > = 2)? go_left (): go_right)
Ändra dessa definierar om du använder olika pins
#define LEFT_IR 5 / / Digital stift 2.
#define RIGHT_IR 4 / / Digital stift 5
#define LEFT_SERVO 6 / / PIN-kod används för vänster servo
#define RIGHT_SERVO 7 / / PIN-kod används för rätt servo
Speed definierar
#define MAXFORWARDSPEED 120 / / Max hastighet vi vill flytta fram
#define MAXBACKWARDSPEED 60 / / Max reverse hastighet
#define stopp 90
Olika tidsfördröjningar används för körning och servo
#define TURNDELAY 450
#define BACKUPDELAY 300
/*
Globals område. Försök hålla dem till ett minimum :-)
*/
Skapa de servo objekt med användning som gränssnitt
Servo motor_left; Vänstra servo motor objekt skapas
Servo motor_right; Skapa rätt servo motor objekt
Ogiltiga inställningar)
{
O-kommentera om du vill eller behöver felsöka
Serial.BEGIN (9600); Ange Serial monitor på 9600 baud
Serial.println ("min Servo SHR bot är startande upp!");
motor_left.attach (LEFT_SERVO); Bifoga servo digital nålen
motor_left.write (STOP); Inställd den mellersta (neutral) pos servo
motor_right.attach (RIGHT_SERVO); Bifoga servo digital nålen
motor_right.write (STOP); Inställd den mellersta (neutral) pos servo
Ställa in lägen för närhet sensor stift
pinMode (LEFT_IR, indata);
pinMode (RIGHT_IR, indata);
Dröjsmål att ge användartid att göra justeringar. Ta bort efter gjort.
fördröjning (30000);
}
Ogiltig loop)
{
byte riktning;
Få en läsning från nuvarande sensor riktning
riktning = read_ir_sensors ();
Serial.Print ("IR-sensorer läsning:");
Serial.println (riktning);
Gå framåt medan ingenting är i sensorerna läsa område
om (riktning == 3) / / framåt, mars!
{
go_forward ();
}
annat / / det är något i sensorerna läsa område
{
stoppa (); Stanna!
go_backward (); Backa upp lite
fördröjning (BACKUPDELAY);
stoppa (); Stanna!
vända (riktning); Vända mot den tydligaste väg
fördröjning (TURNDELAY);
stoppa ();
}
}
Läs sensorn efter vi hitta något i vägen. Detta hjälper till att hitta en ny
sökväg
byte read_ir_sensors)
{
byte lt_sens = -1, rt_sens = -1, riktning;
lt_sens = digitalRead (LEFT_IR);
rt_sens = digitalRead (RIGHT_IR);
om (lt_sens & & rt_sens) / / vänster och höger blockeras både, sväng vänster
riktning = 0;
annars om (lt_sens) / / vänster är blockerad, sväng höger
riktning = 1;
annars om (rt_sens) / / höger är blockerad, sväng vänster
riktning = 2;
annars om (! lt_sens & &! rt_sens) / / allt klart på båda
riktning = 3;
tillbaka (riktning);
}
void go_forward)
{
Serial.println ("framöver...");
motor_left.write (MAXFORWARDSPEED);
motor_right.write (MAXBACKWARDSPEED);
}
void go_backward)
{
Serial.println ("går bakåt...");
motor_left.write (MAXBACKWARDSPEED);
motor_right.write (MAXFORWARDSPEED);
}
void go_left)
{
Serial.println ("kommer vänster...");
motor_left.write (MAXFORWARDSPEED);
motor_right.write (MAXFORWARDSPEED);
}
void go_right)
{
Serial.println ("kommer rätt...");
motor_left.write (MAXBACKWARDSPEED);
motor_right.write (MAXBACKWARDSPEED);
}
void stopp)
{
Serial.println ("stopp!");
motor_left.write (STOP);
motor_right.write (STOP);
}