vegetablu
Posts: 2
Joined: Sat Dec 14, 2019 11:12 am

Ultrasuoni hc-sr04 in linguaggio C raspberry

Sat Dec 14, 2019 2:02 pm

Buongiorno a tutti,
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:
Configurazione raspberry-sensore ultrasuoni.PNG
Configurazione raspberry-sensore ultrasuoni.PNG (32.81 KiB) Viewed 370 times
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;
}

User avatar
joan
Posts: 14935
Joined: Thu Jul 05, 2012 5:09 pm
Location: UK

Re: Ultrasuoni hc-sr04 in linguaggio C raspberry

Sat Dec 14, 2019 2:31 pm

wiringPiSetup() -> wiringPiSetupGpio()

vegetablu
Posts: 2
Joined: Sat Dec 14, 2019 11:12 am

Re: Ultrasuoni hc-sr04 in linguaggio C raspberry

Thu Dec 19, 2019 12:33 pm

joan wrote:
Sat Dec 14, 2019 2:31 pm
wiringPiSetup() -> wiringPiSetupGpio()
Manca la funzione pulseIn() di arduino che però ho risolto.
Grazi infinite

Return to “Italiano”