O documento define as variáveis e funções para controlar um veículo autônomo com 5 sensores ultrassônicos e 5 LEDs usando Arduino. Ele mede a distância de objetos, controla a direção dos motores e pisca os LEDs em intervalos diferentes.
1. #include <Ultrasonic.h>
#define echoPin 13 //ligado no echo // e recebe o sinal que a distancia do oponente
#define trigPin 12 //Pino 12 envia o pulso para gerar o echo / liga do triger
int distancia=0;
int s1 = A1; // Sensor 2 , f r e n t e d i r e i t o
int s2 = A3; // Sensor 4 , f r e n t e esquerdo
int s3 = A2; // Sensor 3 , meio
int s4=A0; // Sensor 1 , f r e n t e d i r e i t o
int s5=A4; // Sensor 5 , f r e n t e esquerdo
//leds de alerta no teto
int led1=11;
int led2=2;
int led3=4;
int led4=7;
int led5=8;
//estado dos leds para função millis()
int ledState = LOW;
int ledState1 = LOW;
int ledState2 = LOW;
int ledState3 = LOW;
int ledState4 = LOW;
//variáveis função millis()
long previousMillis = 0;
2. long previousMillis1 = 0;
long previousMillis2 = 0;
long previousMillis3 = 0;
long previousMillis4 = 0;
//intervalos para função millis()
long interval = 1010;
long interval1 = 1015;
long interval2= 1020;
long interval3= 1025;
long interval4= 750;
//MOTOR A, lado esquerdo
int mA1 = 3; // Motor A 1
int mA2 = 5; // Motor A 2
//MOTOR B, lado d i r e i t o
int mB1 = 6; // Motor B 1
int mB2 = 9; // Motor B 2
int frente = HIGH;
int lados = HIGH;
void setup () {
pinMode ( s1 , INPUT) ;
pinMode ( s2 , INPUT) ;
3. pinMode ( s3 , INPUT) ;
pinMode ( s4 , INPUT) ;
pinMode ( s5 , INPUT) ;
pinMode (led1, OUTPUT) ;
pinMode (led2, OUTPUT) ;
pinMode (led3, OUTPUT) ;
pinMode (led4, OUTPUT) ;
pinMode (led5, OUTPUT) ;
pinMode (mA1, OUTPUT) ;
pinMode (mA2, OUTPUT) ;
pinMode (mB1, OUTPUT) ;
pinMode (mB2, OUTPUT) ;
pinMode(echoPin, INPUT); // define o pino 13 como entrada (recebe)
pinMode(trigPin, OUTPUT); // define o pino 12 como saida (envia)
Serial . begin (9600) ;
}
void loop () {
//seta o pino 12 com um pulso baixo "LOW" ou desligado ou ainda 0
digitalWrite(trigPin, LOW);
// delay de 2 microssegundos
delayMicroseconds(2);
//seta o pino 12 com pulso alto "HIGH" ou ligado ou ainda 1
digitalWrite(trigPin, HIGH);
//delay de 10 microssegundos
4. delayMicroseconds(10);
//seta o pino 12 com pulso baixo novamente
digitalWrite(trigPin, LOW);
//pulseInt lê o tempo entre a chamada e o pino entrar em high
int duration = pulseIn(echoPin,HIGH);
//Esse calculo é baseado em s = v . t, lembrando que o tempo vem dobrado
//porque é o tempo de ida e volta do ultrassom
distancia = (duration/29)/2 ;
Serial.print("Distancia em CM: ");
Serial.println(distancia);
if(distancia<=10&& distancia>8){
digitalWrite (mA1, LOW ) ;
analogWrite (mA1, 0) ;
digitalWrite (mA2, LOW) ;
digitalWrite (mB1, LOW ) ;
digitalWrite (mB2, LOW) ;
analogWrite (mB2, 0) ;
delay (1000);
digitalWrite (mA1, LOW ) ;
digitalWrite (mA2, HIGH) ;
digitalWrite (mB1, LOW ) ;
digitalWrite (mB2, HIGH) ;