私は超音波距離検出器の作成に取り組んでいます。私は現在、センサーが適切に機能していることを確認するためにセンサーをテストしています。エコーピンとトリガーピンをそれぞれPC4とPC5に接続しました。このコードを実行すると理想的には私のディスプレイに6を送るでしょう。しかし、それは0を表示しています。これは、コードがセンサーと正しくインターフェースしていないと私に信じさせます。助けてください。AVRの超音波センサー
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
void DisplayIt(int i);
int main(void)
{
while(1)
{
DDRC = 0xFF;
int i = 0;
PORTC = 0b00000000;
_delay_us(2);
PORTC = 0b00100000;
_delay_us(10);
PORTC = 0x00;
DDRC = 0x00;
if (PINC == 0b00010000)
{
i = 6;
}
DisplayIt(i);
}
}
:ここ
は、コードのですか? –
センサーの種類を示す質問を編集する必要があります。それはHC-SR04ですか?その場合、あなたは早すぎるエコーを読んでいます。タイミング図を参照してください。パルスをトリガする。パルスが送信されるのを待ちます。ピンの高さの時間。パルスが送信される前にピンを読み取っています。それがまだ低い理由です。利用可能なこのセンサーのチュートリアルとコードサンプルがたくさんあります。 Sparkfunには、データシートだけでなく、Arduinoの簡単なコードもあります。 – UncleO