This shows you the differences between two versions of the page.
pm:prj2024:iotelea:andra.maslaev [2024/05/26 14:56] andra.maslaev [Software Design] |
pm:prj2024:iotelea:andra.maslaev [2024/05/26 14:58] (current) andra.maslaev [Hardware Design] |
||
---|---|---|---|
Line 43: | Line 43: | ||
Schema reprezentată folosind Thinkercad: \\ | Schema reprezentată folosind Thinkercad: \\ | ||
{{:pm:prj2024:iotelea:thinkercad_parksense.jpeg?700|}} \\ | {{:pm:prj2024:iotelea:thinkercad_parksense.jpeg?700|}} \\ | ||
+ | |||
+ | Schema electrica: \\ | ||
+ | {{:pm:prj2024:iotelea:schemaelparksense.jpeg?600|}} | ||
Primul stadiu Hardware: \\ | Primul stadiu Hardware: \\ | ||
Line 56: | Line 59: | ||
Pentru a usura modul de lucru, am creat clasa __Servo__ a controla un servomotor: | Pentru a usura modul de lucru, am creat clasa __Servo__ a controla un servomotor: | ||
- | - Inițializare ușoară: Constructorul clasei și funcția //init()// fac ca începerea să fie simplă. | + | - Inițializare ușoară: Constructorul clasei și funcția //init()// fac ca începerea să fie simplă. \\ |
- | - Control precis: Cu funcția //setDutyCycle(uint8_t grade)//, poziția servomotorului poate fi ajustată cu precizie prin modificarea ciclului activ al semnalului PWM. | + | - Control precis: Cu funcția //setDutyCycle(uint8_t grade)//, poziția servomotorului poate fi ajustată cu precizie prin modificarea ciclului activ al semnalului PWM. \\ |
- | - Economie de resurse: Folosind tipuri de date optimizate (uint8_t, uint16_t) și membri volatile, clasa gestionează resursele eficient și asigură accesul corect la variabilele în contextele întrerupte. | + | - Economie de resurse: Folosind tipuri de date optimizate (uint8_t, uint16_t) și membri volatile, clasa gestionează resursele eficient și asigură accesul corect la variabilele în contextele întrerupte. \\ |
- | - Fiabilitate: Metodele //timerStart(), PWMStart()// și //PWMStop()// se ocupă de operațiile necesare pentru a asigura funcționarea corectă și fiabilă a servomotorului. | + | - Fiabilitate: Metodele //timerStart(), PWMStart()// și //PWMStop()// se ocupă de operațiile necesare pentru a asigura funcționarea corectă și fiabilă a servomotorului. \\ |
{{:pm:prj2024:iotelea:servo_class.jpeg?300|}} | {{:pm:prj2024:iotelea:servo_class.jpeg?300|}} | ||
- | Constructorul clasei inițializează membrul periodic cu valoarea implicită 2000. Prin funcția init(), întreruperile pentru Timer/Counter1 sunt dezactivate pentru a evita interferențele cu funcționarea servomotorului. Apoi, prin funcția timerStart(), sunt configurate setările necesare pentru a genera semnalul PWM pentru controlul servomotorului, inclusiv modul de funcționare PWM, modul de compare match și prescalerul. Funcția setDutyCycle(uint8_t grade) actualizează poziția servomotorului în funcție de unghiul dat ca argument, iar funcțiile PWMStart() și PWMStop() activează și, respectiv, opresc semnalul PWM și gestionarea întreruperilor asociate cu Timer/Counter1. Astfel, am creat o interfață eficientă și robustă pentru controlul servomotorului utilizând semnalul PWM pe platforma Arduino. | + | Constructorul clasei inițializează membrul periodic cu valoarea implicită 2000. Prin funcția //init()//, întreruperile pentru Timer/Counter1 sunt dezactivate pentru a evita interferențele cu funcționarea servomotorului. Apoi, prin funcția //timerStart()//, sunt configurate setările necesare pentru a genera semnalul PWM pentru controlul servomotorului, inclusiv modul de funcționare PWM, modul de compare match și prescalerul. Funcția //setDutyCycle(uint8_t grade)// actualizează poziția servomotorului în funcție de unghiul dat ca argument, iar funcțiile //PWMStart() și PWMStop()// activează și, respectiv, opresc semnalul PWM și gestionarea întreruperilor asociate cu Timer/Counter1. Astfel, am creat o interfață eficientă și robustă pentru controlul servomotorului utilizând semnalul PWM pe platforma Arduino. |