Подключение дальномера 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

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

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

Добавить комментарий

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