ZWERVENDE ROBOT (6 / 7 stap)

Stap 6: De Code

Hier is de code die wordt gebruikt met de Robot (het is geschreven in C en moet worden ingezet op de Arduino):

#include "DualMC33926MotorShield.h"

#include "Servo.h"

#define IR_PIN A4

#define SERVO_PIN A2

#define PING_PIN 5

#define BUMPER_LEFT_PIN 11

#define BUMPER_RIGHT_PIN 6

#define LDR_PIN A5

#define LED_PIN 3

#define IR_DROP 450 //Distance beschouwd als een mogelijke daling

#define MIN_LIGHT 300 //Level van licht om te schakelen LED voor licht

DualMC33926MotorShield md;

Const int M1Speed = 300;

Const int M2Speed = 300;

int IRDist = 0;

int bpLeft = 0;

int bpRight = 0;

int LDRValue = 0;

Const int dangerThresh = 12; / / (in cm) gebruikt voor het obstakel te vermijden

int leftDistance, rightDistance; afstanden aan weerszijden

Servo panMotor; 'nek' servo

lange duur; tijd die het duurt om een PING-signaal ontvangt

VOID Setup

{

pinMode(BUMPER_LEFT_PIN,INPUT);

pinMode(BUMPER_RIGHT_PIN,INPUT);

pinMode (LED_PIN, uitvoer);

}

VOID moveStop()

{

MD.init();

md.setSpeeds(0,0);

}

VOID moveForward()

{

MD.init();

moveStop();

md.setSpeeds(M1Speed,M2Speed);

delay(250);

}

VOID turnLeft()

{

MD.init();

moveStop();

md.setSpeeds(M1Speed,-M2Speed);

delay(250);

}

VOID turnRight()

{

MD.init();

moveStop();

md.setSpeeds(-M1Speed,M2Speed);

delay(250);

}

VOID moveBack()

{

MD.init();

moveStop();

md.setSpeeds(-M1Speed,-M2Speed);

delay(250);

}

int checkDrop()

{

pinMode(IR_PIN,INPUT);

IRDist = analogRead(IR_PIN);

if(IRDist < IR_DROP)

{

return 1; Drop aanwezig (bepaald met IR-afstandssensor)

}

anders

{

keren 0;

}

}

VOID lightDarkness()

{

LDRValue = analogRead(LDR_PIN);

if(LDRValue < MIN_LIGHT)

{

digitalWrite(LED_PIN,HIGH); Het is donker, het licht inschakelen

}

anders

{

digitalWrite(LED_PIN,LOW);

}

}

int checkLeftBumper()

{

bpLeft = digitalRead(BUMPER_LEFT_PIN);

if(bpLeft == High)

{

HIT!

return 1;

}

anders

{

keren 0;

}

}

int checkRightBumper()

{

bpRight = digitalRead(BUMPER_RIGHT_PIN);

if(bpRight == High)

{

HIT!

return 1;

}

anders

{

keren 0;

}

}

ongeldig compareDistance() {}

Als (leftDistance > rightDistance) //if links minder wordt belemmerd

{

turnLeft();

}

anders als (rightDistance > leftDistance) //if recht minder wordt belemmerd

{

turnRight();

}

anders //if die ze even zijn geblokkeerd

{

moveBack();

}

}

lange ping()

{

Verzenden van de Ping pulse

pinMode (PING_PIN, uitvoer);

digitalWrite (PING_PIN, laag);

delayMicroseconds(2);

digitalWrite (PING_PIN, hoge);

delayMicroseconds(5);

digitalWrite (PING_PIN, laag);

Duur duurt te ontvangen krijgen echo voor Ping verzonden

pinMode (PING_PIN, INPUT);

duur = pulseIn (PING_PIN, hoge);

Duur converteren naar afstand (cm)

retourneren van duur / 29 / 2;

}

void loop

{

lightDarkness();

if(checkDrop() == 1)

{

moveBack();

compareDistance();

}

anders

if(checkLeftBumper() == 1)

{

moveBack();

compareDistance();

}

anders if(checkRightBumper() == 1)

{

moveBack();

compareDistance();

}

anders

{

moveStop();

int distanceFwd = ping();

Als (distanceFwd > dangerThresh) //if pad is duidelijk

{

moveForward();

}

anders //if pad is geblokkeerd

{

moveStop();

panMotor.attach(SERVO_PIN);

panMotor.write(20); ziet er goed uit

delay(250);

rightDistance = ping(); scannen naar rechts

panMotor.write(160); Kijk links

delay(600);

leftDistance = ping(); scannen naar links

panMotor.write(90); kijken naar het centrum

delay(300);

panMotor.detach();

compareDistance();

}

}

}

Gerelateerde Artikelen

Hack de Snap Circuits Rover

Hack de Snap Circuits Rover

In dit Instructable leert u hoe te kappen het Snap Circuits Rover door toevoeging van een PICAXE micro-controller en het bouwen van een programmeerbare Robot Snap Circuits. Eerst leert u het installeren van de PICAXE programmering Editor (de PICAXE i
Arduino Robot Tutorial

Arduino Robot Tutorial

Ik zocht de Instructable database naar een tutorial voor de officiële Arduino Robot, maar ik kon niet vinden een! Zo gek ik deze tutorial om anderen die hulp met hun nieuwe Arduino Robot een tikkeltje nodig beetje te helpen.Stap 1: Instellen van uw R
De Robolocity Roaming Instructables Robot Gnome - RoboGnome

De Robolocity Roaming Instructables Robot Gnome - RoboGnome

nooit zwerven alleen!Als je van reizen denkt, is wat voor de geest komt hoe het te doen goedkoop en hoe het te doen zonder de problemen in verband met verloren bagage, luchthaven beveiliging-inchecken, big-guy-in-front-reclining-his-seat, enz. Dus, w
Blinky papier Robot - 1e papier Circuit Project

Blinky papier Robot - 1e papier Circuit Project

Deze leuke kleine project is een snelle, goedkope Inleiding tot papier circuits. Het maakt ook gebruik van sturdy zelf permanent papier mensen van mijn vorige ' ible (Blinky is een gelukkige kleine robot met een vrolijke rood licht op zijn hoofd. Het
SADbot: de seizoensinvloeden getroffen tekening robot

SADbot: de seizoensinvloeden getroffen tekening robot

SADbot werd gemaakt in samenwerking met Ben Leduc-molens voor de galerie met venster op de Eyebeam Art + Technology Center. Het belangrijkste idee was om het gebruik van zonne-energie voor het aandrijven van een tekening machine die kan communiceren
Robot Heartbeat Valentine Card

Robot Heartbeat Valentine Card

Deze leuke Valentijn kaart maakt gebruik van Chibitronics circuit stickers een schattig robot tot leven te brengen.Voor deze kaart u hebt nodig:Letter formaat vel karton (8.5 "x 11")Grijze cardstockRoze en wit papier3 Chibitronics LED stickersCh
Verbeterde Spider Robot

Verbeterde Spider Robot

Ik ben altijd op zoek naar een nieuw project te doen op mijn robotica workshop voor kinderen. Terwijl spider robots intrigerend zijn, bijna alle van hen zijn ofwel te ingewikkeld waarbij 10 + servo's of manier over begroting voor mijn atelier. In de
Hoe maak je kleine robots met nRover bestuur

Hoe maak je kleine robots met nRover bestuur

De nRover, is een kleine bord gemaakt om te bouwen van kleine robots zoals UGV (onbemande ground voertuigen), lijn volgeling of Domotica, het kan worden gecontroleerd door wifi, Bluetooth en radio-controle. Het belangrijkste doel is de ontwikkeling v
Zachte Robots: Maak een kunstmatige spier Arm en grijper

Zachte Robots: Maak een kunstmatige spier Arm en grijper

Met behulp van artificiële lucht spieren, kunnen een zeer flexibele robotarm en grijper worden gemaakt.Deze zachte robot wordt aangedreven door perslucht en elke één van de 11 spieren kan worden gecontroleerd door een standaard universele infrarood a
Modulaire Robotic Hand & Arm (met uitgebreide Range of Motion) (3D afgedrukt)

Modulaire Robotic Hand & Arm (met uitgebreide Range of Motion) (3D afgedrukt)

Hallo iedereen! Dit is mijn prototype hand en arm prothese, die ik heb zijn ontwerpen voor verscheidene maanden nu. Het is nog steeds een beetje van een work in progress, en aangezien ik afwerken van met college klassen voor het semester ik heb nog n
Dragon kostuum voor industriële Robot

Dragon kostuum voor industriële Robot

Dit leerprogramma zal u tonen hoe een draak kostuum voor een industriële robot te maken.Ik kreeg een goede deal op een industriële robot van FANUC LRMate 200IC/5 h voor experimenten thuis. Zoals mijn dochter is nogal gefascineerd door de machine, die
Minecraft Instructables Robot

Minecraft Instructables Robot

Ik weet niet over u, maar ik hou van de Instructables Robot. Dus besloten heb ik om een in Minecraft. Zijn vrij groot en het is hol. Ik omgezet de binnenkant in een huis. Ik hoop dat u geniet van dit instructable. Vergeet niet te stemmen.Stap 1: Beno
Mini Robot Platform

Mini Robot Platform

Het doel van dit project is het ontwikkelen van een miniatuur-chassis als u wilt experimenteren met basaal swarm robots. De voornaamste inspiratie is James McLurkin van fantastische MIT-project van de vroege 1990 's http://www.ai.mit.edu/projects/ant
Robot krab (strand schoonmaken)

Robot krab (strand schoonmaken)

Het doel van dit project is de ontwikkeling van de robot van een dienst die zal worden gebruikt voor het reinigen van buiten omgevingen, nauwkeuriger kust plaatsen zoals de stranden. Een van de belangrijkste elementen in de ontwikkeling van dit proje