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 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

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. Adaptați exercițiul anterior pentru a simula o sirenă de poliție folosind și un led rgb.
  3. 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.
  4. 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.
  5. Parcurgeți o serie de minim 5 led-uri și aplicați pe fiecare, principiul de la exercițiul 3.
  6. Implementați sau căutați implementarea redării melodiei “Twinkle Twinkle Little Star” și parcurgeți codul pentru a-l înțelege.
  7. 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ă.
  8. 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.txt · Last modified: 2021/04/06 15:59 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