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 21:19]
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>​ </​note>​
pm/prj2025/iotelea/bogdan.fratiman.1748197144.txt.gz · Last modified: 2025/05/25 21:19 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