Autonom Robot med LinkitONE (11 / 13 steg)
Steg 11: Skriva någon kod
Koden här är mycket enkelt!
Du robot har kan göra många funktioner som går framåt, flytta bakåt, rotera etc. Du kan räkna ut funktioner.
Här gör vi ett hinder undvika er med hjälp av ultraljud sensor. Vi, ll användning servo biblioteket i detta.
KOD:
---------------------
#include < servo.h >
CONST int RForward = 0; CONST int RBackward = 180; CONST int LForward = RBackward; CONST int LBackward = RForward; CONST int RNeutral = 90. CONST int LNeutral = 90. konstanter för motor hastighet const int pingPin = 7. CONST int irPin = 0; Skarpa infraröd sensor stift const int dangerThresh = 10; tröskeln för hinder (i cm) int leftDistance, rightDistance; avstånden på endera sidan Servo panMotor; Servo leftMotor; Servo rightMotor; deklarera motors lång varaktighet; tid det tar att ta emot PING))) signal
void setup() {rightMotor.attach(11); leftMotor.attach(10); panMotor.attach(6); //attach motorer till rätt stift panMotor.write(90); //set PING))) panorera till center}
void loop() {int distanceFwd = ping(); om (distanceFwd > dangerThresh) //if sökväg är klart {leftMotor.write(LForward); rightMotor.write(RForward); //move fram} annat //if väg är blockerad {leftMotor.write(LNeutral); rightMotor.write(RNeutral); panMotor.write(0); delay(500); rightDistance = ping() //scan till den högra delay(500); panMotor.write(180); delay(700); leftDistance = ping() //scan till den vänstra delay(500); panMotor.write(90); //return att centrera delay(100); compareDistance();}} void compareDistance() {om (leftDistance > rightDistance) //if vänster är mindre hindras {leftMotor.write(LBackward); rightMotor.write(RForward); //turn vänstra delay(500);} annat om (rightDistance > leftDistance) //if rätten är mindre hindras {leftMotor.write(LForward); rightMotor.write(RBackward); //turn rätt delay(500);} annat //if de är lika blockerade {leftMotor.write(LForward); rightMotor.write(RBackward); //turn 180 grader delay(1000);}}
lång ping() {/ / skicka ut PING))) signalen puls pinMode (pingPin, produktionen); digitalWrite (pingPin, låg); delayMicroseconds(2); digitalWrite (pingPin, hög); delayMicroseconds(5); digitalWrite (pingPin, låg); Få tid det tar att ta emot echo pinMode (pingPin, ingång); längd = pulseIn (pingPin, hög); Konvertera varaktighet till avstånd avkastning varaktighet / 29 / 2; }
------------