kõik katse ülesanned olid lisatud eelmises katses 7.1
Aruanne:
Kasutatud funktsioonid ja kirjeldus:
| Funktsioon | Kirjeldus |
|---|---|
getDistance() | Arvutab kauguse ultrahelianduri abil |
openBarrier() | Tõstab tõkkepuu ja muudab LED roheliseks |
closeBarrier() | Langetab tõkkepuu ja muudab LED siniseks |
setRGB(r,g,b) | Seab RGB LED värvi |
displayStatus() | Kuvab LCD-ekraanil vabade kohtade arvu |
displayFull() | Kuvab täisoleku teate ja punase LED |
Töö kirjeldus:
Süsteem jälgib parkla sisse- ja väljasõite kahe ultrahelianduri abil. Kui auto siseneb ja kohti on, tõkkepuu avaneb ja kohtade arv suureneb. Kui auto lahkub, väheneb loendur. Kui parkla on täis, hoiatab süsteem ja ei ava tõkkepuud. RGB LED näitab olekut ning LCD-ekraan kuvab info.
Kasutatud komponendid (riistvara):
- Arduino Uno
- 2x Ultraheliandur HC-SR04
- Servomootor (SG90 vms)
- RGB LED
- LCD-ekraan 16×2 (kasutades LiquidCrystal teeki)
- Takistid ja juhtmed
- Pappmudel süsteemi paigutamiseks
Ühendamise skeem:
link: https://www.tinkercad.com/things/2vMsMnOI927-parking

Programm:
#include <Servo.h>
#include <LiquidCrystal.h>
// LCD ühendused (RS, E, D4, D5, D6, D7)
LiquidCrystal lcd(12, 11, 4, 5, 6, 7);
// Ultraheliandur 1 - SAABUMINE
const int trigPin1 = A3;
const int echoPin1 = A2;
// Ultraheliandur 2 - LAHKUMINE
const int trigPin2 = A1;
const int echoPin2 = A0;
// RGB LED
const int redPin = 2;
const int greenPin = 0;
const int bluePin = 1;
// Servo
Servo barrierServo;
const int servoPin = 10;
// Parkimiskohtade arvestus
const int maxSpots = 5;
int occupiedSpots = 0;
// Kauguse lävi (cm)
const int detectDistance = 20;
void setup() {
lcd.begin(16, 2);
lcd.print("Systeem kaivitub");
// Ultraheli pinid
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
// RGB LED
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
// Servo
barrierServo.attach(servoPin);
barrierServo.write(0); // Tõkkepuu suletud
delay(2000);
lcd.clear();
}
void loop() {
long distance1 = getDistance(trigPin1, echoPin1);
long distance2 = getDistance(trigPin2, echoPin2);
// SAABUMINE
if (distance1 < detectDistance) {
if (occupiedSpots < maxSpots) {
openBarrier();
occupiedSpots++;
delay(3000); // aeg autol sisenemiseks
closeBarrier();
} else {
displayFull();
}
}
// LAHKUMINE
if (distance2 < detectDistance && occupiedSpots > 0) {
occupiedSpots--;
delay(3000); // aeg autol väljumiseks
}
displayStatus();
delay(1000);
}
// --- Funktsioonid ---
long getDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
return duration * 0.034 / 2;
}
void openBarrier() {
barrierServo.write(90); // üles
setRGB(0, 255, 0); // roheline
}
void closeBarrier() {
barrierServo.write(0); // alla
setRGB(0, 0, 255); // sinine
}
void setRGB(int r, int g, int b) {
analogWrite(redPin, r);
analogWrite(greenPin, g);
analogWrite(bluePin, b);
}
void displayStatus() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Vabu kohti: ");
lcd.print(maxSpots - occupiedSpots);
if (occupiedSpots == maxSpots) {
setRGB(255, 0, 0); // punane - täis
}
}
void displayFull() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Parkla on tais!");
setRGB(255, 0, 0);
delay(3000);
}
Video:
https://youtube.com/shorts/nceS8SY72tU?feature=shared
Kasutusvõimalused tavaelus:
- Kortermajade või kontorite parkimissüsteemid
- Eravalduste sissepääsud
- Väikeste parklate automatiseerimine
- Koolide ja haiglate territooriumid

