Ход работы

  1. Изучили материал
  2. Сделали схему и задали значения переменных, массивов
#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
Макетка
Arduino UNO R3

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

Возможности применения в жизни

Датчик расстояния можно применить для:

  • В основном применяется в робототехнике

Видео работы

Картинка ноты сломалась в жизни