This is an old revision of the document!
Proiectul constă în dezvoltarea unui sistem de asistență la parcare, care utilizează senzori pentru detectarea obstacolelor din mediul înconjurător și oferă feedback vizual și auditiv șoferului pentru a-l ajuta să parcheze în condiții de siguranță. Ideea de la care am pornit acest proiect este chiar cea mai esentiala optiune pe care o poate avea un autovehicul, senzorul de parcare.
1x Arduino UNO 2x Senzor de distanta HC-SR04 1x Buzzer 1x Ecran LCD 1x LED 1x Breadboard 1x Rezistenta 430Ω
Descrierea aplicației (firmware):
Această aplicație este destinată unui sistem de asistență la parcare pentru un vehicul. Utilizează un ecran LCD pentru afișarea distanțelor măsurate de senzorii ultrasunete montați în față și în spatele vehiculului. Un buzzer și un LED sunt folosite pentru a avertiza șoferul în cazul în care există un obstacol la o distanță periculoasă.
Cod:
```cpp #include <Wire.h> #include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);
const int trigPinFront = 13; const int echoPinFront = 12; const int trigPinBack = 4; const int echoPinBack = 3;
float distanceFront, distanceBack;
#define speakerPin 9 #define ledpin 10
unsigned long previousMillis = 0; const long interval = 1000;
void setup() {
Serial.begin(9600); pinMode(ledpin, OUTPUT); lcd.begin(); lcd.backlight(); lcd.setCursor(0, 0); pinMode(speakerPin, OUTPUT); digitalWrite(speakerPin, LOW); pinMode(trigPinFront, OUTPUT); pinMode(echoPinFront, INPUT); pinMode(trigPinBack, OUTPUT); pinMode(echoPinBack, INPUT);
}
float getDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); long duration = pulseIn(echoPin, HIGH); float distance = (duration / 2.0) * 0.0343; return distance;
}
void loop() {
unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; distanceFront = getDistance(trigPinFront, echoPinFront); distanceBack = getDistance(trigPinBack, echoPinBack); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Front: "); lcd.print(distanceFront); lcd.print(" cm"); lcd.setCursor(0, 1); lcd.print("Back: "); lcd.print(distanceBack); lcd.print(" cm"); }
float minDistance = min(distanceFront, distanceBack);
if (minDistance <= 20) { int ledIntensity = map(minDistance, 1.67, 20, 255, 1); int buzzerSpeed = map(minDistance, 1, 20, 100, 500); unsigned long beepEnd = millis() + interval; while (millis() < beepEnd) { analogWrite(ledpin, ledIntensity); analogWrite(speakerPin, 255); delay(buzzerSpeed / 2); analogWrite(speakerPin, 0); analogWrite(ledpin, 0); delay(buzzerSpeed / 2); } } else { digitalWrite(speakerPin, LOW); analogWrite(ledpin, 0); }
} ```
Fişierele se încarcă pe wiki folosind facilitatea *Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul *:pm:prj20??:c?* sau *:pm:prj20??:c?:nume_student** (dacă este cazul). *Exemplu:* Dumitru Alin, 331CC → *:pm:prj2022:cc:dumitru_alin*.