我正在创建超声波测距仪。我目前正在测试传感器以确保其正常工作。我已分别将回显引脚和触发引脚连接到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