ho un raspberry pi 3 e non riesco a far funzionare il sensore ad ultrasuoni hc-sr04 tramite linguaggio C. Testato con altri linguaggi, testato con arduino, ma col C non va. Il mio pensiero è che sbaglio sicuramente tra:
- cast/conversione lettura;
- la funzione read andrebbe sostituita con il pulseIn di arduino ma qui non funge.
Il sensore è alimentato a 5V, ma nella porta echo ne arrivano 3.3V grazie al partitore di tensione, come in figura: Allego il codice e confido in voi. Sono 2 giorni che ci sbatto la testa. Grazie
Code: Select all
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <wiringPi.h>
#include <pthread.h>
const int triggerPort = 23;
const int echoPort = 24;
int main(){
wiringPiSetup () ;
pinMode(triggerPort,OUTPUT);
pinMode(echoPort,INPUT);
while(1){
digitalWrite(triggerPort,0);
digitalWrite(triggerPort,1);
// Dormi per 10 micro secondi
delayMicroseconds(10);
digitalWrite(triggerPort,0);
// PulseIn non funziona con la libreria wiringPi
// long durata = pulseIn(echoPort, 1);
long durata = digitalRead(echoPort);
long distanza = 0.034 * durata / 2;
printf("Distanza= ");
//dopo 38ms è fuori dalla portata del sensore
if( durata > 38000 ){
printf("Fuori portata\n");
}
else{
float dist = (long) distanza;
printf("%f cm\n", dist);
//printf(" cm\n");
}
sleep(1);
}
return 0;
}