В данной статье пойдет речь о том, как подключить ультразвуковой дальномер 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.
- 1 Схема подключения TB378 и HC-SR04 к ATtiny2313
- 2 Пример программы в Atmel Studio 7
- 3 Схема подключения LCD HD44780 и HC-SR04 к ATtiny2313
- 4 Пример программы в Atmel Studio 7
- 5 Скачать файлы
- 6 Купить HC-SR04 на AliExpress
- 7 Купить ATTINY2313A на Aliexpress
- 8 Купить LCD1602 HD44780 на Aliexpress
- 9 Похожие записи
Схема подключения TB378 и HC-SR04 к ATtiny2313
Для начала сделал программу для получения данных по UART.
Пример программы в 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 не отправил сигнал.
После прошивки реального ATtiny2313, подключил к компьютеру и вот результат.
Схема подключения LCD HD44780 и HC-SR04 к ATtiny2313
После того, как убедился, что датчик HC-SR04 и программа работают правильно, для вывода результата подключил однорядный ЖК на 16 символов — HD44780.
Пример программы в 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); } }
Результат
В Протеусе всё работает, текст отображается правильно.
Скачать файлы
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)
Very good write ups, Thank you!
You expressed this fantastically!
Thank you, Useful information!
We would like to thank you all over again for the lovely ideas you gave
Janet when preparing her post-graduate research as well as, most importantly, with regard to providing each of the ideas in one blog post.
Provided that we had known of your web site a year ago, we may have been rescued from the unnecessary measures we were employing.
Thank you very much. sex shop
Very good article. I am going through many of these issues
as well..
On thhe web casinos employ state-of-the-art security measures to detect and avert any
fraudulent activities.
My site … Online Casino Games (bitcoin-review.net)
Somebody necessarily assist to make seriously posts
I would state. That is the very first time I frequented your website page and to this point?
I amazed with the research you made to make this actual submit incredible.
Wonderful job!
Very good info. Lucky me I discovered your blog by accident (stumbleupon).
I’ve book-marked it for later!
Account activation is actually the method of verifying your Microsoft Windows 11 activation code, as well as it’s the entrance to uncovering a wide variety of enhanced functions. With a valid license key, users may personalize their pcs along with powerful gizmos, appreciate the revamped Start menu, and experience the enriched multitasking capacities that Windows 11 needs to use, https://beginnertriathlete.com/discussion/view-profile.asp?action=view&uid=586354.
Hi there, yup this paragraph is truly pleasant and I have learned lot of things from it on the topic of blogging.
thanks.
Thanks for sharing your thoughts about кракен
даркнет. Regards