Differences

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

Link to this comparison view

pm:prj2025:iotelea:bogdan.fratiman [2025/05/25 20:56]
bogdan.fratiman
pm:prj2025:iotelea:bogdan.fratiman [2025/05/26 12:08] (current)
bogdan.fratiman
Line 59: Line 59:
  
 **Surse şi funcţii implementate:​** ​ **Surse şi funcţii implementate:​** ​
-   * ''​setup()''​ - Inițializează toate perifericele și configurează Timer1 în mod Fast PWM (WGM13:0 = 14) cu TOP = ICR1 = 40000, pentru a genera un semnal PWM de 50 Hz pe pinul OC1A (pin 9), cu un prescaler de 8, potrivit pentru servomotorul SG90. +   * ''​setup()''​ - Inițializează toate perifericele și configurează Timer1 în mod Fast PWM (WGM13:0 = 14) cu TOP = ICR1 = 40000, pentru a genera un semnal PWM de 50 Hz pe pinul OC1A (pin 9), cu un prescaler de 8, potrivit pentru servomotorul SG90
-   * ''​setServoAngle(int angle)''​ - Primește un unghi între 0° și 180°, îl convertește într-un impuls PWM între 750 și 2300 µs, apoi setează valoarea în OCR1A.+    <code java> 
 +TCCR1A = (1 << WGM11); 
 +TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS11); 
 + 
 +ICR1 = 40000; 
 +TCCR1A |= (1 << COM1A1); 
 +</​code>​ 
 +   * ''​setServoAngle(int angle)''​ - Primește un unghi între 0° și 180°, îl convertește într-un impuls PWM între 750 și 2300 µs, apoi setează valoarea în OCR1A
 +<code java> 
 +int pulseWidth = map(angle, 0, 180, 750, 2300); 
 +OCR1A = pulseWidth * 2; 
 +</​code>​
    * ''​handleButtonPress()''​ - Activează rutina de întrerupere pentru buton setând flag-ul ''​buttonPressed''​.    * ''​handleButtonPress()''​ - Activează rutina de întrerupere pentru buton setând flag-ul ''​buttonPressed''​.
-   * ''​loop()''​ - Bucla principală.+<code java> 
 +attachInterrupt(digitalPinToInterrupt(buttonPin),​ handleButtonPress,​ RISING); 
 +    </​code>​ 
 +   * ''​loop()''​ - Bucla principală ​a programuluiSe ocupă de: 
 +      * măsurarea distanței cu senzorul HC-SR04 
 +<code java> 
 +      digitalWrite(trigPin,​ LOW); 
 +      delayMicroseconds(2);​ 
 +      digitalWrite(trigPin,​ HIGH); 
 +      delayMicroseconds(10);​ 
 +      digitalWrite(trigPin,​ LOW); 
 + 
 +      long duration = pulseIn(echoPin,​ HIGH); 
 +      float distance = duration * 0.034 / 2; 
 +</​code>​ 
 +      * actualizarea ecranului LCD 
 +      * verificarea stării butonului 
 +      * acționarea barierei prin apeluri la ''​setServoAngle(...)''​
 </​note>​ </​note>​
  
Line 70: Line 98:
 Link Youtube: Link Youtube:
  
 +https://​youtube.com/​shorts/​j4JR8kcPbFc?​feature=share
  
 +</​note>​
 +
 +===== Concluzii =====
 +
 +Proiectul **Mini Barrier** integrează mai multe componente hardware într-un sistem funcțional,​ de la controlul unui servomotor fără a folosi librăria Servo.h, prin configurarea directă a Timer-ului 1 în mod Fast PWM, până la tratarea butonului prin întrerupere externă și afișarea informațiilor pe un ecran LCD folosind protocolul I2C.
 +Implementarea a demonstrat o aplicare practică a noțiunilor de bază din programarea microcontrolerelor,​ precum și modul în care acestea pot fi combinate într-o aplicație reală și interactivă.
 +
 +===== Jurnal =====
 +
 +<note tip>
 +**M1 – Documentație** - Am început redactarea paginii de OCW prin completarea următoarelor secțiuni: descriere, introducere,​ schema bloc și lista/​descrierea componentelor hardware.
 +
 +**M2 – Hardware** - Am adăgat schema electrică pe pagina de wiki și am realizat montajul parțial al proiectului atât hardware cât și software: LED-uri, buton, LCD.
 +
 +**M3 - Software** - Am completat montajul și după ce m-am asigurat că toate componentele funcționează și logica state machine-ului este corectă am aplicat cunoștințele din laboratoare:​ Timer1 cu Fast PWM pentru servo, întreruperi pentru buton, I2C pentru LCD.
 </​note>​ </​note>​
  
Line 79: Line 123:
 </​note>​ </​note>​
  
-<​note ​tip>+<​note ​important>
 Resurse utilizate: Resurse utilizate:
  
pm/prj2025/iotelea/bogdan.fratiman.1748195805.txt.gz · Last modified: 2025/05/25 20:56 by bogdan.fratiman
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