Ciao a tutti, ahhh, davvero non c'è la faccio più, è da giorni che sono alla mano di 6 sensori hc-sr04, semplicemente non rilevano le distanze. Esempio "nel caso non mi fossi spiegato bene". Io lo connetto al computer per fornire l'alimentazione e delle volte funziona mentre delle altre no, inverto i cavi e prima va poi magicamente non più. I sensori sono 6 e sono collegati 4 ad un arduino e 2 ad un altro. Ecco la parte del codice interessata
1o arduino:
long duration1;
int distanc
e1;
int safetyDistance1;
long duration2;
int distance2;
int safetyDistance2;
long duration3;
int distance3;
int safetyDistance3;
long duration4;
int distance4;
int safetyDistance4;
const int trigPin1 = 3;
const int echoPin1 = 5;
const int trigPin2 = 14;
const int echoPin2 = 15;
const int trigPin3 = 18;
const int echoPin3 = 19;
const int ledPin1 = 4;
const int ledPin2 = 7;
const int ledPin3 = 8;
const int ledPin4 = 12;
const int trigPin4 = 17;
const int echoPin4 = 16;
void setup() {
Serial.begin(9600);
pinMode(trigPin4, OUTPUT);
pinMode(echoPin4, INPUT);
pinMode(ledPin4, OUTPUT);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(ledPin1, OUTPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(ledPin2, OUTPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
pinMode(ledPin3, OUTPUT);
}
void loop() {
digitalWrite(trigPin4, LOW);
delayMicroseconds(5);
digitalWrite(trigPin4, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin4, LOW);
duration4 = pulseIn(echoPin4, HIGH);
distance4 = duration4 * 0.034 / 2;
safetyDistance4 = distance4;
if (safetyDistance4 <= 15) {
digitalWrite(ledPin4, HIGH);
}
else {
digitalWrite(ledPin4, LOW);
}
Serial.print("Distance4: ");
Serial.println(distance4);
digitalWrite(trigPin1, LOW);
delayMicroseconds(5);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
distance1 = duration1 * 0.034 / 2;
safetyDistance1 = distance1;
if (safetyDistance1 <= 15) {
digitalWrite(ledPin1, HIGH);
}
else {
digitalWrite(ledPin1, LOW);
}
Serial.print("Distance1: ");
Serial.println(distance1);
digitalWrite(trigPin2, LOW);
delayMicroseconds(5);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin2, LOW);
duration2 = pulseIn(echoPin2, HIGH);
distance2 = duration2 * 0.034 / 2;
safetyDistance2 = distance2;
if (safetyDistance2 <= 15) {
digitalWrite(ledPin2, HIGH);
}
else {
digitalWrite(ledPin2, LOW);
}
Serial.print("Distance2: ");
Serial.println(distance2);
digitalWrite(trigPin3, LOW);
delayMicroseconds(5);
digitalWrite(trigPin3, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin3, LOW);
duration3 = pulseIn(echoPin3, HIGH);
distance3 = duration3 * 0.034 / 2;
safetyDistance3 = distance3;
if (safetyDistance3 <= 15) {
digitalWrite(ledPin3, HIGH);
}
else {
digitalWrite(ledPin3, LOW);
}
Serial.print("Distance3: ");
Serial.println(distance3);`
2o: const int trigPin1 = 22;
const int echoPin1 = 23;
const int trigPin3 = 44;
const int echoPin3 = 45;
long duration1;
int distance1;
int safetyDistance1;
long duration3;
int distance3;
int safetyDistance3;
const int ledPin1 = 39;
const int ledPin2 = 40;
const int ledPin3 = 41;
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(ledPin1, OUTPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
pinMode(ledPin3, OUTPUT);
}
void loop() {
digitalWrite(trigPin1, LOW);
delayMicroseconds(5);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
distance1 = duration1 * 0.034 / 2;
safetyDistance1 = distance1;
if (safetyDistance1 <= 15) {
digitalWrite(ledPin1, HIGH);
}
else {
digitalWrite(ledPin1, LOW);
}
Serial.print("Distance1: ");
Serial.println(distance1);
digitalWrite(trigPin3 , LOW);
delayMicroseconds(5);
digitalWrite(trigPin3, LOW);
delayMicroseconds(5);
digitalWrite(trigPin3, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin3, LOW);
duration3 = pulseIn(echoPin3, HIGH);
distance3 = duration3 * 0.034 / 2;
safetyDistance3 = distance3;
if (safetyDistance3 <= 15) {
digitalWrite(ledPin3, HIGH);
}
else {
digitalWrite(ledPin3, LOW);
}
Serial.print("Distance3: ");
Serial.println(distance3);
Per "non funziona" intendo che rilevano valore 0 all'improvviso
Spero mi possiate rispondere il prima possibile perchè non capisco proprio dove sbaglio.
Ps mi scuso per non aver utilizzato il giusto font per il codice ma non capisco dove si trova con la nuova interfaccia. Grazieee