Форум по микроконтроллерам: датчик HC-SR04 - Форум по микроконтроллерам

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

датчик HC-SR04

#1 Пользователь офлайн   Danil_2002 

  • Прибывший
  • Группа: Пользователи
  • Сообщений: 1
  • Регистрация: 01 Июнь 19

Отправлено 01 Июнь 2019 - 02:26

Добрый день!

Необходимо получить расстояние с помощью ультразвукового датчика HC-SR04, но возникают проблемы. Использую МК atmel328p.
Trig - 2 пин платы Arduino uno(PD2)
Echo - 3 (PD3)

void T1_init()
{
  TCCR1A = 0;
  TCCR1B = (1 << CS12)|(1 << CS10); // МК/1024, Normal
  TCNT1 = 0;
}
void pin_init()
{
  DDRD = 1 << PD2; // пин 2 на выход // Trig
}
void init_HCSR04()
{
  PORTD = 1 << PD2;
  _delay_us(10); // Подаем сигнал на trig для запуска датчика
  PORTD &=~ 1 << PB2; // Перестаем подавать сигнал 
  T1_init(); // Запускаем таймер
  while((PIND >> 3)&1){}; // Ожидаем низкий уровень на echo
  count_T1 = TCNT1; // Считываем количество тактов таймера
  Serial.println(count_T1);
}
int main()
{
  Serial.begin(9600);
  pin_init();
  //init_HCSR04();
  while(1)
  {
    init_HCSR04();
    //_delay_ms(1000);
  }
}



Пока что я пытаюсь подсчитать количество тактов, потом можно будет вычислить время и соответственно расстояние.

Но вот что выдает моя программа:


35
0
0
0
0
0
34
0

Эти значения не правдоподобны. Например если я закрываю приемник ультразвукового датчика пальцем, то значения все равно есть. Или если датчик вообще отключить. (Значения разные, они не всегда повторяются)

В чем я ошибся?
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей