Differences

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

Link to this comparison view

info2:laboratoare:06 [2019/04/02 14:23]
george.stoica0310
info2:laboratoare:06 [2021/04/06 15:59] (current)
alexandru.vochescu [Pini Analogici]
Line 1: Line 1:
-===== Laboratorul 06 - Exerciții ​=====+====== Laboratorul 06 - PWM ======
  
-  - Realizați funcția ** void my_blink ​(int led) **, ce primește ca parametru ​pinul la care este conectat ​un led și faceți led-ul să clipească de 3 ori cu pauză de 1 secundă între stările de aprins. +===== Scop ===== 
-  - Pe un șir de 8 led-uriaplicați funcția ​** my_blink ​** pe led-urile pare.  +  * familiarizarea cu operațiile analogice de output 
-  - Realizați funcția ** isPressed(int button) ​** care întoarce 1 dacă butonul este apăsat și 0 dacă butonul nu este apăsat+ 
-  - +===== 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 (PWMfolosim ​**analogWrite** în loc de **digitalWrite** 
 + 
 +<code arduino.c>​ 
 + 
 +void setup() { 
 +    pinMode(PINUL_MEUOUTPUT); 
 +
 +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 Tinkercadveț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.1554204181.txt.gz · Last modified: 2019/04/02 14:23 by george.stoica0310
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