Lata amerikanska roboten (4 / 4 steg)
Steg 4: kodning
Slutligen, här är koden vi använde:#include "Servo.h"
#include < SoftwareSerial.h >
CONST int Trig_pinRight = 7. Utlösare puls för just Ultrasonic Sensor
CONST int Echo_pinRight = 13. Recevies Echo för just Ultrasonic Sensor
CONST int Trig_pinLeft = 12; Utlöser puls för vänster Ultrasonic Sensor
CONST int Echo_pinLeft = 8; Tar emot Echo för vänster Ultrasonic Sensor
lång durationRight; Tid det tar för puls att studsa tillbaka till höger Ultrasonic Sensor
lång durationLeft; Tid det tar för puls att studsa tillbaka till vänster Ultrasonic Sensor
Servo motorLeft; VÄNSTER VEX Motor
Servo motorRight; JUST VEX Motor
void setup() {
Serial.BEGIN(9600); Ställ in följetong bibliotek på 9600 bps
Serial.println("INITIALIZING..."); Skriv ut initierar... att bekräfta koden arbetar med seriell bibliotek
motorLeft.attach(11); VÄNSTER Motor är i stift 11
motorRight.attach(10); HÖGER Motor är i stift 10
Serial.println ("Start");
initiera puls stiftet som utdata:
pinMode (Trig_pinRight, OUTPUT);
initiera puls stiftet som utdata:
pinMode (Trig_pinLeft, OUTPUT);
initiera echo_pin PIN-koden som indata:
pinMode (Echo_pinRight, indata);
initiera echo_pin PIN-koden som indata:
pinMode (Echo_pinLeft, indata);
}
void loop()
{
Puls och Echo för just Ultrasonic Sensor; Processen för att fastställa och utskrift varaktigheterna för rätt Ultrasonic Sensor
digitalWrite (Trig_pinRight, låg);
delayMicroseconds(2);
digitalWrite (Trig_pinRight, hög);
delayMicroseconds(5);
digitalWrite (Trig_pinRight, låg);
durationRight = pulseIn(Echo_pinRight,HIGH);
Serial.println ("durationRight:");
Serial.println (durationRight, DEC);
Puls och Echo för lämnade Ultrasonic Sensor; Processen för att fastställa och utskrift varaktigheterna för vänster Ultrasonic Sensor
digitalWrite (Trig_pinLeft, låg);
delayMicroseconds(2);
digitalWrite (Trig_pinLeft, hög);
delayMicroseconds(5);
digitalWrite (Trig_pinLeft, låg);
durationLeft = pulseIn(Echo_pinLeft,HIGH);
Serial.println ("durationLeft:");
Serial.println (durationLeft, DEC);
om (durationRight > 0 & & durationRight < 4000 & & durationRight > 0 & & durationLeft < 4000) / / stopp när mänskliga är för nära båda sensorerna
{
motorLeft.write(90);
motorRight.write(90);
}
om (durationRight > 4000 & & durationRight < 10000 & & durationLeft > 4000 & & durationLeft < 10000) / / flytta fram när mänskliga är equadistant till båda sensorerna
{
motorLeft.write(113);
motorRight.write(68);
}
om (durationLeft - 1000 > durationRight & & durationRight > 4000) / / sväng höger när mänskliga är nära rätt sensor
{
motorLeft.write(120);
motorRight.write(100);
Delay(500);
motorLeft.write(120);
motorRight.write(75);
Delay(2000);
}
om (durationRight - 1000 > durationLeft & & durationLeft > 4000) / / sväng vänster när mänskliga är närmare till vänster sensor
{
motorLeft.write(100);
motorRight.write(75);
Delay(500);
motorLeft.write(120);
motorRight.write(75);
Delay(5000);
}
om (durationRight > 10000 & & durationLeft > 10000) / / flytta fram snabbt när mänskliga är för långt bort men fortfarande equadistant
{
motorLeft.write(135);
motorRight.write(45);
}
}