Я работаю над созданием ультразвукового дальномера. В настоящее время я тестирую датчик, чтобы убедиться, что он работает правильно. Я подключил эхо-штырь и триггерный штырь к 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