-
Notifications
You must be signed in to change notification settings - Fork 0
/
Robo Antiqueda e Anticolisao 2.0.ino
159 lines (140 loc) · 4.15 KB
/
Robo Antiqueda e Anticolisao 2.0.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/*____________________________________________________________________________________________________
OBS: Esta é a versão mais atualizada que encontrei no pendrive, em breve providencio a versão final
utilizada na apresentação do projeto
_____________________________________________________________________________________________________*/
#include <Ultrasonic.h>
#include <Servo.h>
#define pino_trigger 9 //Sensor de Cima
#define pino_echo 8
#define leed 7
#define pino_triggger 12 //Sensor de Baixo
#define pino_eccho 11
#define led 13
//Definicoes pinos Arduino ligados a entrada da Ponte H
int val;
int ChaveEsquerda;
int ChaveCentral;
int ChaveDireita;
int IN1 = 1;
int IN2 = 2;
int IN3 = 3;
int IN4 = 4;
Servo myservo;
//Inicializa o sensor nos pinos definidos acima
Ultrasonic ultrasonic(pino_trigger, pino_echo);
Ultrasonic ultrasonic2(pino_triggger, pino_eccho);
void setup()
{
Serial.begin(115200);
Serial.println("Lendo dados do sensor...");
//Define os pinos como saida
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(led, OUTPUT);
pinMode(leed, OUTPUT);
myservo.attach(10);
pinMode(ChaveEsquerda, INPUT); //Aciona o resistor pull-up interno
digitalWrite(ChaveEsquerda, HIGH);
pinMode(ChaveCentral, INPUT);
digitalWrite(ChaveCentral, HIGH);
pinMode(ChaveDireita, INPUT);
digitalWrite(ChaveDireita, HIGH);
}
void loop()
{
//Le as informacoes do sensor, em cm e pol
float cmMsec1,cmMsec2,inMsec1, inMsec2;
long microsec1 = ultrasonic.timing();
cmMsec1 = ultrasonic.convert(microsec1, Ultrasonic::CM);
inMsec1 = ultrasonic.convert(microsec1, Ultrasonic::IN);
//DELAY
long microsec2 = ultrasonic2.timing();
cmMsec2 = ultrasonic.convert(microsec2, Ultrasonic::CM);
inMsec2 = ultrasonic.convert(microsec2, Ultrasonic::IN);
//DELAY
//Exibe informacoes no serial monitor
Serial.print("Distancia em cm sensor largura (1): ");
Serial.print(cmMsec1);
Serial.print(" - Distancia em polegadas sensor largura (1): ");
Serial.println(inMsec1);
delay(100);
Serial.print("Distancia em cm sensor altura (2): ");
Serial.print(cmMsec2);
Serial.print(" - Distancia em polegadas sensor de altura (2): ");
Serial.println(inMsec2);
delay(100);
if((cmMsec1) >= 20){
//Gira os Dois Motores no Sentido Horario
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
//motor b
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
digitalWrite(leed, LOW);
}
if((cmMsec1) < 20){ //imprime o valor da variavel distancia
//Para os Motores A e B
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
digitalWrite(leed, HIGH);
delay(500);
myservo.write(45);
delay(500);
myservo.write(-100);
delay(500);
myservo.write(115);
delay(500);
myservo.write(45);
delay(500);
digitalWrite(IN1, LOW); // DA RÉ
digitalWrite(IN2, HIGH);
//motor b
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delay(500);
digitalWrite(IN1, HIGH); //VIRA PARA ESQUERDA
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
delay(100);
digitalWrite(leed, HIGH);
}
if((cmMsec2) >= 5){ //imprime o valor da variavel distancia
//Para os Motores A e B
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
digitalWrite(led, HIGH);
delay(500);
digitalWrite(IN1, LOW); // DA RÉ
digitalWrite(IN2, HIGH);
//motor b
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
delay(500);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
delay(100);
digitalWrite(IN1, HIGH); //VIRA PARA ESQUERDA
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
delay(100);
}
if((cmMsec2) < 5){
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
//motor b
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
digitalWrite(led, LOW);
digitalWrite(leed, LOW);
}
}