Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:ccontasel:dragos.serban1411 [2024/05/27 00:10]
dragos.serban1411 [Software Design]
pm:prj2024:ccontasel:dragos.serban1411 [2024/05/27 00:25] (current)
dragos.serban1411 [Concluzii]
Line 52: Line 52:
  
 Funcții implementate:​ Funcții implementate:​
-  * setup(): configurează pinii de intrare și de ieșire, atașează întreruperi butoanelor pentru a detecta rapid apăsările și senzorilor IR pentru a detecta schimbările,​ atașează cele două servomotoare și le setează unghiul, inițializează LCD-ul.+  * setup(): configurează pinii de intrare și de ieșire, atașează întreruperi butoanelor pentru a detecta rapid apăsările și senzorilor IR pentru a detecta schimbările,​ atașează cele două servomotoare și le setează unghiul, inițializează LCD-ul. Folosesc conceptul de GPIO prin interacțiunea cu aceste componente electronice de input / output.
   * button1ISR() și button2ISR():​ setează flagurile corespunzătoare celor două butoane atunci când sunt apăsate.   * button1ISR() și button2ISR():​ setează flagurile corespunzătoare celor două butoane atunci când sunt apăsate.
   * irSensor1ISR() și irSensor2ISR() sunt rutine de întrerupere care detectează schimbarea senzorilor. Dacă senzorii nu detectează niciun vehicul, bariera va fi închisă după un timp de două secunde (am folosit timere — funcția millis()), pentru a lăsa suficient timp trecerii vehiculului. Dacă bariera detectează o mașină, atunci se deschide. De asemenea se ține incrementează / decrementează numărul de mașini care se află în parcare la momentul curent.   * irSensor1ISR() și irSensor2ISR() sunt rutine de întrerupere care detectează schimbarea senzorilor. Dacă senzorii nu detectează niciun vehicul, bariera va fi închisă după un timp de două secunde (am folosit timere — funcția millis()), pentru a lăsa suficient timp trecerii vehiculului. Dacă bariera detectează o mașină, atunci se deschide. De asemenea se ține incrementează / decrementează numărul de mașini care se află în parcare la momentul curent.
   * measureDistance(int trigPin, int echoPin) măsoară distanța cu ajutorul senzorului ultrasonic. Trimite un puls de 10 ms pe pinul de trigger și măsoară durata de timp până la ecou. Calculează distanța în cm și o returnează.   * measureDistance(int trigPin, int echoPin) măsoară distanța cu ajutorul senzorului ultrasonic. Trimite un puls de 10 ms pe pinul de trigger și măsoară durata de timp până la ecou. Calculează distanța în cm și o returnează.
   * openBarrier() deschide bariera (90 grade) și closeBarrier() o închide (0 grade).   * openBarrier() deschide bariera (90 grade) și closeBarrier() o închide (0 grade).
-  * increaseLedIntensity() crește treptat folosind PWM intensitatea ledului, iar decreaseLedIntensity() o scade treptat prin aceeași metodă. +  * increaseLedIntensity() crește treptat ​intensitatea  ​folosind PWM, iar decreaseLedIntensity() o scade treptat prin aceeași metodă. 
-  * moveElevatorUp() și moveElevatorDown() controlează mișcarea liftului (sus / jos). Pentru urcare, liftul funcționează până când senzorul ultrasonic măsoară o distanță de 3 cm între tavanul încăperii cu elevatorul și lift. Pentru coborâre, acesta se mișcă până când distanța crește peste 13.5 cm. Este calculată înălțimea curentă ​a liftului ​și afișată pe display-ul cu I2C. Intensitatea led-ului este maximă atunci când liftul este la parter (indicând etajul curent) și minimă atunci când liftul este la etajul superior.+  * moveElevatorUp() și moveElevatorDown() controlează mișcarea liftului (sus / jos). Pentru urcare, liftul funcționează până când senzorul ultrasonic măsoară o distanță de 3 cm între tavanul încăperii cu elevatorul și lift. Pentru coborâre, acesta se mișcă până când distanța crește peste 13.5 cm. Este calculată înălțimea curentă ​la care se află liftul ​și este afișată pe display-ul cu I2C. Intensitatea led-ului este maximă atunci când liftul este la parter (indicând etajul curent) și minimă atunci când liftul este la etajul superior.
   * loop() verifică dacă a trecut o secundă de când a trecut ultima mașină și închide bariera. Crește contorul mașinilor, actualizează LCD-ul, verifică să nu se fi atins numărul maxim de mașini din parcare.   * loop() verifică dacă a trecut o secundă de când a trecut ultima mașină și închide bariera. Crește contorul mașinilor, actualizează LCD-ul, verifică să nu se fi atins numărul maxim de mașini din parcare.
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
Line 68: Line 68:
  
 ===== Concluzii ===== ===== Concluzii =====
 +A fost un proiect interesant deoarece am învățat să construiesc un proiect hardware complex utilizând platforma Arduino. Am învățat să utilizez și să integrez diferite tipuri de senzori (IR, ultrasonic) în proiectul meu, să colectez și procesez date, să controlez servomotoare de mai multe tipuri, mi-am îmbunătățit cunoștințele despre întreruperi,​ PWM, configurarea display-urilor LCD.
 ===== Download ===== ===== Download =====
  
Line 85: Line 85:
  
 <​note>​ <​note>​
 +Utilizare display LCD și LiquidCrystal_I2C.h:​
 +
 +https://​youtu.be/​CvqHkXeXN3M?​si=i-s5WMKo-jRrLlJO
 +
 Estimare distanță cu ajutorul senzorului ultrasonic: Estimare distanță cu ajutorul senzorului ultrasonic:
  
pm/prj2024/ccontasel/dragos.serban1411.1716757814.txt.gz · Last modified: 2024/05/27 00:10 by dragos.serban1411
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0