Собрать мини проект из ранее изученных элементов: ультразвукового дальномера и LCD-дисплея, написать программу, которая будет реализовывать следующие действия: на экран должно выводиться сообщение только при определенном лимите состояния, если расстояние больше лимита, то экран не должен показывать ничего.
Описание схемы:
Необходимые материалы:
Возьмите все необходимые материалы. Удобно расположите плату беспаячного монтажа и микроконтроллер. Аккуратно, без сильных нажимов, во избежании поломки материалов, подсоедините каждый элемент как показано на схеме. Внимательно проверьте правильно ли подключены элементы, проверьте полярность элементов, посмотрите заземлены ли цепь.
Схема лабораторной установки:
Макетная плата:
Принципиальная схема:
Задание на программирование лабораторной установки:
При работе на собранной установке, мы должны иметь возможность считывать измеряемое расстояние и выводить измеренное значение на дисплей LCD, такжи при достижении определенного лимит расстояния сообщение с экрана должно пропадать(это можно контролировать через последовательный порт).
Алгоритм написания программы:
Фото/видео отчет по выполненному заданию:
Программный код:
#include <LiquidCrystal.h>
LiquidCrystal _lcd1(12, 11, 2, 3, 4, 5);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
int _disp2oldLength = 0;
int _ultrasonic1O = 0;
unsigned long _ultrasonic1P = 0UL;
int _disp1oldLength = 0;
void setup()
{
_lcd1.begin(16, 2);
pinMode(9, OUTPUT);
pinMode(8, INPUT);
}
void loop()
{
if (_isNeedClearDisp1) {
_lcd1.clear();
_isNeedClearDisp1= 0;
}
if (abs((millis() - _ultrasonic1P))>100) {
digitalWrite(9, HIGH);
delayMicroseconds(10);
digitalWrite(9, LOW);
int _ultrasonicTemp=(pulseIn(8, HIGH))/58;
if( _ultrasonicTemp<300) {
_ultrasonic1O=_ultrasonicTemp;
}
_ultrasonic1P=millis();
}
if (((_ultrasonic1O)) >= (30)) {
_dispTempLength1 = ((String("an 30 sm."))).length();
if (_disp2oldLength > _dispTempLength1) {
_isNeedClearDisp1 = 1;
}
_disp2oldLength = _dispTempLength1;
_lcd1.setCursor(0, 1);
_lcd1.print((String("an 30 sm.")));
}
else {
if (_disp2oldLength > 0) {
_isNeedClearDisp1 = 1; _disp2oldLength = 0;
}
}
if (((_ultrasonic1O)) >= (30)) {
_dispTempLength1 = ((String("Distance more th"))).length();
if (_disp1oldLength > _dispTempLength1) {
_isNeedClearDisp1 = 1;
}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(int((16 - _dispTempLength1)/2), 0);
_lcd1.print((String("Distance more th")));
}
else {
if (_disp1oldLength > 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
}
Реализация в визуальной среде разработки Flprog:
Выполните творческое задание:
С помощью дополнительных элементов, соберите установку и реализуйте на ней программу, которая будет выполнять следующие действия: при достижении потенциометром половины от максимального значения сопротивления на 4 секунды должно появиться звуковое оповещение, о том что включена дальномерная установка. При значении значении расстояния больше 1 метра устновка должна выключаться.
Замечания к работе:
Заключение: Я выполнил лабораторную работу в которой требуется собрать мини-проект включающий в себя LCD-дисплей и ультразвуковой дальномер. собрал схему с их включением. Написал программный код в Arduino IDE, реализующий задание лабораторной работы. Также сделал модель программы в визуальной среде разработки flprog.