Differences

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

Link to this comparison view

info2:laboratoare:06 [2017/02/20 12:33]
127.0.0.1 external edit
info2:laboratoare:06 [2021/04/06 15:59] (current)
alexandru.vochescu [Pini Analogici]
Line 1: Line 1:
-===== Laboratorul 06=====+====== Laboratorul 06 - PWM ======
  
 +===== Scop =====
 +  * familiarizarea cu operațiile analogice de output
  
 +===== Cuvinte cheie =====
 +  * pinMode, analogWrite,​ PWM, rezistor
 +  * frecvență,​ uptime, perioadă
 +
 +===== Pulse Width Modulation ===== 
 +
 +Pulse Width Modulation este o metoda de a reduce puterea eliberată de un semnal electric, prin partajarea semnalului în părți discrete.
 +
 +{{:​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 cei din secțiunea "​Analog in", iar cei care au capacitatea de PWM sunt pinii digitali semanlizați cu **"​~"​** în față (de exemplu pinul ~3 sau pinul ~11).
 +
 +==== 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>​
 +
 +===== Utilizarea unui Buzzer ===== 
 +
 +Un Buzzer sau un difuzor piezo este un difuzor care este capabil să redea sunete simple și care se poate conecta extrem de ușor. Avem nevoie de:
 +  * O placă de dezvoltare Arduino
 +  * Un breadboard
 +  * O rezistență de 100 de Ohmi
 +  * Un buzzer
 +
 +Schema de conectare este următoarea:​
 +
 +{{:​info2:​laboratoare:​piezo.png?​600|}}
 +
 +Pentru a putea interacționa din cod cu buzzer-ul avem la dispoziție următoarele funcții:
 +
 +  * Funcția //tone// - redă pe un anumit pin precizat un semnal sonor la o frecvență dată
 +<code c tone>
 +tone(9, 1000); // redă pe pinul digital 9, un semnal sonor la frecvența de 1 KHz 
 +</​code>​
 +
 +  * Funcția //notone// - oprește transmisia de semnal sonor pe un anumit pin
 +<code c notone>
 +noTone(9); // oprește redarea de sunet de pe pinul 9
 +</​code>​
 +
 +<note important>​
 +În Tinkercad, veți găsi în listă Buzzer-ul cu numele **Piezo**.
 +</​note>​
 +
 +===== Exerciții =====
 +Toate exercițiile vor fi realizate pe [[https://​www.tinkercad.com/​| Tinkercad]]
 +  - Folosind un Buzzer redați câte un sunet scurt (un bâzâit) pe placă o dată pe secundă. (**Hint**: delay)
 +  - Adaptați exercițiul anterior pentru a simula o sirenă de poliție folosind și un led rgb.
 +  - 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 3 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 3.
 +  - Implementați sau căutați implementarea redării melodiei "​Twinkle Twinkle Little Star" și parcurgeți codul pentru a-l înțelege.
 +  - Folosind un led pe care îl conectați la placă, modificați implementarea de la exercițiul anterior și asociați fiecărei note o intensitate cu care să fie aprins led-ul atunci când nota respectivă este redată.
 +  - Adaptați exercițiul anterior folosind un LED RGB cu intensități de lumină și combinații de culori diferite alese de voi.
info2/laboratoare/06.1487586835.txt.gz · Last modified: 2019/04/02 14:23 (external edit)
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