Mootor ja kaugusemõõtmise andur

Parking

Töö kirjeldus

Koodi kirjutamine, virtuaalse skeemi loomine koodi testimiseks ja valmis tulemus päris skeemil.

Kasutatud komponeendid

  • Adruino Uno R3 – 1
  • Breadboard Small – 1
  • Servo mootor —1
  • LED — 1
  • Taikisti — 2 (220 Om)
  • Juhe — 20
  • LCD ekraan — 1
  • Potentsiomeeter — 1
  • HC-SR04 — 2

Töö protsess

Auto lähenedes tõkkepuu tõuseb ja ekraanil väheneb vabade kohtade arv. Väljumisel teine andur tõstab taas tõkkepuu. Lamp põleb, kui kohti on veel saadaval.

Ühendamise skeem (www.tinkercad.com)

https://www.tinkercad.com/things/atkEp8hKwsL-neat-jarv-trug?sharecode=_a_jjfFYjItGwtU05VvSFO80MwCHH8sDXA_dRjYdnDc

Programm/kood kommentaridega

#include <Servo.h>
#include <LiquidCrystal.h>
 
#define ECHO_PIN1 10
#define TRIG_PIN1 9
#define ECHO_PIN 8
#define TRIG_PIN 7
 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int LED = 6;
Servo servo;
const int total = 5;
int car = 0;
 
void setup() {
  servo.attach(13);
  Serial.begin(9600);
  servo.write(0);
  pinMode(LED, OUTPUT);
 
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Tere tulemast!");
  delay(2000);
  updateLCD();
 
  pinMode(ECHO_PIN1, INPUT);
  pinMode(TRIG_PIN1, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  pinMode(TRIG_PIN, OUTPUT);
}
 
long readDistance(int trigPin, int echoPin) {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  long duration = pulseIn(echoPin, HIGH);
  long distance = duration * 0.034 / 2;
  Serial.print("Distance from pins ");
  Serial.print(trigPin);
  Serial.print(",");
  Serial.print(echoPin);
  Serial.print(": ");
  Serial.println(distance);
  return distance;
}
 
void led() {
  if (car < total) {
    digitalWrite(LED, HIGH);
  } else {
    digitalWrite(LED, LOW);
  }
}
 
void servo_mootor() {
  servo.write(90);
  delay(3000);
  servo.write(0);
}
 
void updateLCD() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Vabad kohad: ");
  lcd.print(total - car);
}
 
void loop() {
  long entry = readDistance(TRIG_PIN, ECHO_PIN);
  long exit_ = readDistance(TRIG_PIN1, ECHO_PIN1);
 
  if (entry > 0 && entry < 20 && car < total) {
    car++;
    servo_mootor();
    led();
 
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Uks koht hoivatud");
    lcd.setCursor(0, 1);
    lcd.print("Alles: ");
    lcd.print(car);
    delay(5000);
    updateLCD();
  }
 
  if (exit_ > 0 && exit_ < 20 && car > 0) {
    car--;
    servo_mootor();
    led();
 
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Koht vabanes");
    lcd.setCursor(0, 1);
    lcd.print("Hoivatud: ");
    lcd.print(car);
    delay(5000);
    updateLCD();
  }
 
  delay(300);
}

Video

https://drive.google.com/file/d/1Ny4pFWdMPakU1Lw6-mUD1bFyRa1pIx7k/view?usp=sharing

Kasutamisvõimalused tavaelus.

  • Automaatuksed
  • Turvasüsteemid

Lehed: 1 2 3