I'm using three ultrasonic sensors for this, apparently the connection sends -1 and some random numbers, I'm using three ultrasonic sensors for this, apparently the connection sends -1 and some random numbers, I don't understand what the problem is, the distance isn't being read either
Arduino that sends code:
#define vaga4_red 2
#define vaga4_green 6
#define echo4 4
#define trigger4 5
float distancia4 = 0;
float tempo4;
float velocidade = 0.172316;
void setup(){
Serial.begin(9600);
pinMode(vaga4_red, OUTPUT);
pinMode(vaga4_green, OUTPUT);
pinMode(echo4, INPUT);
pinMode(trigger4, OUTPUT);
}
void loop(){
//medindo a distancia do sensor 4
digitalWrite(trigger4, LOW);
delayMicroseconds(5);
digitalWrite(trigger4, HIGH);
delayMicroseconds(10);
digitalWrite(trigger4, LOW);
tempo4 = pulseIn(echo4, HIGH);
distancia4 = 3 //tempo4 * velocidade;
delay(500);
Serial.print("Distancia 4: ");
Serial.println(distancia4);
if(distancia4 >= 2.4 && distancia4 <= 3310.0){
digitalWrite(vaga4_red, HIGH);
digitalWrite(vaga4_green, LOW);
Serial.write("2");
}
else{
digitalWrite(vaga4_red, LOW);
digitalWrite(vaga4_green, HIGH);
Serial.write("0");
}
}
Arduino receiving code:
#include <Adafruit_LiquidCrystal.h>
Adafruit_LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define vaga1_red 13
#define vaga1_green 10
#define vaga2_red 9
#define vaga2_green 8
#define echo1 15
#define trigger1 14
#define echo2 17
#define trigger2 16
float distancia1 = 0;
float distancia2 = 0;
float tempo1;
float tempo2;
float velocidade = 0.172316;
int vagas_ocupadas = 0;
int vagas_livres = 4;
int ultrasonic1 = 0;
int ultrasonic2 = 0;
void setup()
{
Serial.begin(9600);
lcd.begin(16,2);
pinMode(vaga1_red, OUTPUT);
pinMode(vaga1_green, OUTPUT);
pinMode(vaga2_red, OUTPUT);
pinMode(vaga2_green, OUTPUT);
pinMode(echo1, INPUT);
pinMode(trigger1, OUTPUT);
pinMode(echo2, INPUT);
pinMode(trigger2, OUTPUT);
}
void loop()
{
//distancia 1
digitalWrite(trigger1, LOW);
delayMicroseconds(5);
digitalWrite(trigger1, HIGH);
delayMicroseconds(10);
digitalWrite(trigger1, LOW);
tempo1 = pulseIn(echo1, HIGH);
distancia1 = tempo1 * velocidade;
//Serial.print("Distancia 1: ");
//Serial.println(distancia1);
//distancia 2
digitalWrite(trigger2, LOW);
delayMicroseconds(5);
digitalWrite(trigger2, HIGH);
delayMicroseconds(10);
digitalWrite(trigger2, LOW);
tempo2 = pulseIn(echo2, HIGH);
distancia2 = tempo2 * velocidade;
//Serial.print("Distancia 2: ");
//Serial.println(distancia2);
int ultrasonic4 = Serial.read();
Serial.println(Serial.read());
if (ultrasonic4 == 1){
ultrasonic4 = 1;
}else{
ultrasonic4 = 0;
}
vagas_livres = 3 - vagas_ocupadas;
if(Serial.available() > 0){
vagas_ocupadas = ultrasonic1 + ultrasonic2 + ultrasonic4;
if(distancia1 >= 2.4 && distancia1 <= 3310.0){
digitalWrite(vaga1_red, HIGH);
digitalWrite(vaga1_green, LOW);
ultrasonic1 = 1;
}
else{
digitalWrite(vaga1_red, LOW);
digitalWrite(vaga1_green, HIGH);
ultrasonic1 = 0;
}
if(distancia2 >= 2.4 && distancia2 <= 3310.0){
digitalWrite(vaga2_red, HIGH);
digitalWrite(vaga2_green, LOW);
ultrasonic2 = 1;
}
else{
digitalWrite(vaga2_red, LOW);
digitalWrite(vaga2_green, HIGH);
ultrasonic2 = 0;
}
if(vagas_livres >= 1){
lcd.clear();
lcd.setCursor(3,0);
lcd.print("BEM-VINDO!");
delay(1000);
lcd.setCursor(0,0);
lcd.print("Vagas livres = ");
lcd.print(vagas_livres);
lcd.setCursor(0,1);
lcd.print("Vagas ocup. = ");
lcd.print(vagas_ocupadas);
delay(1000);
}
else{
lcd.clear();
lcd.setCursor(3,0);
lcd.print("SEM VAGAS");
}
}
}