Pinovi micro:bit-a: dodir, LED, potenciometar i servo motor

Lekcija 12 od 14 · micro:bit

Na donjoj ivici micro:bit-a su zlatni kontakti – pinovi. Preko njih micro:bit „razgovara“ sa spoljnim svetom: čita dodir i senzore, pali LED diode, pokreće servo motor. Krupni pinovi 0, 1, 2, 3V i GND imaju rupe za krokodil-štipaljke. Blokovi za pinove su u paleti Pins (pod Advanced).

Pre nego što počneš: potrebno predznanje – radio veza, funkcije.
Kako da učiš: svaki primer složi u MakeCode-u i isprobaj u simulatoru (ili na uređaju), a zadatke na kraju prvo reši sam/a; uputstvo i rešenje otvori tek posle toga. Programi su dati blokovima (opis) i u JavaScript-u iz MakeCode-a: u editoru klikni na JavaScript, nalepi kod i vrati se na Blocks – dobićeš iste blokove.

Pinovi i bezbednost

PinNamena
GNDmasa (minus) – svako kolo se zatvara preko GND
3Vnapajanje od 3 V za male module
P0, P1, P2ulaz ili izlaz: dodir, digitalni (0/1) i analogni (0–1023) signal
mali pinovidodatni ulazi/izlazi (delom ih koristi ekran i dugmad)
Pažnja: pin daje malo struje i radi na 3 V. LED dioda se vezuje preko otpornika (npr. 220 Ω). Motori, pumpe i trake sa mnogo LED dioda ne napajaju se sa pina – za njih treba poseban izvor i modul (drajver, relej). Nikad ne spajaj 3V direktno sa GND.

Pin kao dugme (dodir)

Blok on pin P0 pressed (paleta Input) reaguje kada se zatvori kolo između pina i GND – na primer kada jednom rukom držiš GND, a drugom dodirneš P0, ili kada se spoje dve folije kao u projektu „Brzina reagovanja“.

let dodiri = 0
input.onPinPressed(TouchPin.P0, function () {
    dodiri += 1              // brojimo dodire pina P0
    basic.showNumber(dodiri)
})

Ovako se pravi „voćni klavir“: na P0, P1 i P2 krokodil-štipaljkama povežeš tri banane, a svaka pušta drugi ton blokom play tone.

Digitalni i analogni izlaz: LED dioda

digital write pin P1 to 1 pali LED diodu vezanu na P1 (1 = ima napona, 0 = nema). analog write pin P1 to 512 daje „pola snage“ – vrednost od 0 do 1023 određuje jačinu svetla.

// LED dioda (sa otpornikom) između P1 i GND
basic.forever(function () {
    pins.digitalWritePin(DigitalPin.P1, 1)   // upali
    basic.pause(500)
    pins.digitalWritePin(DigitalPin.P1, 0)   // ugasi
    basic.pause(500)
})

Lagano paljenje i gašenje (efekat „disanja“) dobija se analognim izlazom u petlji:

basic.forever(function () {
    for (let jacina = 0; jacina <= 1023; jacina += 32) {
        pins.analogWritePin(AnalogPin.P1, jacina)   // sve jače
        basic.pause(20)
    }
    for (let jacina = 1023; jacina >= 0; jacina -= 32) {
        pins.analogWritePin(AnalogPin.P1, jacina)   // sve slabije
        basic.pause(20)
    }
})

Analogni ulaz: potenciometar i vlažnost zemlje

analog read pin P2 čita napon na pinu i vraća broj od 0 (0 V) do 1023 (3 V). Tako se čitaju potenciometar (okretno dugme), senzor vlažnosti zemlje, senzor svetla i slični moduli.

// potenciometar: krajevi na 3V i GND, srednja nožica na P2
let vrednost = 0
basic.forever(function () {
    vrednost = pins.analogReadPin(AnalogPin.P2)     // 0 .. 1023
    led.plotBarGraph(vrednost, 1023)                // grafikon na ekranu
    pins.analogWritePin(AnalogPin.P1, vrednost)     // ista jačina za LED na P1
})

Ovaj program je dimer: okretanjem potenciometra menja se jačina LED diode. Sa senzorom vlažnosti zemlje isti blok daje broj koji je veći što je zemlja vlažnija – osnova projekta „Zalivanje bašte“.

Servo motor

Servo motor se okreće na zadati ugao od 0° do 180°. Ima tri žice: smeđa/crna na GND, crvena na napajanje, narandžasta/žuta (signal) na pin. Blok je servo write pin P0 to 90.

// dugme A: 0 stepeni, dugme B: 180 stepeni, A+B: sredina
input.onButtonPressed(Button.A, function () {
    pins.servoWritePin(AnalogPin.P0, 0)
})
input.onButtonPressed(Button.B, function () {
    pins.servoWritePin(AnalogPin.P0, 180)
})
input.onButtonPressed(Button.AB, function () {
    pins.servoWritePin(AnalogPin.P0, 90)
})

Mali servo (SG90) obično radi i sa napajanjem micro:bit-a preko baterija, ali ako se micro:bit resetuje kad se motor pomeri – motoru treba poseban izvor napajanja (sa zajedničkim GND).

Zadaci za vežbu

Za svaki zadatak postoji primer, uputstvo i rešenje. Rešenja su provereno tačna na primerima iz teksta.

ZADATAK 01Težina: lako

Semafor

Tri LED diode (crvena na P0, žuta na P1, zelena na P2) rade kao semafor: crveno 3 s, crveno i žuto 1 s, zeleno 3 s, žuto 1 s – i ponovo.

Primer

Izlaz

LED diode se smenjuju kao na pravom semaforu
ZADATAK 02Težina: srednje

Servo prati nagib

Servo motor na P0 neka se okreće kako naginješ micro:bit levo-desno: nagib −90° daje ugao motora 0°, ravan položaj 90°, a nagib 90° daje 180°.

Primer

Izlaz

ravan micro:bit – motor na 90°; nagnut skroz udesno – 180°
ZADATAK 03Težina: srednje

Upozorenje: suva zemlja

Senzor vlažnosti zemlje je na P1. Ako je očitana vrednost manja od 300, zemlja je suva: prikaži tužno lice i upali LED na P2. Inače prikaži srećno lice i ugasi LED. Merenje ponavljaj svake 2 sekunde.

Primer

Izlaz

suva zemlja: tužno lice i upaljena LED; vlažna: srećno lice
Česte greške i saveti
  • Svako kolo se zatvara preko GND – bez žice na GND ni LED ni senzor ne rade.
  • Digitalni izlaz je 0 ili 1, analogni od 0 do 1023; analogni ulaz takođe vraća 0 do 1023.
  • Motore i pumpe ne napajaj sa pina micro:bit-a – koristi drajver ili relej i poseban izvor.
  • Pre nego što menjaš žice, isključi napajanje.

Proveri znanje

Otvori kviz

Pinovi i spoljni uređaji

1. Šta vraća analog read pin?




2. Kada se izvršava on pin P0 pressed?




3. Zašto se uz LED diodu stavlja otpornik?




4. Koji blok okreće servo motor na 90°?