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 semaforuNa 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).
| Pin | Namena |
|---|---|
| GND | masa (minus) – svako kolo se zatvara preko GND |
| 3V | napajanje od 3 V za male module |
| P0, P1, P2 | ulaz ili izlaz: dodir, digitalni (0/1) i analogni (0–1023) signal |
| mali pinovi | dodatni ulazi/izlazi (delom ih koristi ekran i dugmad) |
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.
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)
}
})
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 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).
Za svaki zadatak postoji primer, uputstvo i rešenje. Rešenja su provereno tačna na primerima iz teksta.
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.
LED diode se smenjuju kao na pravom semaforuServo 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°.
ravan micro:bit – motor na 90°; nagnut skroz udesno – 180°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.
suva zemlja: tužno lice i upaljena LED; vlažna: srećno lice1. Š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°?