Hoe maak je een belemmering voor het vermijden van Arduino Robot! "Mijn Robot V1" (3 / 3 stap)

Stap 3: STROOMDIAGRAM en CODE


We beginnen met de ruitvorm, allereerst vertegenwoordigt de ruitvormige shape een selectievakje. Bij deze controle zien we als er een object dichterbij dan 30 cm tot onze robot. De controle heeft twee mogelijke uitkomsten, ja of Nee. Ja, wat betekent dat dat er inderdaad een aantal object dichter dan 30 cm. Nee, wat betekent dat dat er geen objecten die aangetroffen binnen 30 cm.
Als er niets binnen 30 cm kan de robot eenvoudig verplaatsen naar voren als het pad duidelijk is. Als er iets dichter dan 30 cm moet de robot obstakel vermijden manoeuvres uitvoeren.

De eerste fase van de belemmering te vermijden is om te stoppen met de robot! Als u niet de robot stopt onmiddellijk het zal verpletteren!

Oef! Dat was dramatisch.

Nadat de robot is gestopt met het moet om te zien hoe het zou moeten gaan. Het doet dit door beide richtingen, veel op zoek zoals u hoort wanneer u de weg oversteekt. Eerst de robot draait links neemt een lezen, draait rechts, neemt een lezen.

Een ander selectievakje treedt op als u wilt zien welke richting is de beste manier om te gaan. Als links is de weg te gaan heeft weer naar links en ga vooruit. Als rechts is de weg naar de robot simpelweg wordt verplaatst naar voren als het kampt al in de goede richting. Dus dat was vrij gemakkelijk was het niet? Alles wat wij moeten doen is nu dat diagram converteren naar Arduino code en thats it, obstakel vermijden code gedaan!

#include

#include

////////////////////////////////////////////////servo motor and sonar sensor ////////////////////////////////////////////

Const int dangerdistance = 30; veiligheidsafstand voor obstakels (in cm) Servo panMotor; een servo-object #define TRIGGER_PIN 3 maken / / Arduino pin gebonden aan pin op de ultrasone sensor te activeren. #define ECHO_PIN 2 / / Arduino pin gebonden aan echo pin op de ultrasone sensor. #define MAX_distance 200 / / maximale afstand die wij wilt pingen voor (in centimeters). Maximale sensor afstand wordt geschat op 400-500 cm. NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_distance); NewPing installatie van pennen en maximale afstand. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////// MOTOR //////////////////////////////////////////////////////////////////

*

Deze code voert enkele eenvoudige manoeuvres om te illustreren de functies: - motor (motorNumber, motorDirection, motorSpeed) - motorBrake(motorNumber) - motorStop(motorNumber) - motorsStandby

Verbindingen: - Pin 5---> PWMA - Pin 7---> AIN2 - Pin 8---> AIN1 - Pin 11---> STBY - Pin 12---> BIN1 - Pin 13---> BIN2 - Pin 6---> PWMB

-Motor 1: A01 en A02 - Motor 2: B01 en B02

*

/ Definiëren de pinnen

Motor 1 int pinAIN1 = 8; Richting int pinAIN2 = 7; Richting int pinPWMA = 5; Snelheid

Motor 2 int pinBIN1 = 12; Richting int pinBIN2 = 13; Richting int pinPWMB = 6; Snelheid

Standby-int pinSTBY = 11;

Constanten te helpen herinneren de parameters statische Boole turnCW = 0; voor motor functie statische Boole turnCCW = 1; voor motor functie statische Boole motor1 = 0; Motor, motorStop, motorrem functioneert statische Booleaanse motor2 = 1; voor motor, motorStop, motorrem functies

////////////////////////////////////////////////////////////////////////////////////////////////////////////////// unsigned long time; timer voor boucle doe... terwijl de unsigned long timeplus; / / timer voor boucle doen... terwijl

int afstand; int ons; void setup {//Set de PIN modi motor pinMode (pinPWMA, OUTPUT); pinMode (pinAIN1, OUTPUT); pinMode (pinAIN2, OUTPUT);

pinMode (pinPWMB, OUTPUT); pinMode (pinBIN1, OUTPUT); pinMode (pinBIN2, OUTPUT); pinMode (pinSTBY, OUTPUT); Serial.begin(9600); panMotor.write(90); delay(15000); / / wait totdat ik klaar panMotor.attach(4); hecht de servo op pin 9 op het servo-object}

//////////////////////////////////////////////////////////LOOP//////////////////////////////////////////////////

void loop {panMotor.write(90); / / een sonar sensor naar 90 graden draaien

delay(500); ping sonar sensor om afstand int ons = sonar.ping(); int centerdistance = uS / US_ROUNDTRIP_CM; if(centerdistance==0) {centerdistance = 200;} newping bibliotheek vergis repareren

Als (centerdistance > dangerdistance) //if pad is duidelijk {/ / *** terwijl geen belemmering IN uw FRONT MOVING en CHECK FOR obstakel houden elke 100 MS ***

doen / / (terwijl sensor geven minder dan 30cm houden robot vooruit) {int ons = sonar.ping(); int centerdistance = uS / US_ROUNDTRIP_CM; / / check de sensoren delay(100); / / wait voor sensoren te stabiliseren motor (motor1, turnCW, 150), motor (motor2, turnCW, 150);} terwijl (centerdistance < dangerdistance);

} / /---pathe is geblokkeerd---anders //if pad is geblokkeerd {motorBrake(motor1); motorBrake(motor2); als (centerdistance

panMotor.write(175); / / draai links delay(900); int. leftdistance = (sonar.ping) / US_ROUNDTRIP_CM; scannen naar de linker delay(500); if(leftdistance==0) {leftdistance = 200;} Fix newping library vergis / / / vergelijken afstand rechts en links / / / als (leftdistance > rightdistance & & leftdistance > dangerdistance) //if links is minder gehinderd en super dan dangerdistance {//Stop Motor1, Motor2 motorStop(motor1); motorStop(motor2); panMotor.write (175); //turn sonar naar links "Maak je klaar om de linkerzijde van de robot controleren wanneer het weer" delay(400); time=millis(); doen / / (zet robot naar links terwijl sensor geven minder dan 30cm en tijd niet meer dan 800 ms) {int ons = sonar.ping(); afstand = uS / US_ ROUNDTRIP_CM; Controleer de sensoren delay(100); wachten voor sensoren te stabiliseren van //Turn naar motor1: Stop Motor1, langzame Motor2 motor (motor1, turnCCW, 180); Motor (motor2, turnCW, 180); timeplus=Millis(); } terwijl (afstand > dangerdistance & timeplus-time < 800);

motorBrake(motor1); motorBrake(motor2); panMotor.write(90); / / schakelen sonar naar oorsprong positie delay(2000);

} anders als (rightdistance > leftdistance & & rightdistance > dangerdistance) //if recht is minder gehinderd en super dan dangerdistance {//Stop Motor1, Motor2 motorStop(motor1); motorStop(motor2); panMotor.write(5); delay(400); time=millis(); //(do turn robot to right while sensor give less than 30cm and time not more then 800 ms) doen {int ons = sonar.ping(); afstand = uS / US_ROUNDTRIP_CM; / / check de sensoren delay(100); / / wait voor sensoren te stabiliseren van de motor (motor2 turnCCW, 180); Motor (motor1, turnCW, 180); timeplus=Millis(); } terwijl (afstand > dangerdistance & timeplus-time < 800); motorBrake(motor1); motorBrake(motor2);

panMotor.write(90); delay(2000); } else / / indien geen oplossing {/ / stop alles motorBrake(motor1); motorBrake(motor2); motorsStandby(); panMotor.write(90); delay(9000);}} }

///////////////////////////// FUNCTIONS /////////////////////////////////////////

VOID motor (boolean motorNumber, boolean motorDirection, int motorSpeed) {/ * dit een opgegeven motor, rijdt in een bepaalde richting, met een opgegeven snelheid:-motorNumber: motor1 of motor2---> Motor 1 of Motor 2 - motorDirection: turnCW of turnCCW---> met de klok mee of linksdraaiend - motorSpeed: 0 tot 255---> 0 = stop / 255 = fast * /

Booleaanse pinIn1; Betrekking heeft op AIN1 of BIN1 (afhankelijk van de motor nummer opgegeven)

De richting om te schakelen van de motor / / Clockwise opgeven: AIN1/BIN1 = HIGH en AIN2/BIN2 = lage / / capaciteitsopbouwende-rechtsom: AIN1/BIN1 = laag en AIN2/BIN2 = hoog als (motorDirection == turnCW) pinIn1 = hoog; anders pinIn1 = laag;

Selecteer de motor te schakelen, en stel de richting en de snelheid if(motorNumber == motor1) {digitalWrite (pinAIN1, pinIn1); digitalWrite (pinAIN2,! pinIn1); //This is het tegenovergestelde van de AIN1 analogWrite (pinPWMA, motorSpeed);} else {digitalWrite (pinBIN1, pinIn1); digitalWrite (pinBIN2,! pinIn1); //This is het tegenovergestelde van de BIN1 analogWrite (pinPWMB, motorSpeed);}

Ten slotte ervoor dat STBY is uitgeschakeld - trek het hoge digitalWrite (pinSTBY, hoge);

}

VOID motorrem (boolean motorNumber) {/ * deze "Korte rem" s de opgegeven motor, door de snelheid instellen op nul * /

Als (motorNumber == motor1) analogWrite (pinPWMA, 0); anders analogWrite (pinPWMB, 0); }

VOID motorStop (boolean motorNumber) {/ * dit stopt de opgegeven motor door beide pins IN te stellen op laag * / if (motorNumber == motor1) {digitalWrite (pinAIN1, laag); digitalWrite (pinAIN2, laag);} else {digitalWrite (pinBIN1, laag); digitalWrite (pinBIN2, laag);}}

VOID motorsStandby() {/ * dit zet de motoren in de standby-modus * / digitalWrite (pinSTBY, laag);}

Gerelateerde Artikelen

Hoe maak je een houder voor het snijden van uien

Hoe maak je een houder voor het snijden van uien

https://www.YouTube.com/watch?v=fCKhf7__Bo0&feature=Youtu.beStap 1: Om te doen een houder voor het snijden van de uien moet u!!! Stap 2: Hoe snel uien slice. Maak uw leven gemakkelijker met behulp van een pick van haar te houden van groenten en fruit
Hoe maak je een kollekties (voor het verzamelen van sap)

Hoe maak je een kollekties (voor het verzamelen van sap)

Kollekties: zelfstandig naamwoord 1. een kleine houten peg of kraan voor het stoppen van een vat.Voor doeleinden van het verzamelen van sap van een esdoorn of berk, is het de buis-mechanisme dat u in de boom boren om de goedheid te stromen uit, die o
Hoe maak je een steambox voor het buigen van hout

Hoe maak je een steambox voor het buigen van hout

een stoom-box is een handige manier om warmte hout zodat het wordt meer buigzaam dan bij kamertemperatuur zijn. Zodra plooibaar, kunt u het hout buigen naar shapes dat je het niet kon in koude buigen. Grootte van de doos van de stoom is afhankelijk v
Hoe maak je een hulpmiddel voor het filmen van de gestage

Hoe maak je een hulpmiddel voor het filmen van de gestage

Stabiel filmen - dat de meest verbazingwekkende video's zijn een klik verwijderd A snelle en eenvoudige manier voor het maken van een hulpmiddel als u niet over een statief beschikt.
Hoe maak je een batterij voor de macht van Green Lantern (Hal Jordan's)

Hoe maak je een batterij voor de macht van Green Lantern (Hal Jordan's)

hier is hoe te maken van een werkende batterij van de macht van de Green Lantern (Hal Jordan's versie) voor ongeveer US$ 20.  Mijn zoon (5) heeft besloten dat de Green Lantern (vooral Hal Jordan) de coolste superheld ooit is, dus voor Kerstmis 2009 h
Hoe maak je kleine batterijen voor het aandrijven van LED-verlichting!

Hoe maak je kleine batterijen voor het aandrijven van LED-verlichting!

LED-lampjes of Light Emitting Diodes, werden uitgevonden in 1962 door raadpleging van wetenschapper Nick Holonyak Jr, in een General Electric laboratorium in Syracuse, New York. Op het moment voorspelde hij dat ze standaard gloeilamp van Edison's zou
Hoe maak je een menselijke Camera - het maken van Touchy

Hoe maak je een menselijke Camera - het maken van Touchy

mijn naam is Eric Siu, een mediakunstenaar uit Hong Kong en de Schepper van lichtgeraakt, die is een samenwerkingsproject met Tomohiko Hayakawa en Carson Reynolds. Lichtgeraakt is een experiment van de sociale interactie die zich op de relatie richt
Hoe maak je een elektronische dobbelstenen met behulp van ARDUINO

Hoe maak je een elektronische dobbelstenen met behulp van ARDUINO

Hey jongens zijn we weer met een ander cool Arduino project voor u. In dit Instructable, zal ik u tonen hoe te maken van een elektronische dobbelstenen met behulp van Arduino. Ik weet dat u van het zult houden. , Bekijk de video.Stap 1: onderdelen1.
Hoe maak je een top voor het strand met strik

Hoe maak je een top voor het strand met strik

In deze video tutorial zal ik u tonen hoe te maken van een top met strik, voor het strand.U moet de naald, schaar, draad en een grotere shirt.Het duurt ongeveer 10 minuten.Geluk!Stap 1: Gegevens hieronder :)
Hoe maak je een Banners voor de partij van de verjaardag/bruiloft

Hoe maak je een Banners voor de partij van de verjaardag/bruiloft

In deze Banners, ik zal u tonen hoe te makenYou Will Need: (zal tonen een beeld voor elke)kleur papiereen paar van schaarplakbandKunt u 2 of 3 kleur papier, ik hou van yo maken dit een voor brithday/bruiloft. Dus geniet van uw maken de * Banners *.
Hoe maak je een koele android/pc gecontroleerde bluetooth arduino robot onder $34/Rs.2300

Hoe maak je een koele android/pc gecontroleerde bluetooth arduino robot onder $34/Rs.2300

Hallo jongens!OK, dus ik 13 jaar oud ben en dit mijn eerste is instructable, en vandaag vertel ik u hoe maak je eigen robot van de arduino-bluetooth onder $34 of Rs.2300, afhankelijk van waar u woont. Ik schrijf dit met geweldige inzichten uit enkele
Hoe maak je een USB naar het oplichten van een LED met blote geleidende verf pen

Hoe maak je een USB naar het oplichten van een LED met blote geleidende verf pen

wat je nodig hebt:Verf Pen blootPen/potloodLEDKartonnenLiniaalSchaarUSB-poortOptioneel:Warmte Gun (als je ongeduldig)Hete lijmpistool (als u geen dik karton)Stap 1: Neem een stukje karton groot genoeg om 2 lijnen 12 mm breed en 75 mm lang te tekenen.
Hoe maak je een mes In het Wild, van steen en hout!

Hoe maak je een mes In het Wild, van steen en hout!

ik heb altijd wilde een stenen mes, dus ik een maakte en dacht u kerels willen misschien een te... Dus heres de tut...
Hoe maak je een drone voor onder 120$

Hoe maak je een drone voor onder 120$

Hallo, dit is mijn instructable: "Hoe maak je een drone voor onder 120$" Ik ben 13 jaar oud en ik wilde een drone bouwen maar ik heb niet genoeg geld om te kopen een drone rtf (klaar om te vliegen), die voorzien van mijn eisen, dus ik zei tegen