Differences

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

Link to this comparison view

info2:laboratoare:03-old [2021/03/15 21:08]
alexandru.vochescu
info2:laboratoare:03-old [2021/03/16 16:03] (current)
alexandru.vochescu [Exerciții]
Line 6: Line 6:
  
 ==== Cuvinte cheie ==== ==== Cuvinte cheie ====
-  *  +  * buton, senzor 
-  * +  * button_is_pressed,​ on_button_pressed 
 +  * acceleration,​ light_level,​ compass_heading,​ temperature
  
 ==== Butoane ====  ==== Butoane ==== 
  
 Un buton este conceptual vorbind ca un întrerupător care permite sau nu trecerea curentului printr-o anumită secțiune dintr-un circuit. Astfel pentru a vedea dacă un buton (sau un întrerupător) este apăsat sau nu, verificăm valoarea tensiunii pe acea secțiune de circuit. Dacă valoarea logică este 0, atunci butonul nu este apăsat (practic, circuitul este întrerupt),​ iar dacă valoarea logică este 1, atunci butonul este apăsat. Valoarea efectivă a tensiunii poate fi 5V sau 3.3V în funcție de placa de dezvoltare folosită și de tipul de pin folosit pentru conectarea acelui buton. Un buton este conceptual vorbind ca un întrerupător care permite sau nu trecerea curentului printr-o anumită secțiune dintr-un circuit. Astfel pentru a vedea dacă un buton (sau un întrerupător) este apăsat sau nu, verificăm valoarea tensiunii pe acea secțiune de circuit. Dacă valoarea logică este 0, atunci butonul nu este apăsat (practic, circuitul este întrerupt),​ iar dacă valoarea logică este 1, atunci butonul este apăsat. Valoarea efectivă a tensiunii poate fi 5V sau 3.3V în funcție de placa de dezvoltare folosită și de tipul de pin folosit pentru conectarea acelui buton.
- 
-Pentru conectarea efectivă a unui buton extern la o placă de dezvoltare schema ar arăta în felul următor: 
- 
-{{:​info2:​laboratoare:​arduino_button.png?​600|}} 
- 
-Schema de mai sus este pentru conectarea unui buton la o placă de dezvoltare Arduino. Ideea de bază: avem 3 pini folosiți, unul pentru sursa de alimentare, unul pentru ground și un pin a citi valoarea tensiunii la baza butonului. Este extrem de importantă prezența rezistenței pentru a evita scurt-circuitul care ar apărea între alimentare și ground la apăsarea butonului. ​ 
  
 Pentru placa Microbit și în cadrul simulatorului nu va fi nevoie să conectăm vreun buton extern deoarece sunt disponibile două butoane interne numite "​A"​ și "​B":​ Pentru placa Microbit și în cadrul simulatorului nu va fi nevoie să conectăm vreun buton extern deoarece sunt disponibile două butoane interne numite "​A"​ și "​B":​
Line 47: Line 42:
 Un senzor reprezintă un dispozitiv care măsoară un parametru fizic al mediului extern (precum lumină, umiditate, temperatură sau sunet) și îl transformă într-un semnal care poate fi interpretat de către dispozitiv. Deseori, senzorul este o rezistență variabilă care se schimbă direct proporțional cu parametrul fizic măsurat. Astfel, în mod similar unui buton, pentru a citi valoarea unui senzor vom citi valoarea tensiunii de pe senzor. ​ Un senzor reprezintă un dispozitiv care măsoară un parametru fizic al mediului extern (precum lumină, umiditate, temperatură sau sunet) și îl transformă într-un semnal care poate fi interpretat de către dispozitiv. Deseori, senzorul este o rezistență variabilă care se schimbă direct proporțional cu parametrul fizic măsurat. Astfel, în mod similar unui buton, pentru a citi valoarea unui senzor vom citi valoarea tensiunii de pe senzor. ​
  
-Diferența principală față de butoneste că avem nevoie de un pin analogic. Spre deosebire de pinii digitali care pot elibera ​doar 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 sau 0 - 3.3 V în funcție de placa de dezvoltare și de pin.+Diferența principală față de buton este că avem nevoie de un pin analogic. Spre deosebire de pinii digitali care pot fi folosiți ​doar pentru valori 0V sau 5V, pinii analogici pot fi folosiți pentru a citi sau scrie o serie mai mare de valori și sunt utili pentru finețea măsurătorii. Valorile de scriere pot fi între 0-255 și sunt mapate pentru 0 - 5V sau 0 - 3.3 V în funcție de placa de dezvoltare și de pin.
  
-Un exemplu de conectare al unui senzor de lumină ​este în imaginea următoare:+Pe placa Microbit și în simulatorul disponibil online, avem la dispoziție mai mulți senzori precum: ​lumină, temperatură, giroscop, busolă sau zgomot.
  
-{{:info2:laboratoare:photoresistor_arduino.png?500|}}+Pentru interacțiunea cu senzorii disponibili pe placă avem următoarele funcții principale la dispoziție: 
 +  * Valoarea accelerației pe o axă: 
 +<code python>​ 
 +accel_x = input.acceleration(Dimension.X) ​   # valori între -1023, 1023 
 +</​code>​ 
 +  * Valoarea intensității luminii: 
 +<code python>​ 
 +light_val = input.light_level() ​             # valori între 0 (întuneric) și 255 (lumină) 
 +</​code>​ 
 +  * Orientarea pe busolă: 
 +<code python>​ 
 +light_val = input.compass_heading() ​         # valori între 0 și 359 grade 
 +                                             # 0   ​- ​ 44: Nord 
 +                                             # 45  - 134: Est 
 +                                             # 135 - 224: Sud 
 +                                             # 225 - 314: Vest 
 +                                             # 315 - 359: Nord 
 +</​code>​ 
 +  * Valoarea temperaturii în grade Celsius: 
 +<code python>​ 
 +temp = input.temperature() 
 +</​code>​ 
 +  * Senzor tactil: 
 +<code python>​ 
 +touched = input.logo_is_pressed() ​           # returns True is logo is pressed 
 +                                             # and False otherwise 
 +</​code>​ 
 +  * Senzor de zgomot: 
 +<code python>​ 
 +noise_level = input.sound_level() ​           # value between 0 and 255 
 +</​code>​
  
-În mod similar unui butonavem nevoie trei piniunul pentru alimentareunul pentru ground și unul pe care să putem citi valoarea analogică (adică valoarea ​de tensiune).+  * Rularea unei secvențe de cod la "​scuturarea"​ plăcii: 
 +<code python>​ 
 +# în primul rânddefinim o funcție care conține secțiunea de cod ce va fi executată  
 +# în momentul în care se va "​scutura"​ placa 
 +def on_gesture_shake(): 
 +    # aici scriem codul 
 +    pass 
 +     
 +# setăm funcția care va fi apelată în momentul în care 
 +# placa va detecta că este scuturată. 
 +input.on_gesture(Gesture.Shakeon_gesture_shake) 
 +</​code>​ 
 + 
 +  * Rularea unei secvențe de cod la detectarea unui zgomot: 
 +<code python>​ 
 +# definiția funcției ​care conține secțiunea de cod ce va fi executată  
 +def on_sound_loud():​ 
 +    # aici scriem codul 
 +    pass 
 +     
 +# setăm funcția care va fi apelată în momentul în care 
 +# va fi detectat: 
 +input.on_sound(DetectedSound.LOUD,​ on_sound_loud) 
 +</​code>​ 
 + 
 +  * Rularea unei secvențe de cod la apăsarea logo-ului:​ 
 +<code python>​ 
 +# definiția funcției care conține secțiunea ​de cod ce va fi executată  
 +def on_logo_event_pressed()
 +    # aici scriem codul 
 +    pass 
 +     
 +# setăm funcția care va fi apelată în momentul în care 
 +# va fi detectat: 
 +input.on_logo_event(TouchButtonEvent.PRESSED,​ on_logo_event_pressed) 
 +</​code>​
  
-Pe placa Microbit și în simulatorul disponibil online, avem la dispoziție mai mulți senzori precum: lumină, temperatură,​ giroscop, busolă sau zgomot. 
  
 ==== Exerciții ==== ==== Exerciții ====
-Toate exercițiile vor fi realizate pe [[https://www.tinkercad.com/| Tinkercad]] +Toate exercițiile vor fi realizate pe [[https://makecode.microbit.org/| MakeCode]] 
-  - 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**+  - Simulați rostogolirea unui zar: la “scuturarea” plăcii se va afișa ​un număr aleator între 0 și 6. 
-  - 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 1 iar pe cel aprinsstingeți-l pe perioadă de timp+  - Butoane muzicale: în funcție ​de butonul apăsatredați o melodie generată ​din note (ca în laboratorul anterior) 
-  - Parcurgeți o serie de minim 5 led-uri ​și aplicați pe fiecare, principiul ​de la exercițiul 1.+  - În funcție de butonul care este apăsat pe placă, generați o imagine care să fie afișată pe ecranul de LED-uri. 
 +  - Modificațaplicația anterioară ca la apariția unui zgomot, să se aprindă toate LED-urile timp de 2 secunde, iar apoi să se stingă. 
 +  - Lumină inteligentă:​ dacă nivelul luminii scade sub un anumit prag, se va lumina ​complet ​ecranul; dacă nivelul crește peste un anumit prag se va lumina complet ecranul
 +  - Termometru interactiv: se va citi valoarea de temperatură,​ iar în funcție ​de intervalul în care se află valoarea citită se va realiza câte o acțiune: 
 +        ​0  ​30 de grade Celsius - se va afișa un craniu și se va reda melodia built-in "​Funeral"​. 
 +        ​30 - 37 de grade Celsius - se va afișa o față zâmbitoare și se va reda melodia built-in "​Entertainer"​. 
 +        * 37 - 42 de grade Celsius - se va afișa fața "​-_-"​ (ASLEEP în ICON-urile predefinite) șse va reda melodia built-in "​POWER_DOWN"​ 
 +        * 42 - 50 de grade celsius - se va afișa ​un craniu ​și se va reda melodia built-in "​Funeral"​. 
 +        * Opționalse poate înlocui melodia "​Funeral"​ cu generarea din note a melodiei "​Astronomia"​. 
 +  - Implementați un contor care să afișeze pe ecran de câte ori a fost apăsat logo-ul. 
 +  - Busolă sonoră: într-un while True, în funcție de cele 4 puncte cardinale și de orientarea plăciiredați câte melodie diferită și afișați punctul cardinal pe ecran
 +  - Contor bătăi din palme: Numărați de câte ori se generează un zgomot puternic ​și afișați contorul ​pe ecran. Contorul se va reseta când ajunge la valoarea 10. 
 +  - Exercițiu avansat: Animal ​de companie 
 +      - Animalul este reprezentat printr-o față zâmnbitoare sau supărată afișată pe ecran. 
 +      - Pentru a "​mângâia animalul"​ se apasă logo-ul. Se va reda un sunet corespunzător atunci când este apăsat logo-ul.  
 +      - Se va da drumul ​la un timer imediat ce programul pornește, iar dacă se trece de 10 secunde de când nu a mai fost mângâiat, "​animalul"​ va scoate un sunet corespunzător. Dacă se trece de 20 de secunde de când nu a mai fost mângâiat, "​animalul moare" și se afișează un "​X"​ pe ecran sau o altă imagine reprezentativă (fiți creativi). 
 +      - Timer-ul este resetat de fiecare dată când se apasă logo-ul.
info2/laboratoare/03-old.1615835303.txt.gz · Last modified: 2021/03/15 21:08 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