This is an old revision of the document!
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:
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 interacțiunea cu butoane avem următoarele funcții principale la dispoziție:
value = input.button_is_pressed(Button.A) # întoarce True sau False în funcție de # starea butonului A. # pentru butonul B, vom folosi Button.B
# în primul rând, definim o funcție care conține secțiunea de cod ce va fi executată # în momentul în care butonul este apăsat def on_button_pressed_a(): # aici scriem codul pass # setăm funcția care va fi apelată la apăsarea butonului A # pentru butonul B, vom folosi Button.B input.on_button_pressed(Button.A, on_button_pressed_a)
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 buton, este că avem nevoie de un pin analogic. 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 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:
În mod similar unui buton, avem nevoie trei pini: unul pentru alimentare, unul pentru ground și unul pe care să putem citi valoarea analogică (adică valoarea de tensiune).
Pe placa Microbit și în simulatorul disponibil online, avem la dispoziție mai mulți senzori precum: lumină, temperatură, giroscop, busolă sau zgomot.
Pentru interacțiunea cu senzorii disponibili pe placă avem următoarele funcții principale la dispoziție:
accel_x = input.acceleration(Dimension.X) # valori între -1023, 1023
light_val = input.light_level() # valori între 0 (întuneric) și 255 (lumină)
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
temp = input.temperature()
touched = input.logo_is_pressed() # returns True is logo is pressed # and False otherwise
noise_level = input.sound_level() # value between 0 and 255
# în primul rând, definim 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.Shake, on_gesture_shake)
# 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)
# 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)
# 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)
Toate exercițiile vor fi realizate pe Tinkercad