Professional Documents
Culture Documents
h>
#include <SoftwareSerial.h>
#include <Ultrasonic.h>
#define pin1 4
#define pin2 5
#define port1 3
#define pin3 7
#define port2 6
#define pin4 8
int ler;
int distance;
char lido;
void parar_motor(){
digitalWrite(pin1, LOW);
digitalWrite(pin4, LOW);
digitalWrite(pin2, LOW);
digitalWrite(pin3, LOW);
}
void tras(){
servopin.write(60);
digitalWrite(pin1, HIGH);
digitalWrite(pin4, HIGH);
digitalWrite(pin2, LOW);
digitalWrite(pin3, LOW);
}
void frente(){
digitalWrite(pin1, LOW);
digitalWrite(pin4, LOW);
digitalWrite(pin2, HIGH);
digitalWrite(pin3, HIGH);
}
void esquerda(){
analogWrite(port1, 120);
analogWrite(port2, 120);
digitalWrite(pin1, LOW);
digitalWrite(pin4, HIGH);
digitalWrite(pin2, HIGH);
digitalWrite(pin3, LOW);
delay(500);
}
void direita(){
analogWrite(port1, 120);
analogWrite(port2, 120);
digitalWrite(pin1, HIGH);
digitalWrite(pin4, LOW);
digitalWrite(pin2, LOW);
digitalWrite(pin3, HIGH);
delay(500);
}
void setup() {
Serial.begin(9600);
TXRX.begin(9600);
servopin.attach(13);
pinMode(pin1, OUTPUT);
pinMode(port1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(port2, OUTPUT);
pinMode(pin4, OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(pin1, LOW);
digitalWrite(pin2, LOW);
digitalWrite(pin3, LOW);
digitalWrite(pin4, LOW);
analogWrite(port1, 150);
analogWrite(port2, 150);
servopin.write(60);
}
void loop() {
// Pass INC as a parameter to get the distance
in inches
distance=ultrasonic.read();
lido=Serial.read();
ler=TXRX.read();
delay(20);
if(distance>=20){
switch(ler){
case '0': // parar
parar_motor();
break;
delay(200);
frente();
delay(500);
parar_motor();
delay(400);
esquerda();
parar_motor();
delay(400);
frente();
}
break;
delay(200);
frente();
delay(500);
parar_motor();
delay(400);
direita();
parar_motor();
delay(400);
frente();
}
break;
case '4': // para tras
tras();
break;