Differences

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

Link to this comparison view

info2:laboratoare:06 [2019/04/02 14:35]
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+ 
-  - Folosind un **for** ​pe un șir de 8 led-uriaplicațfuncția ​**my_blink** pe led-uri ​în ordinea (1,8), (2,7), (3,6), (4,5), (5,4) etc.  +===== Cuvinte cheie ===== 
-  - Folosind două butoane șun șir de led-uri, la apăsarea butonului 1, se va aprinde led-ul următor din șir, iar la apăsarea celuilalt buton se va aprinde led-ul precedentExemplu: //Se aprinde led-ul 1. Se apasă buton1 = > se aprinde ​led-ul 2. Se apasă buton1 = > se aprinde ​led-ul ​3. Se apasă buton2 = > se aprinde led-ul 2// **Mențiune:** Un singur led va fi aprins la fiecare moment ​de timp.+  * 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_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âitpe 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ă șî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 stinspe cel stins aprindeți-l pe o perioadă de timp similar cu exercițiul ​iar pe cel aprinsstingeți-l pe o perioadă de timp
 +  - Parcurgețo serie de minim 5 led-uri ​și aplicați pe fiecareprincipiul 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.1554204951.txt.gz · Last modified: 2019/04/02 14:35 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