This shows you the differences between two versions of the page.
info2:laboratoare:03 [2019/03/18 16:20] george.stoica0310 |
info2:laboratoare:03 [2021/03/23 14:02] (current) ioana_maria.culic [PWM - Old] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Laboratorul 03 - PWM ===== | + | ===== PWM ===== |
===== Scop ===== | ===== Scop ===== | ||
Line 13: | Line 13: | ||
{{:info2:duty_cycle_examples.png?400|200}} | {{:info2:duty_cycle_examples.png?400|200}} | ||
+ | |||
+ | Fizic, pentru a reduce puterea eliberată de un Arduino, îi spunem să elibereze 5v în eșantioane de timp. Astfel, dacă vrem o medie de putere eliberată de 2.5V, setăm pinul respectiv să elibereze 5v, jumătate din timp. | ||
+ | |||
+ | ==== Pini Analogici ==== | ||
+ | |||
+ | Spre deosebire de pinii digitali care pot elibera doar 0 sau 5v, pinii analogici pot citi sau scrie valori mai variate (folosite pentru finețea măsurătorii). Valorile de scriere pot fi între 0-255 care sunt mapate pentru 0 - 5v. | ||
+ | |||
+ | Pinii analogici sunt semnalați cu **"~"**. | ||
+ | |||
+ | ==== Analog Write ==== | ||
+ | |||
+ | Pentru a folosi Pulse Width Modulaton (PWM) folosim **analogWrite** în loc de **digitalWrite** | ||
+ | |||
+ | <code arduino.c> | ||
+ | |||
+ | void setup() { | ||
+ | pinMode(PINUL_MEU, OUTPUT); | ||
+ | } | ||
+ | void loop() { | ||
+ | analogWrite(PINUL_MEU, 127); //Aprindem pinul la jumătate in intensitatea maximă | ||
+ | delay(3000); // Așteaptă 3 secunde | ||
+ | analogWrite(PINUL_MEU, 0); // Ledul este stins | ||
+ | | ||
+ | analogWrite(PINUL_MEU, 255); //Aprindem pinul la intensitatea maximă | ||
+ | delay(3000); // Așteaptă 3 secunde | ||
+ | analogWrite(PINUL_MEU, 0); // Ledul este stins | ||
+ | |||
+ | analogWrite(PINUL_MEU, 68); //Aprindem pinul la un sfert din intensitatea maximă | ||
+ | delay(3000); // Așteaptă 3 secunde | ||
+ | analogWrite(PINUL_MEU, 0); // Ledul este stins | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ===== Exerciții ===== | ||
+ | Toate exercițiile vor fi realizate pe [[https://www.tinkercad.com/| Tinkercad]] | ||
+ | - Folosind un **for** aprindeți un led de la intensitate mică, la maxim, la din nou intensitate mică și în final stins complet folosind **analogWrite** și **delay**. | ||
+ | - Folosind o funcție care primește doi parametri ce reprezintă **pini pentru led-uri**. Porniți cu un led aprins maxim și unul stins, pe cel stins aprindeți-l pe o perioadă de timp similar cu exercițiul 1 iar pe cel aprins, stingeți-l pe o perioadă de timp. | ||
+ | - Parcurgeți o serie de minim 5 led-uri și aplicați pe fiecare, principiul de la exercițiul 1. |