ciao a tutti!!
per un progetto devo utilizzare due (forse 3) sensori ad ultrasuoni, del tipo HC-SR04.
come sapete, ognuno di tali sensori richiede 2 pin, piu l'alimentazione, percui se devo utilizzare 3 sensori avrò bisogno di 6 pin.
per risparmiare pin mi chiedevo se sia possibile utilizzare un solo pin trigger, quindi avere un unico pin per l'impulso comune a tutti i sensori. inquesto modo si risparmierebbero un bel po di pin.
allego un immaginetta per chiarire cosa intendo.
ho provato a vedere se funziona, e rilevo alcuni problemi.
utilizzando due sensori con due trigger (uno a sensore), non rilevo problemi, e i sensori fanno il loro dovere. ma provando ad utilizzare un trigger comune ad entrambi, ed utilizzando questo codice
#define ECHO1_PIN 13
#define ECHO2_PIN 12
#define TRIG1_PIN 11
void setup() {
Serial.begin(9600);
pinMode(ECHO1_PIN,INPUT);
pinMode(TRIG1_PIN,OUTPUT);
pinMode(ECHO2_PIN,INPUT);
digitalWrite(TRIG1_PIN,LOW);
}
void loop() {
digitalWrite(TRIG1_PIN,HIGH);
delayMicroseconds(20);
digitalWrite(TRIG1_PIN,LOW);
float time_micro1 = pulseIn(ECHO1_PIN,HIGH);
float time_milli1 = time_micro1/1000;
float distance1 = time_milli1*0.173;
digitalWrite(TRIG1_PIN,HIGH);
delayMicroseconds(20);
digitalWrite(TRIG1_PIN,LOW);
float time_micro2 = pulseIn(ECHO2_PIN,HIGH);
float time_milli2 = time_micro2/1000;
float distance2 = time_milli2*0.173;
Serial.println();
Serial.print("Distanza 1 \tDistanza 2");
Serial.println();
Serial.print("\t");
Serial.print(distance1);
Serial.print("\t");
Serial.print("\t");
Serial.print(distance2);
Serial.println();
delay(2000);
}
ottengo dei funzionamenti anomali sul sensore 2.
ho fatto delle prove con ostacoli a diverse distanze:
PROVA 1
ostacolo dal sensore 1 = 25 cm
ostacolo dal sensore 2 = 25 cm
in questo caso i sensori funzionano entrambi
PROVA 2
ostacolo dal sensore 1 = 25 cm
ostacolo dal sensore 2 = 5 - 10 cm
in questo caso i sensori funzionano entrambi
PROVA 1
ostacolo dal sensore 1 = 5 - 10 cm
ostacolo dal sensore 2 = 25 cm
in questo caso il sensore 1 funziona bene, il sensore 2 rileva ZERO.
come mai? secondo voi è possibile modificare il codice in modo da avere un solo trigger comune a tutti i sensori?
Grazie!
tommaso