Подключение дальномера HC-SR04 к ATtiny2313

Подключение дальномера HC-SR04 к ATtiny2313В данной статье пойдет речь о том, как подключить ультразвуковой дальномер HC-SR04 к ATtiny2313 и отображать данные на ЖКИ-дисплее 16×1 на базе HD44780. Также сделал пример программы для отправки результата по UART. Для приёма я использовал Terminal 1.9b и преобразователь USB-UART на базе PL2303HX. Для проверки работоспособности программы и схемы я использовал Proteus 7. Проект в Atmel Studio 7 целиком вы сможете скачать по ссылке в конце статьи. При прошивке микроконтроллера ATtiny2313 не забудьте менять фьюзы: CKSEL3…0 = 0100 – Внутренний тактовый генератор — частота 8 МГц и поставить галочку (т.е. отключить) на SCKDIV8 – деление тактовой частоты на 8.

Схема подключения TB378 и HC-SR04 к ATtiny2313

Для начала сделал программу для получения данных по UART.

Подключение дальномера HC-SR04 к ATtiny2313 вывод в Terminal по UART (1)

Пример программы в Atmel Studio 7

main.c

#define F_CPU 8000000UL

#define BAUD 9600
#define MYUBRR F_CPU/16/BAUD-1

#include <avr/io.h>
#include <util/delay.h>
#include <string.h>
#include <stdlib.h>
#include "uart.h"
#include "hcsr04.h"

inline void prepareText(char * text, int distance) {
  char textDistance[5];
  itoa(distance, textDistance, 10);
  strcat(text, "D = ");
  strcat(text, textDistance);
  strcat(text, "mm");
}

int main(void) {
  int distance;
  char text[17];
  USARTInit(MYUBRR);
  while (1) {
    text[0] = '\0';
    distance = getDistance();
    prepareText(text, distance);
    USARTTransmitStringLn(text);
    _delay_ms(333);
  }
}

Краткое описание

Вместо функции sprintf() сделал собственную функцию для преобразования числа в строку, потому что  sprintf() жрёт больше половины флеш памяти контроллера.
inline void prepareText(char * text, int distance) Функция prepareText преобразует целое число distance (расстояние) в строку и добавляет строку в text.
itoa(distance, textDistance, 10); Функция itoa преобразует целое число distance в строку textDistance в формате 10.
strcat(text, textDistance); Объединение строк. Функция добавляет textDistance строки srcptr в конец строки text.

Результат

Так как в Протеус нету HC-SR04, я его просто нарисовал. На первой картинке результат в -1 означает что датчик HC-SR04 не подключён или Echo не отправил сигнал.

Подключение дальномера HC-SR04 к ATtiny2313 вывод в Terminal по UART (2)

После прошивки реального ATtiny2313, подключил к компьютеру и вот результат.

Подключение дальномера HC-SR04 к ATtiny2313 вывод в Terminal по UART (3)

Схема подключения LCD HD44780 и HC-SR04 к ATtiny2313

После того, как убедился, что датчик HC-SR04 и программа работают правильно, для вывода результата подключил однорядный ЖК на 16 символов — HD44780.

Подключение дальномера HC-SR04 к ATtiny2313 вывод на LCD (1)

Пример программы в Atmel Studio 7

main.c

#define F_CPU 8000000UL

#include <avr/io.h>
#include <util/delay.h>
#include <string.h>
#include <stdlib.h>
#include "hcsr04.h"
#include "LCD.h"

inline void prepareText(char * text, int distance) {
  char textDistance[5];
  itoa(distance, textDistance, 10);
  strcat(text, "D=");
  strcat(text, textDistance);
  strcat(text, "mm");
}

int main(void) {
  _delay_ms(100);
  lcdInit();
  lcdClear();
  lcdSetDisplay(LCD_DISPLAY_ON);
  lcdSetCursor(LCD_CURSOR_OFF);

  int distance;
  char text[17];
  while (1) {
    text[0] = '\0';
    distance = getDistance();
    prepareText(text, distance);
    lcdClear();
    lcdGotoXY(0, 0);
    lcdPuts(text);
    _delay_ms(333);
  }
}

Результат

В Протеусе всё работает, текст отображается правильно.

Подключение дальномера HC-SR04 к ATtiny2313 вывод на LCD (2)

Скачать файлы

ATtiny2313 + HC-SR04 + LCD — Atmel Studio 7 проект
ATtiny2313 + HC-SR04 + UART — ISIS Professional (Proteus) проект
ATtiny2313 + HC-SR04 + LCD — ISIS Professional (Proteus) проект
ATtiny2313 + HC-SR04 + UART — Atmel Studio 7 проект
ATtiny2313A даташит на Русском
ATtiny2313A datasheet (EN)

Купить HC-SR04 на AliExpress


Купить ATTINY2313A на Aliexpress


Купить LCD1602 HD44780 на Aliexpress

Похожие записи

Комментарии 52

Добавить комментарий для High Performance 222 Remington Ammo 50 Grain 222 Ammo Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *