私は、受信した値を cm として PIC18f2520 用の HC SR04 の単純なコードを 1 つ開発しています。状況は、私は間違った値を受け取っており、近似で変化していません。センサーは意味をなさない値を与えます。内部水晶 8Mhz、16 ビットの TIMER1、1:8 プリスケーラ、および TMR1CS =0 = 内部クロック (FOSC/4) を使用しています。ms と us の遅延はコンパイラ コードです。また、TRIGER ピンは RA2 で、ECHO ピンは RA5 です。誰かが私を助けることができますか?
#define TRIG RA2
#define echo RA5
void main(void)
{
unsigned char duraca=0,duraca1=0,duraca2=0,duraca3=0;
unsigned char distanci=0;
int i;
Config_micro();
serialBegin();
TRIG=0;
TMR1L=0;
TMR1H=0;
while(1)
{
TRIG=1;
DelayUs(10);
TRIG=0;
while(echo==1);
TMR1ON = 1;
while(echo==0);
TMR1ON = 0;
duraca1=(TMR1L+(TMR1H<<8));
duraca2=(duracao1<<2);
distanci=((duraca1)/58);
printf("distancia: %2d cm\n\r",distanci);
__delay_ms(90);
__delay_ms(90);
__delay_ms(90);
}
}