Pessoal , esse e meu primeiro contato com o forum,
pesquisei muito mais não achei nada que me ajuda-se nesse problema.
decidi fazer um projeto com o Arduíno pois minha esposa teve um AVC (Acidente vascular cerebral), e esta em reabilitação, vi vários projetos no instagram que ajudam na reabilitação e decidi que iria tentar mesmo sem saber nada sobre programação, então se alguém poder ajudar, fico agradecido!
o projeto ao meu ver é simples, estou usando 3 LEDS e três Sensores hc-sr04, a ideia é o LED ligar e quando se aproximar do sensor correspondente o LED desligar e outro ligar automaticamente e aleatoriamente usando o randomSeed.
meu problema é que o comando Break do switch(usado em caso 1, caso 2 e caso 3) não funciona e quando alimento o Arduíno os LEDS ficam piscando aleatoriamente, onde era pra parar e esperar até o sensor reconhecer( nesse caso <20) .
desculpem se o código esta bagunçado, fiz ele apenas com informações que tinha na documentação de referencia aqui da pagina e poucos videos do youtube ( a maioria só ensina blink que não é o meu caso).
#define trig1 7
#define echo1 6
#define trig2 5
#define echo2 4
#define trig3 3
#define echo3 2
#define verde 11
#define amarelo 12
#define vermelho 13
#include<UltraDistSensor.h>
UltraDistSensor sensor1;
UltraDistSensor sensor2;
UltraDistSensor sensor3;
float reading;
void setup()
{ Serial.begin (9600);
sensor1.attach(7, 6); //Trigger pin , Echo pin
sensor2.attach(5, 4); //Trigger pin , Echo pin
sensor3.attach(3, 2); //Trigger pin , Echo pin
pinMode(trig1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(trig2, OUTPUT);
pinMode(echo2, INPUT);
pinMode(trig3, OUTPUT);
pinMode(echo3, INPUT);
pinMode(verde, OUTPUT);
pinMode(amarelo, OUTPUT);
pinMode(vermelho, OUTPUT);
randomSeed(analogRead(A0));
}
void loop() {
long duration, distance;
int numero = random(30);
int output;
switch (numero) {
case 1:
digitalWrite(verde, HIGH);
digitalWrite(amarelo, LOW);
digitalWrite(vermelho, LOW);
break;
{ long duration, distance;
digitalWrite(trig1, LOW);
delayMicroseconds(2);
digitalWrite(trig1, HIGH);
delayMicroseconds(10);
digitalWrite(trig1, LOW);
duration = pulseIn(echo1, HIGH);
distance = (duration / 2) / 29.1;
if (distance < 20)
{ digitalWrite(verde, LOW);
}
}
case 2:
digitalWrite(verde, LOW);
digitalWrite(amarelo, HIGH);
digitalWrite(vermelho, LOW);
break;
{ long duration, distance;
digitalWrite(trig2, LOW);
delayMicroseconds(2);
digitalWrite(trig2, HIGH);
delayMicroseconds(10);
digitalWrite(trig2, LOW);
duration = pulseIn(echo2, HIGH);
distance = (duration / 2) / 29.1;
if (distance < 20)
{ digitalWrite(amarelo, LOW);
}
}
case 3:
{ long duration, distance;
digitalWrite(verde, LOW);
digitalWrite(amarelo, LOW);
digitalWrite(vermelho, HIGH);
break;
digitalWrite(trig3, LOW);
delayMicroseconds(2);
digitalWrite(trig3, HIGH);
delayMicroseconds(10);
digitalWrite(trig3, LOW);
duration = pulseIn(echo3, HIGH);
distance = (duration / 2) / 29.1;
if (distance < 20)
{ digitalWrite(vermelho, LOW);
}
}
}
reading = sensor1.distanceInCm();
Serial.print("Sensor 1 Reading :");
Serial.print(reading);
Serial.println("Cm");
reading = sensor2.distanceInCm();
Serial.print("Sensor 2 Reading :");
Serial.print(reading);
Serial.println("Cm");
reading = sensor3.distanceInCm();
Serial.print("Sensor 3 Reading :");
Serial.print(reading);
Serial.println("Cm");
}