// Подключаем библиотеку для работы с LCD
#include <LiquidCrystal.h>
// Инициализируем объект-экран, передаём использованные
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
float cm;
float m;
float inches;
// Функция чтения данных с датчика
long readUltrasonicDistance(int triggerPin, int echoPin)
{
pinMode(triggerPin, OUTPUT); // сброс Trig
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH); // установка TRIG на 10 мкс
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT); // измерение длительности ECHO
return pulseIn(echoPin, HIGH);
}
const int pinRed = 6;
const int pinGreen = 5;
const int pinBlue = 4;
void setup()
{
pinMode(pinRed, OUTPUT);
pinMode(pinGreen, OUTPUT);
pinMode(pinBlue, OUTPUT);
lcd.begin(16, 2);
lcd.clear();
}
void loop()
{
cm = readUltrasonicDistance(3, 2) / 58;
m = cm / 100;
inches = (cm / 2.54);
lcd.setCursor(0, 0);
lcd.print("Inches");
lcd.setCursor(4, 0);
lcd.setCursor(12, 0);
lcd.print("m");
lcd.setCursor(1, 1);
lcd.print(inches, 1);
lcd.setCursor(11, 1);
lcd.print(m, 1);
lcd.setCursor(14, 1);
if (m < 1)
{
delay(100);
digitalWrite(pinRed, LOW);
digitalWrite(pinGreen, LOW);
digitalWrite(pinBlue, LOW);
delay(100);
digitalWrite(pinRed, HIGH);
}
else if (m < 2)
{
delay(500);
digitalWrite(pinRed, LOW);
digitalWrite(pinGreen, LOW);
digitalWrite(pinBlue, LOW);
delay(500);
digitalWrite(pinRed, HIGH);
digitalWrite(pinGreen, HIGH);
}
else if (m < 4)
{
digitalWrite(pinRed, HIGH);
digitalWrite(pinGreen, HIGH);
digitalWrite(pinBlue, HIGH);
}
else
{
digitalWrite(pinRed, LOW);
digitalWrite(pinGreen, LOW);
digitalWrite(pinBlue, LOW);
}
delay(100);
lcd.clear();
}