Ход работы
- Изучили материал
- Сделали схему и задали значения переменных, массивов
#include <Servo.h> //библиотека серво двигателя
#include <LiquidCrystal.h> //библиотека LCD экрана
const int rs = 12, e = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, e, d4, d5, d6, d7);
//пины датчика расстояния
#define trigger_sensor_pin 9
#define echo_sensor_pin 8
//пин серво
#define servo_pin 7
//пины rgb LED
const int GREEN_PIN = 10;
const int BLUE_PIN = 1;
const int RED_PIN = 13;
//серво двигатель
Servo servo;
//количество монет
int total_coins = 0;
//длительность и дистанция
int duration, distance;
void setup()
{
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
pinMode(trigger_sensor_pin, OUTPUT);
pinMode(echo_sensor_pin, INPUT);
servo.attach(servo_pin);
Serial.begin(9600);
}
3. Написали вспомогательную функцию
void colors_rgb()
{
//генерируются рандомные цвета
int red = random(0,255);
int green = random(0,255);
int blue = random(0,255);
analogWrite(GREEN_PIN, green);
analogWrite(BLUE_PIN, blue);
analogWrite(RED_PIN, red);
}
4. Далее все применялось и писалось в основном цикле
void loop()
{
delay(100);
//для точности
digitalWrite(trigger_sensor_pin,LOW);
delayMicroseconds(2);
digitalWrite(trigger_sensor_pin,HIGH);
delayMicroseconds(10);
digitalWrite(trigger_sensor_pin,LOW);
//расчет длительности сигнала
duration = pulseIn(echo_sensor_pin, HIGH);
//расчет дистанция по формуле
distance = duration / 58;
//вывод информации на LCD экран
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
lcd.setCursor(3,0);
lcd.print("Coins:");
lcd.setCursor(10,0);
lcd.print(total_coins);
if (distance > 15) //если дистанция больше 15, то
{
servo.write(0); //принимает позицию 0
delay(1500);
total_coins++; //прибавляется монета
colors_rgb(); //запускается функция
delay(1500);
}
else
{
servo.write(90); //принимает позицию 90
}
}
Как работает копилка
Если расстояния до сенсора меньше 10 см, то открывается копилка, загорается LED и прибавляется монета, после копилка закрывается
Ссылка на проект
https://www.tinkercad.com/things/fjbmcZAqex6-funky-fulffy/editel?sharecode=ZztqDLV07Nxfk-Z5VV3zGqu2rm0Sn1l5nFv8IH0_Dp8
Компоненты
- RGB LED – 1
- Резистор 220 Ом – 4
- Серво двигатель – 1
- LCD 1602 – 1
- Датчик расстояния – 1


Cхема подключения компонентов к плате

Возможности применения в жизни
Датчик расстояния можно применить для:
- В основном применяется в робототехнике
