This is an old revision of the document!


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.

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

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
}

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:

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ă
tone
tone(9, 1000); // redă pe pinul digital 9, un semnal sonor la frecvența de 1 KHz 
  • Funcția notone - oprește transmisia de semnal sonor pe un anumit pin
notone
noTone(9); // oprește redarea de sunet de pe pinul 9

În Tinkercad, veți găsi în listă Buzzer-ul cu numele Piezo.

Exerciții

Toate exercițiile vor fi realizate pe Tinkercad

  1. Folosind un Buzzer redați câte un sunet scurt (un bâzâit) pe placă o dată pe secundă. (Hint: delay)
  2. 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.
  3. 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 2 iar pe cel aprins, stingeți-l pe o perioadă de timp.
  4. Parcurgeți o serie de minim 5 led-uri și aplicați pe fiecare, principiul de la exercițiul 2.
  5. Implementați sau căutați implementarea redării melodiei “Twinkle Twinkle Little Star” și parcurgeți codul pentru a-l înțelege.
  6. 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ă.
info2/laboratoare/06.1617630201.txt.gz · Last modified: 2021/04/05 16:43 by alexandru.vochescu
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