Utilizarea perifericelor de pe BBC micro:bit

În cadrul lectiilor demo vom folosi "MakeCode editor" pentru a controla și a citi informații de la perifericele dispozitivului Micro:bit.

LED-uri (25 LED Light)

Plăcuța are o matrice de LED-uri care pot fi controlate individual sau toate odată pentru a putea face desene pe ecran. Fiecare LED din matrice este caracterizat prin două coordonate reprezentând linia și coloana pe care se află.

În exemplul de mai jos vom face LED-ul din centrul matricei să pâlpâie o dată la o secundă.
micro:bit led-uri
micro:bit led-uri
def on_forever():
    basic.show_leds("""
        . . . . .
        . . . . .
        . . # . .
        . . . . .
        . . . . .
        """)
    basic.pause(1000)
    basic.show_leds("""
        . . . . .
        . . . . .
        . . . . .
        . . . . .
        . . . . .
        """)
    basic.pause(1000)
basic.forever(on_forever)
Python Editor

Butoane (2 buttons)

În schema micro:bit-ului prezentată in acest articol, se poate observa faptul că micro:bit-ul are trei butoane.

Pe partea din față se pot observa două butoane programabile A și B iar cel de pe spate este pentru reset. Dacă apăsăm acest buton timp de cinci secunde micro:bit-ul va opri rularea programului care este încarcat iar dacă apăsăm scurt butonul de reset programul care este încărcat (flash-uit) pe micro:bit se va reseta.

În exemplul de mai jos va afișa pe display litera ”A” daca este apăsat butonul A sau litera “B” daca este apăsat butonul B. Dacă niciun buton nu este apăsat pe display va afișa o imagine, care reprezintă un emoticon confuz.
micro:bit butoane
micro:bit butoane
def on_button_pressed_a():
    basic.show_string("A")
input.on_button_pressed(Button.A, on_button_pressed_a)

def on_button_pressed_b():
    basic.show_string("B")
input.on_button_pressed(Button.B, on_button_pressed_b)

def on_forever():
    basic.show_icon(IconNames.CONFUSED)
basic.forever(on_forever)
Python Editor

Accelerometru, Gesturi (Accelerometer)

Micro:bit-ul poate să recunoască gesturi precum scuturare sau înclinare. Pe spatele micro:bit-ului, în partea de jos, se poate vedea un chip mic, care reprezintă un accelerometru, numit "Compass and Accelerometer”. Acesta poate măsura acclerarea în toate cele trei dimensiuni, anume accelerarea stânga-dreapta, accelerarea față-spate și accelerarea sus-jos.

Acest accelerometru are rolul de a măsura și a analiza accelerațiile liniare și unghiulare (exemplu, masinile moderne folosesc un accelerometru care detectează un accident pentru a declansa airbag-urile).

În exemplul de mai jos vom explora acclerometrul afișând pe display-ul micro:bit-ului un tringhi dacă acesta este înclinat către stânga, un pătrat dacă acesta este înclinat către dreapta un diamant dacă este pus cu fața în sus și un diamant mic dacă este pus cu fața în jos.
micro:bit acclerometrul
micro:bit acclerometrul
def on_gesture_tilt_left():
    basic.show_icon(IconNames.TRIANGLE)
    basic.clear_screen()
input.on_gesture(Gesture.TILT_LEFT, on_gesture_tilt_left)

def on_gesture_screen_up():
    basic.show_icon(IconNames.DIAMOND)
    basic.clear_screen()
input.on_gesture(Gesture.SCREEN_UP, on_gesture_screen_up)

def on_gesture_screen_down():
    basic.show_icon(IconNames.SMALL_DIAMOND)
    basic.clear_screen()
input.on_gesture(Gesture.SCREEN_DOWN, on_gesture_screen_down)

def on_gesture_tilt_right():
    basic.show_icon(IconNames.SQUARE)
    basic.clear_screen()
input.on_gesture(Gesture.TILT_RIGHT, on_gesture_tilt_right)
Python Editor

Direcții, Busolă (Compass)

Senzorul pentru busolă deceteaza câmpuri magnetice ale Pământului și este amplasat tot pe spatele micro:bit-ului, precum acclerometrul. Acesta este folosit pentru a decta dacă un magnet se afla prin preajma micro:bit-ului sau pentru navigare, poate arata direcțiile Nord, Sud, Est și Vest.

După descărcarea programului, trebuie să calibrăm busola pentru utilizare normală, înclinați micro:bit-ul până display-ul se va lumina complet și apare un zâmbet, care indică faptul că calibrarea are succes.

În exemplul de mai jos vom vedea cum micro:bit-ul poate fi folosit ca o busolă.
micro:bit compas
micro:bit compas
let azimuth = 0
basic.forever(function () {
    azimuth = input.compassHeading()
    if (azimuth >= 0 && azimuth <= 45) {
        basic.showLeds(`
            . . # . .
            . # . . .
            # # # # #
            . # . . .
            . . # . .
            `)
    }
    if (azimuth >= 45 && azimuth <= 90) {
        basic.showLeds(`
            . . # . .
            . . . # .
            # # # # #
            . . . # .
            . . # . .
            `)
    }
    if (azimuth >= 45 && azimuth <= 90) {
        basic.showLeds(`
            . . # . .
            . . . # .
            # # # # #
            . . . # .
            . . # . .
            `)
    }
    if (azimuth >= 90 && azimuth <= 135) {
        basic.showLeds(`
            . . . . #
            . . . # .
            # . # . .
            # # . . .
            # # # . .
            `)
    }
    if (azimuth >= 135 && azimuth <= 180) {
        basic.showLeds(`
            . . # . .
            . . # . .
            # . # . #
            . # # # .
            . . # . .
            `)
    }
    if (azimuth >= 180 && azimuth <= 225) {
        basic.showLeds(`
            # . . . .
            . # . . .
            . . # . #
            . . . # #
            . . # # #
            `)
    }
    if (azimuth >= 225 && azimuth <= 270) {
        basic.showLeds(`
            . . # . .
            . . . # .
            # # # # #
            . . . # .
            . . # . .
            `)
    }
    if (azimuth >= 270 && azimuth <= 315) {
        basic.showLeds(`
            . . # # #
            . . . # #
            . . # . #
            . # . . .
            # . . . .
            `)
    }
    if (azimuth >= 315 && azimuth <= 360) {
        basic.showLeds(`
            . . # . .
            . # # # .
            # . # . #
            . . # . .
            . . # . .
            `)
    }
})
Python Editor

Placa micro:bit are senzorul de atingere amplasat pe logo, care poate fi folosit ca și input. Acesta poate interacționa cu user-ul precum un buton. Puteți să utilizați noul senzor "touch logo"  de pe micro:bit pentru a declanșa diferite evenimente atunci când îl atingeți și când îl dați drumul.

În exemplul de mai jos pe placa micro:bit se va aprinde afișajul LED cu o pictogramă inimă, dar numai atât timp cât țineți degetul pe sigla din fața micro:bit-ului.
micro:bit touch logo
micro:bit touch logo
def on_logo_pressed():
    basic.show_icon(IconNames.HEART)
input.on_logo_event(TouchButtonEvent.PRESSED, on_logo_pressed)

def on_logo_released():
    basic.clear_screen()
input.on_logo_event(TouchButtonEvent.RELEASED, on_logo_released)
Python Editor

Senzorul de temperatura și de lumină (Temperature sensor, Light sensor)

Placuta micro:bit-ului are un senzor de temperatură în interiorul procesorului, care poate oferi o aproximare a temperaturii din jurul micro:bit-ului.

Senzorul de lumină este un dispozitiv de intrare care măsoară nivelurile de lumină. Placuta micro:bit-ului utilizează LED-urile pentru a detecta nivelurile de lumină și vă permite să programați micro:bit-ul ca senzor de lumină.

În exemplul de mai jos se afisează temperatura dacă este apăsat butonul A, iar dacă micro:bit-ul înregistrează o lumină puternică  deasupra LED-urilor se va afișa pe LED-uri un soare. Pentru a testa senzorul de lumină, în acest exemplu puteți îndrepta lumina de la lanterna sau lumina telefonului către plăcuța micro:bit-ului.
micro:bit temperature sensor, Light sensor
micro:bit temperature sensor, Light sensor
item = 0

def on_button_pressed_a():
    basic.show_number(input.temperature())
input.on_button_pressed(Button.A, on_button_pressed_a)

def on_forever():
    global item
    item = input.light_level()
    if item > 100:
        basic.show_leds("""
            # . # . #
            . # # # .
            # # # # #
            . # # # .
            # . # . #
            """)
        basic.clear_screen()
basic.forever(on_forever)
Python Editor

Speaker-ul și Microfonul (Speaker, Sound)

Noul micro:bit are difuzor încorporat, ceea ce face foarte ușor să adăugați sunet proiectelor dvs. Orice proiect de sunet micro:bit va funcționa cu difuzorul, dar cu noul micro:bit vă puteți exprima și cu câteva sunete noi: faceți micro:bit-ul să chicotească (hlizi), să vă salute sau să vă anunțe când este somnoros sau trist.

De asemenea, puteți dezactiva difuzorul și sunetul va ieși în continuare din pini, astfel încât să vă puteți bucura în continuare de muzică micro: bit pe căștile conectate la GND și pinul 0.
În MakeCode, utilizați blocul muzical „set on-board speaker off”.

Deasemeni noul micro:bit are un microfon încorporat. Îl puteți folosi ca o intrare simplă - faceți ca micro:bit-ul să aprindă luminile când bateți din palme. De asemenea, poate măsura cantitatea de sunet, astfel încât să puteți face un contor de zgomot sau lumini disco care să bată în timp cu muzica. Microfonul se află pe partea din spate a noului micro:bit, iar în partea din față veți găsi un nou indicatorul care lumineaza (LED) in forma de microfon care lumineaza atunci cand acesta aste accesat. Se aprinde pentru a vă arăta când micro:bit-ul dvs. măsoară nivelurile de sunet .

În exemplul de mai jos facem ca noul microfon micro:bit să răspundă la palme și bătăi cu un spectacol de lumini animat.
micro:bit microfon, speaker
micro:bit microfon, speaker 
În Python, pentru a modifica pragul pentru sunete puternice, utilizați microphone.set_threshold(SoundEvent.LOUD, 128) - schimbând numărul 128 la valoarea dorită între 0 și 255.
def on_sound_loud():
    basic.show_icon(IconNames.HEART)
input.on_sound(DetectedSound.LOUD, on_sound_loud)

def on_sound_quiet():
    basic.show_icon(IconNames.SMALL_HEART)
input.on_sound(DetectedSound.QUIET, on_sound_quiet)

input.set_sound_threshold(SoundThreshold.LOUD, 128)
Python Editor

Radio

Radio este un mod de a trimite și primi mesaje și micro:biții pot folosi unde radio pentru a comunica între ei.

În exemplul de mai jos este realizat o alarmă de la distanță controlată prin radio, astfel încât atunci când știi că cineva a aprins luminile - sau a deschis un sertar sau o geantă. La fel ca proiectul senzorului de lumină solară, acesta folosește LED-urile micro: bit ca senzor de lumină pentru a măsura câtă lumină cade pe afișaj. Folosind o buclă, la fiecare 10 secunde, programul senzorului trimite un mesaj radio pentru a spune dacă este deschis sau întunecat.
micro:bit radio
micro:bit radio
def on_button_pressed_a():
    basic.show_number(input.light_level())
input.on_button_pressed(Button.A, on_button_pressed_a)

radio.set_group(5)

def on_forever():
    if input.light_level() > 50:
        radio.send_string("lights on")
    else:
        radio.send_string("lights off")
    basic.pause(10000)
basic.forever(on_forever)
Python Editor

Pinii (Pins)

Pe marginea inferioară a BBC micro:bit-ului dvs. există 25 de benzi aurite, numite pini. Acesti pini îți permit să devii creativ. Puteți crea circuite, puteți conecta module externe precum buzzere și motoare și vă puteți crea propriile proiecte distractive.

pini (pins)
pini (pins)

Interfata USB (USB interface)

USB-urile sunt utilizate pentru a conecta, comunica și alimenta calculatoare și dispozitive digitale. BBC micro:bit are o interfață USB pentru a vă permite să vă conectați computerul la micro:bit folosind un cablu micro USB și să alimentați micro:bit-ul.

micro:bit city
Microbit City. BBC micro:bit este un computer mic care poate fi programat pentru proiecte distractive. Deschis non-stop.