Sunteți pe pagina 1din 82

Copyright 2020  Editura L&S SOFT

Toate drepturile asupra acestei lucrǎri aparţin editurii


L&S SOFT. Reproducerea integralǎ sau parţialǎ a textului
din aceastǎ carte este posibilǎ doar cu acordul în scris al
editurii L&S SOFT.

Editor: dr.ing. Vlad TUDOR

ISBN: 978-973-88037-2-6

ATENȚIE!
După confirmarea plății, fiecare carte poate fi descărcată de
maximum 5 ori şi este disponibilă 30 de zile.
Fiecare PDF este securizat în 28 de zone cu watermark
invizibil (id comandă, e-mail, nume) pentru a nu putea fi
distribuit pe alte căi virtuale.

Adresa: Aleea Aviatiei nr. 10, Voluntari, Ilfov;


Mobil: 0727.731.947;
E-mail: comenzi@ls-infomat.ro;
www.ls-infomat.ro
Biblioteca Digitală de Informatică “Tudor Sorin”
www.infobits.ro
http://ebooks.infobits.ro
pentru
ANA-MARIA

3
Prezenta lucrare se adresează atât elevilor începători în ale programării, cât și
celor care au cunoștințe solide în acest domeniu și doresc să-și îmbogățească
experiența cu un nou stil de programare, folosind minicalculatorul micro:bit.

Limbajul folosit pentru programarea lui micro:bit, ales în această carte, este
Microsoft MakeCode.

Pentru micii programatori va fi o continuare firească a modului de realizare a


aplicațiilor întâlnit în clasa a V-a prin folosirea limbajului Scratch dezvoltat de
MIT Media Lab.

Pentru cei avansați în ale programării, limbajul folosit în carte, va fi o


experiență facilă în realizarea, uneori, a unor aplicații deosebite din punct de
vedere a domeniului de aplicabilitate.

Lucrarea conține, pe lângă numeroase exemple și exerciții, mai multe aplicații


în domeniul STEM, aplicații care pot duce la nașterea unor idei de folosire a
programării în multe aspecte ale vieții cotidiene.

Autorii.

4
Cuprins

1. Intoducere 6
2. Programarea lui micro:bit 8
2.1. Platforma Microsoft MakeCode 8
2.2. Afișarea unui număr 9
2.3. Afișarea unui număr folosind variabile 9
2.4. Afișarea șirurilor de caractere 13
2.5. Afișarea simbolurilor predefinite (icon) 15
2.6. Afișarea simbolurilor definite de către utilizator 17
3. Butoanele A și B ale lui micro:bit 19
4. Senzorul pentru măsurarea temperaturii 23
5. Senzorul Accelerometru 27
6. Senzorul Busolă 31
7. Senzorul Luminozitate 37
8. Imagini 39
9. Ecranul LED 48
10. Sunet 55
11. Tablouri unidimensionale (array) 58
12. Comunicații radio 64
13. Proiecte 73
13.1. Determinarea umidității solului dintr-un ghiveci 73
13.2. Viteza unei bile 75
13.3. Viteza de alergare a unui coleg 77
13.4. Mărul cântăreț 78
13.5. Banane muzicale 80

5
1. Introducere

BBC Micro Bit (micro:bit) este un minicalculator (5 cm x 4 cm) special conceput


pentru educaţie. El este asemănător, ca dimensiune, cu un card bancar.

Ca parte a programului BBC Computer Literacy, proiectul Micro: bit a început


în anul 2012. Țelul acestui proiect este încurajarea copiilor să scrie software și
să construiască noi echipamente, în loc să fie doar consumatori. Ca atare, a
fost distribuit fiecărui elev din clasa a 7-a (11 și 12 ani) din Marea Britanie.

Descrierea tehnică

Fața lui micro:bit


Port micro USB

„Ecranul” este format Butoanele A și B


dintr-o matrice de 5x5 sunt programabile,
LED-uri. activate la apăsare
Ecranul folosește și ca
senzor de lumină.

În partea inferioară a lui micro:bit există 25 de conectori numiți pini. Dintre aceștia, cei
sub formă de inel, numerotați 0, 1, 2 sunt folosiți pentru conectarea minicalculatorului
micro: bit
Spatele luilamicro:bit
dispozitive sau senzori folosind cabluri de conectare cu cleme de tip crocodil
sau mufe banană de 4 mm. Inelele 3 și 5 sunt rezervate alimentării unor dispozitive
precum roboți și motoare.

6
Spatele lui micro:bit
Port micro USB Butonul Reset

Antenă de 2,4 GHz care asigură Conector


comunicarea cu alte dispozitive Baterie JST
prin intermediul pentru
Bluetooth Low Energy (BLE) alimentare
prin
Microprocesorul ARM intermediul
Cortex-M0 de 16 MHz cu unui
memorie 256KB Flash și 16KB pachet de
RAM. El este folosit și ca senzor baterii
de temperatură externe 3V

Senzori de mișcare: accelerometru și busolă.


Detectorul de mișcare (accelerometrul) poate detecta mișcarea, comunicând acest
lucru și altor dispozitive. El poate detecta: agitarea, înclinarea și căderea liberă.
Busola (magnetometrul) poate sesiza orientarea lui micro:bit față de punctele
cardinale, mișcarea utilizatorului în grade. Ea include un magnet încorporat care poate
sesiza anumite tipuri de metal.

Ecranul lui micro:bit

Ecranul minicalculatorului micro:bit este format dintr-o matrice de 25 de led-


uri dispuse pe 5 linii și 5 coloane. Considerând axele de coordonate xOy ca în
figura alăturată, coordonatele (x,y) ale led-urilor sunt:

0,0 1,0 2,0 3,0 4,0

0,1 1,1 2,1 3,1 4,1


O x
0,2 1,2 2,2 3,2 4,2

0,3 1,3 2,3 3,3 4,3

y 0,4 1,4 2,4 3,4 4,4

7
2. Programarea

Pentru a programa minicalculatorul micro:bit, putem folosi platforma gratuită


Microsoft MakeCode, care oferă oricui posibilitatea de scrie programe pentru
micro:bit folosind codificarea bazată pe blocuri (asemănătoare cu tehnica de
la SCRATCH) sau prin JavaScript. Programarea se realizează în întregime în
browser-ul web, nefiind necesară instalarea niciunui soft suplimentar. Adresa
platformei este:
https://makecode.microbit.org/#editor

2.1. Descrierea platformei

Selectarea modului de programare:


cu Blocuri sau în JavaScript

Setări
-Extensii
-Tipărire
Toolbox − Panoul cu unelte: blocurile sunt
etc.
grupate pe categorii, în funcție de acțiune

Micro:bit
virtual Meniu: Pornire/Oprire, Reluare, Viteză
simulare, sunet, maximizare fereastră Undo,
Redo,
Salvarea programului în Mărire,
Salvarea programului pe PC Micșorare
memoria lui micro:bit

8
2.2. Afișarea unui număr

Pentru început ne propunem să afișăm, pe ecranul lui


micro:bit o cifră.

Din categoria Basic alegem blocul show number pe care


îl glisăm în blocul on start. Implict, în blocul show
number apare cifra 0. O modificăm, dând clic în
cerculețul din acest bloc. În partea stângă a interfeței,
calculatorul virtual va afișa cifra scrisă de noi.

Observație: în cazul în care numărul conține mai multe cifre, acestea vor fi
afișate, pe rând, prin derularea lor pe ecran, de la dreapta spre stânga.

2.3. Afișarea unui număr folosind variabile

În numeroase probleme avem nevoie de păstrarea unui


număr pentru a îl folosi mai târziu în program. Pentru aceasta
vom apela la variabile care ne vor permite referirea la
respectivele valori.

Exercițiu: să se afișeze cifra 7 prin intermediul unei variabile în


care este stocată (păstrată).

Pas Acțiune
1. Definim o variabilă numită i cu ajutorul categoriei Variables, de la
opțiunea Make a Variable…
2. Glisăm blocul set i to 0 în blocul on start
3. Modificăm valoarea 0 cu numărul dorit, de exemplu 7.
4. Pentru afișarea valorii stocate în această variabilă i, vom apela la
categoria Basic, blocul show number 0 pe care îl glisăm în blocul
on start, sub blocul set i to 7
5. Din categoria Variables glisăm variabila i în locul cifrei 0

9
Exercițiu: să se afișeze cifrele de la 5 la 9, câte una pe secundă.

Pas Acțiune
1. Definim o variabilă numită i cu ajutorul categoriei Variables, de la
opțiunea Make a Variable…
2. Glisăm blocul set i to 0 în blocul on start
3. Modificăm valoarea 0 cu cifra 5
4. Deoarece de la 5 la 9 sunt sunt 5 cifre pe care trebuie să le afișăm, vom
folosi instrucțiunea repetitivă repeat 4 times do (aflătă în categoria
Loops) în care înlocuim pe 4 (cifră predefinită) cu 5
5. Pentru afișarea cifrelor cerute, se va apela la categoria Basic, blocul
show number
6. Pentru afișarea valorii stocate în această variabilă i, vom apela la
categoria Basic, blocul show number 0 pe care îl glisăm în blocul
repeat 5 times do. Din categoria Variables glisăm variabila i în locul
cifrei 0
7. Pentru a trece la următoarea cifră, vom folosi, din categoria Variables
blocul change list by 1, în care înlocuim list cu variabila i pe care o
glisăm tot din categoria Variables
8. Pentru a afișa câte o cifră, la fiecare secundă, vom folosi blocul
pause (ms) 100, din categoria Basic, pe care îl vom seta la 1 second
(1000 ms)

Codul trebuie să arate ca în figura alăturată:

10
Observație: pentru a afișa
cifrele/numerele de la 0 la o valoare
dorită, de exemplu 8, putem folosi blocul
for index from 0 to 4 do din categoria
Loops, în care înlocuim index cu i și 4 cu
8

Codul arată ca în figura alăturată

Exercițiu: să se afișeze suma a două


numere citite (definite) prin intermediul
butoanelor A și B. Suma se va afișa prin apăsarea simultană pe butoanele A și
B.

Indicație: inițial cele două numere a căror sumă se dorește a fi afișată, sunt
inițializate cu 0. La fiecare apăsare pe butonul A sau B, valoarea numerelor
reținute în variabilele a, respectiv b, se incrementeză. Prin apăsarea simultană
pe A și B, se calculează și se afișează suma celor două numere definite anterior.

Pas Acțiune
1. Definim trei variabile a, b și suma cu ajutorul categoriei Variables,
de la opțiunea Make a Variable…
2. Pentru inițializarea variabilelor cu 0, glisăm blocurile set a to 0,
set b to 0, set suma to 0 în blocul on start
3. Pentru definirea numerelor stocate în variabilele a și b glisăm
blocurile on button A pressed și on button B pressed din
categoria Input în care vom incrementa variabila a, respectiv b la
fiecare apăsare pe butonul A, respectiv B
4. Incrementarea se efectuează cu ajutorul blocurilor: change a by
1, respectiv change b by 1 din categoria Variables, glisate în cele
două blocuri on button A pressed și on button B pressed definite
anterior

11
Pas Acțiune
5. Pentru a vizualiza valoarea la care a ajuns fiecare dintre variabile,
în urma apăsării butoanelor A, respectiv B, din blocul Basic glisăm
blocurile show number 0, iar în acestea îl modificăm pe 0 în a,
respectiv b prin glisarea variabilelor respective din categoria
Variables
6. Calcularea sumei celor două numere păstrate în variabilele a,
respectiv b, se va realiza în blocul on button A+B pressed din
categoria Input.
7. În blocul de la Pasul 6 glisăm set suma to 0 din categoria
Variables
8. În locul lui 0 de la pasul anterior, glisăm blocul 0 + 0 din categoria
Math
9. În locul celor doi de 0 de la pasul anterior glisăm, din Variables pe
a, respectiv pe b
10. Pentru afișarea sumei vom glisa blocul show number 0 din
categoria Basic. În acest bloc îl înlocuim pe 0 cu variabila suma
din categoria Variables

12
Verificarea soluției exercițiului o putem efectua pe micro:bit-ul virtual aflat în
stânga platformei.

2.4. Afișarea șirurilor de caractere

Șirurile de caractere pe care le poate afișa micro:bit-ul pot fi formate din litere
ale alfabetului englez, cifre precum și caractere speciale: !, @, # etc. Șir poate
fi afișat, pe ecranul lui micro:bit, caracter cu caracter, prin defilarea la stânga
a elementelor din respectivul șir.

Pentru a putea afișa un caracter/șir de caractere vom apela blocul


show string “Hello!” aflat în categoria Basic.

Exercițiu: să se afișeze textul “Salut!”

Indicație: dați clic pe textul implicit “Hello!”


din blocul show string “Hello!” și scrieți
textul cerut, fără să puneți ghilimele.
În partea stângă a platformei veți observa
afișarea de către calculatorul virtual, a
mesajului cerut, literă cu literă.

Exercițiu: afișați un mesaj compus din mai multe cuvinte. Folosiți pentru
afișare șirul “Te salut Ana!”

Varianta 1: scrierea întregului mesaj în blocul show string “Hello!”

13
Varianta 2: Folosirea mai multor blocuri show string “Hello!”

Observație: pentru scrierea programului


alăturat putem să glisăm, de 3 ori, blocul
show string “Hello!” din categoria Basic.
O altă modalitate constă în glisarea unui singur
bloc show string “Hello!” în blocul on start,
după care executăm, de două ori, clic dreapta
pe blocul show string “Hello!” și alegem
opțiunea Duplicate din meniul care ni se
afișează.

Varianta 3: Folosirea mai multor blocuri join “Hello” “World” - +

Pas Acțiune
1. Din categoria Basic, glisați blocul on start
2. În categoria Variables definim variabila nume
3. Din categoria Variables glisăm în blocul on start, blocul set nume to 0
4. Din categoria Advanced, subcategoria Text, glisați blocul “ “ în locul lui
0 de la blocul set nume to 0
5. În blocul “ “ introduceți textul Ana!
6. Din categoria Basic glisați show string “Hello!”
7. Din categoria Advanced, subcategoria Text, glisați blocul
join “Hello” “World” - + pe care îl glisați peste “Hello” din blocul
show string “Hello!”
8. Suprascrieți “Hello” cu textul “Te salut “
9. Peste cuvântul “World” glisați, de la categoria Variables, variabila
nume

14
2.5. Afișarea simbolurilor predefinite (icon)

Editorul care ne permite


programarea
minicalculatoarelor
micro:bit conține,
predefinite, mai multe
simboluri grafice, icon-uri,
pe care le putem utiliza în
programele noastre. Ele se
găsesc în categoria Basic,
fiind apelate prin
intermediul blocului show icon. Tot în această categorie, Basic, găsim și blocul
show arrow care conține, predefinite, săgeți care indică puncte cardinale.
Punctele cardinale pot fi referite, fiecare, printr-o cifră de la 0 la 7 astfel:
0 - North, 1 - North East, 2 - East, 3 - South East, 4 South, 5 - South West,
6 - West, 7 - North West

Exercițiu: folosind simboluri predefinite, simulați bătăile unei inimi.

15
Observații:
1.viteza cu care se schimbă cele două
simboluri ale inimii poate fi controlată prin
setarea pauzei din blocul pause (ms) 100 din
categoria Basic
2. Pentru schimbarea, între ele, a simbolurilor
grafice care reprezintă inima, am folosit, din
categoria Loops, blocul repeat 4 times do care
ne permite repetarea, de un număr de ori, a
acțiunilor produse de blocurile conținute în el.
În cazul exemplificat, repetarea se face de 7
ori.

Exercițiu: simulați rotirea, pe ecran, a unei săgeți.


Indicație: folosiți, din categoria Basic, blocul show arrow

Pas Acțiune
1. Definim o variabilă numită i cu ajutorul categoriei Variables, de la
opțiunea Make a Variable… Această variabilă ne va permite să referim
punctele cadinale din blocul show arrow, din categoria Basic, prin
intermediul valorilor corespunzătoare fiecărui punct cardinal
2. Glisăm blocul for index from 0 to 4 do din categoria Loops în blocul
on start
3. Glisăm variabila i din categoria Variables peste index, iar în locul lui 4
punem 7.
4. Din categoria Basic … more, glisăm, în blocul for i from 0 to 7 do, blocul
show arrow North
5. Glisăm variabila i din categoria Variables peste North
6. Din categoria Basic glisăm blocul pause (ms) 100 cu ajutorul căruia
vom seta viteza de rotire a săgeții

16
Codul arată ca în figura alăturată:

Exercițiu: folosind exercițiul anterior,


repetați rotirea completă a săgeții de
3 ori.

2.6. Afișarea simbolurilor definite de către utilizator

Utilizatorul are posibilitatea să-și definească propriile simboluri grafice,


folosind blocul show leds din categoria Basic. Acest bloc simulează ecranul lui
micro:bit prin cele 5x5 pătrățele.

17
Să glisăm blocul show leds în blocul on start. Desenăm un caracter oarecare
prin executarea unor clic-uri în unele din cele 25 de
pătrățele. Rezultatul acțiunii noastre se poate
vedea în partea
stângă a platformei,
acolo unde apare
micro:bit-ul virtual.

18
3. Butoanele A și B ale lui micro:bit

Minicalculatorul micro:bit dispune de două butoane, notate A, respectiv B,


care pot fi programate pentru a răspunde la diverse sarcini.

Exercițiu: programați butoanele A respectiv B pentru următoarele sarcini:


1. prin apăsarea butonului A să se afișeze pentru 200 ms litera A, după care să
se șteargă ecranul;
2. prin apăsarea butonului B să se afișeze pentru 200 ms litera B, după care să
se șteargă ecranul;
3. prin apăsarea simultană a butoanelor A și B, să se afișeze pentru 200 ms
textul A+B, după care să se șteargă ecranul.

Indicații:
- se va folosi blocul on button A pressed din categoria Input care va fi copiat
de încă două ori și particularizat pentru B și pentru A+B
- pentru „ștergerea” ecranului se va folosi blocul clear screen din categoria
Basic … more

19
Exercițiu: afișați, cu ajutorul butonului B, numărul de apăsări pe butonul A

Pas Acțiune
1. Definim o variabilă numită apas cu ajutorul categoriei Variables, de la
opțiunea Make a Variable… Această variabilă ne va permite să reținem
de câte ori am apăsat butonul A al lui micro:bit
2. Pentru inițializarea variabilei apas, glisăm blocul set apas to 0 din
categoria Variables în blocul on start
3. Din categoria Input glisăm blocul on button A pressed
4. Din categoria Variables, glisăm, în blocul on button A pressed, blocul
change apas by 1 (mărim valoare reținută în apas cu 1)
5. Din categoria Input, glisăm blocul on button A pressed, bloc în care îl
modificăm pe A cu B
6. În blocul on button B pressed glisez, din categoria Basic, blocul
show number 0
7. Glisăm, din categoria Variables, blocul apas pe care îl plasăm în locul
lui 0 din blocul show number 0

Exercițiu: să se genereze și să se afișeze cifre aleatoare cuprinse între 0 și 9.


Utilizatorul trebuie să apese pe butonul A dacă cifra este pară, respectiv pe
butonul B dacă cifra afișată este impară. Generarea cifrelor se repetă de 10 ori
după care, pe ecranul lui micro:bit, se afișează numărul corect de identificări
ale cifrelor pare și impare.
20
Pas Acțiune
1. Definim variabilele scor, x (cifra aleatoare) și apas (verifică dacă
butonul A sau B a fost apăsat) cu ajutorul categoriei Variables, de la
opțiunea Make a Variable…
2. Pentru inițializarea variabilei scor, glisăm blocul set scor to 0 din
categoria Variables în blocul on start
3. Din categoria Loops glisăm blocul repeat 4 times do în care îl
schimbăm pe 4 cu 10
4. Glisăm, în blocul anterior, blocul set x to 0 din categoria Variables
5. Deoarece x-ul trebuie să ia valori aleatoare, cuprinse între 1 și 9, vom
înlocui pe 0 de la blocul definit la pasul anterior, cu blocul
pick random 0 to 10 din categoria Math, în care îl modificăm pe 0 în 1
și pe 10 în 9
6. Afișăm numărul aleator generat la pasul 5: glisăm blocul
show number 0 de la categoria Basic și-l înlocuim pe 0 cu x de la
categoria Variables
7. Timpul cât rămâne afișată cifra aleatoare, pe ecran, îl setăm prin
glisarea blocului pause (ms) 100 de la categoria Basic În acest bloc
putem modifica, după dorință, timpul.
8. Jocul se încheie prin afișarea scorului: glisăm blocurile
show string “Hello!” și show number 0 din categoria Basic. În primul
bloc scriem textul Scor, iar în al doilea îl înlocuim pe 0 cu variabila scor
din categoria Variables
9. Glisăm, din categoria Input, blocul on button A pressed care va fi
folosit pentru identificarea cifrelor pare
10. Glisăm, din categoria Logic, blocul if true then
11. În locul lui true, de la pasul anterior, glisăm, din categoria Logic, blocul
0 = 0 În locul primului 0 glisăm, din categoria Math, blocul remainder
of 0 / 1. În acest bloc îl înlocuim pe 0 cu x, din categoria Variables, iar
pe 1 cu 2
12. În blocul if definit la Pasul 10, glisăm din categoria Variables, blocul
change scor by 1

21
Pas Acțiune
13. Pentru butonul B executăm clic dreapta pe codul de la butonul A și
alegem opțiunea Duplicate. Modificăm pe A în B, iar la condiția de la
if, semnul = în ≠

22
4. Senzorul pentru măsurarea temperaturii

Cu ajutorul minicalculatorului micro:bit putem determina temperatura


mediului ambiant. Senzorul care permite acest lucru măsoară, de fapt,
temperatura procesorului (acesta, în mod normal, nu se încălzeşte). În acest
mod temperatura mediului ambiant este echivalată cu temperatura
procesorului. Măsurarea se face în grade Celsius.

Gradele Celsius (simbol: °C) se referă la o temperatură exprimată pe scara


Celsius, a cărei unitate de măsură este folosită pentru indicarea unui interval
de temperatură de pe Scara termometrică Celsius.
Denumirea „Celsius” vine de la numele astronomului suedez Anders Celsius,
care a propus primul această scară în anul 1742.
Până în 1954 temperatura de 0 °C de pe scara Celsius a fost definită ca
punctul de topire a gheții, iar cea de 100 °C ca punctul de fierbere a apei
la presiune normală.

Actual, unitatea „grad Celsius” și scara Celsius este definită, prin două
puncte: zero absolut și punctul triplu al apei. Zero absolut este temperatura
față de care nimic nu poate fi mai rece și la care în substanță nu mai există
energie sub formă de căldură, ea fiind definită ca fiind exact −273,15 °C.
Punctul triplu al apei este definit ca fiind 0,01 °C.

23
Exercițiu: scrieți un program care măsoară temperatura, în grade Celsius, a
mediului ambiant prin apăsarea pe butonul A.

În partea stângă a interfeței


apare micro:bit-ul virtual. Pe el
este figurat un termometru care
ne permite simularea diferitelor
temperaturi.

Observație: pentru a măsura încontinuu temperatura, fără a mai apăsa pe un


buton, vom copia codul din blocul on button A pressed într-un bloc forever
glisat din categoria Basic.

24
Scara Fahrenheit pentru măsurarea temperaturii a fost propusă in 1725 de
către fizicianul Daniel Gabriel Fahrenheit și numită după acesta.
Se crede că Fahrenheit a luat ca punct 0 al scalei lui, temperatura la care un
amestec masic echivalent de gheață și sare se topește și 100 (96 de fapt)
temperatura internă a corpului uman.
Formulele de conversie a unei temperaturi date, din grade Celsius în grade
Fahrenheit (și invers)
°F = (°C × 1,8) + 32
°C = (°F − 32) ÷ 1,8

Exercițiu: afișați temperatura măsurată de către micro:bit (în grade Celsius) în


grade Fahrenheit. Prin apăsarea butonului A afișați temperatura în grade
Celsius, iar prin apăsarea butonului B afișați aceeași temperatură exprimată în
grade Fahrenheit.
Indicație: pentru rezolvarea problemei folosim formula de conversie:
°F = (°C × 1,8) + 32

Pas Acțiune
1. Definim două variabile numite C, respectiv F cu ajutorul categoriei
Variables, de la opțiunea Make a Variable… Aceste variabile ne vor
permite să reținem temperaturile măsurate în grade Celsius, respectiv
Fahrenheit
2. Din categoria Input glisăm blocul on button A pressed
3. Din categoria Variables glisăm blocul set C to 0
4. Din categoria Input glisăm peste valoarea 0 din blocul anterior, blocul
temperature (°C)

25
Pas Acțiune
5. Din categoria Basic glisăm blocul show number 0
6. Peste valoarea 0 din blocul anterior, glisăm blocul C din categoria
Variables
7. Din categoria Input, glisăm, blocul on button A pressed, bloc în care îl
modificăm pe A cu B
8. În blocul on button B pressed glisez, din categoria Variables, blocul
set F to 0
9. Din categoria Math glisăm blocul 0 + 0 peste cifra 0 din blocul anterior
set F to 0
10. Din categoria Math glisăm blocul 0 x 0 peste prima cifră 0 din blocul
anterior set F to 0 + 0
11. În locul primului 0 din blocul 0 x 0 scriem 1.8, iar peste cel de-al doilea
0 glisăm, de la categoria Variables, blocul C
12. În blocul obținut până acum, 1.8 x C + 0, în locul cifrei 0, scriem 32
13. Din categoria Basic glisăm blocul show number 0
14. Peste valoarea 0 din blocul anterior, glisăm blocul F din categoria
Variables

Observație: dacă nu dorim ca aceeași temperatură măsurată în grade Celsius


să fie exprimată și în grade Fahrenheit, putem rezolva acest exercițiu și fără să
definim variabile. Micro:bit-ul se transformă în acest fel într-un termometru
cu care putem, în funcție de butonul A sau B ales, măsura temperatura fie în
grade Celsius, fie în grade Fahrenheit.
26
27
5. Senzorul Accelerometru

(Accelerometrul - evenimente legate de acțiuni asupra lui micro:bit)


Z
Accelerometrul este folosit pentru
măsurători ale accelerației
gravitaționale în aplicații în care se X
dorește controlarea balansării și
sesizarea accelerației dinamice
rezultată din mișcare sau șocuri.

Micro:bit poate măsura mișcarea


de-a lungul a trei axe:
X - înclinare stânga - dreapta
Y - inclinare înainte - înapoi Y
Z - mișcare sus – jos

Măsurarea mișcării, pe fiecare axă are ca rezultat un număr, pozitiv sau


negativ care indică valoarea respectivă în mili g (g este accelerația
gravitațională). Dacă valoarea indicată este 0, pentru una dintre axe,
înseamnă că suntem cu micro:bit-ul aliniat de-a lungul acelei axe.
Accelerometrul de pe acest minicalculator poate măsura valori ale
accelerației gravitaționale cuprinse în intervalul [-2g, +2g], valori de ± 2048
mili g.

Micro:bit-ul are posibilitatea să reacționeze la diverse acțiuni privind


manipularea sa:

28
• shake
• logo up
• logo down
• screen up
• screen down
• tilt left
• tilt right
• free fall
• 3g
• 6g
• 8g

Exercițiu: în funcție de înclinarea stânga - dreapta, pe care o dăm micro:bit-


ului, să se afișeze săgeata corespunzătoare direcției de înclinare. În cazul în
care nu înclinăm minicalculatorul, pe ecran va fi afișat un desen predefinit.

Indicație: pentru afișarea săgeții corespunzătoare direcției de înclinare, se pot


folosi săgețile corespunzătoare direcțiilor punctelor cardinale.

Pas Acțiune
1. Din categoria Basic glisăm blocul forever
2. Din categoria Logic glisăm blocul if true then else în blocul forever
3. Din categoria Input glisăm blocul is shake gesture peste condiția true
din blocul if true then else
4. Schimbăm shake cu tilt left
5. Din categoria Basic…more glisăm blocul show arrow North în blocul if
definit la pașii 2 - 4
6. Schimbăm North cu West
7. Executăm clic dreapta pe blocul if și alegem din meniul contextual
opțiunea Duplicate
8. Dublura astfel obținută o glisăm la ramura else în if-ul definit anterior.
9. În acest nou if schimbăm condiția în tilt right, iar direcția săgeții în Est
10. În else-ul de la ultimul if, glisăm, din categoria Basic, blocul show icon,
în care putem alege orice simbol grafic
29
În lipsa unui micro:bit real, putem simula mișcarea minicalculatorului cu
ajutorul celui virtual oferit de platformă, executând mișcări stânga - dreapta,
cu mouse-ul peste acest micro:bit vitual.

30
6. Senzorul Busolă (Compass)

micro:bit are un cip specializat, numit magnetometru, cu ajutorul căruia se


poate determina orientarea minicalculatorului faţă de punctele cardinale.
Orientarea se face în grade, de la 0 la 359.

Înainte de folosire, busola, trebuie calibrată.


În mod normal, minicalculatorul se auto
calibrează la pornire.

În cazul în care dorim să inițiem calibrarea


busolei, de exemplu, prin acţionarea
butonului A:

Exercițiu: să se realizeze un program prin care minicalculatorul micro:bit să


indice principalele puncte cardinale (Nord, Sud, Est, Vest) prin indicarea
respectivului punct.

Punct cardinal Interval exprimat în grade


N - Nord 315o ‑ 360o şi 0o ‑ 45o
E - Est 45o ‑ 135o
S - Sud 135o ‑ 225o
W - Vest 225o ‑ 315o

Indicație: considerăm că cele patru puncte cardinale pe care ni le-am propus


să fie indicate de către micro:bit, ocupă sectoarele de cerc indicate în tabelul
alăturat.
31
Sectorul de cerc este porţiunea de cerc cuprinsă între două raze şi arcul de
cerc determinat de capetele lor. Unghiul format de cele
două raze se numeşte unghiul sectorului (uo). uo

Pas Acțiune
1. Cu ajutorul categoriei Variables definim variabila u (unghi)
2. Din categoria Variables glisăm blocul set u to 0 în blocul forever
3. Setăm valoarea variabilei u cu unghiul măsurat (în grade) de orientarea
lui micro:bit, valoare pe care o regăsim în categoria Input, blocul
compass heading (o) Acest bloc îl glisăm peste valorea o din blocul
anterior set u to 0
4. Pentru afișarea punctului cardinal determinat de orientarea lui
micro:bit vom folosi blocul if true then else din categoria Logic, bloc
pe care îl glisăm în blocul forever
5. Glisăm peste condiția true din if, blocul or din categoria Logic,
subcategoria Boolean
6. În blocul or glisat anterior, aducem blocul < din categoria Logic,
subcategoria Comparison. În acest ultim bloc schimb pe < în >
7. În blocul definit anterior, în stânga lui > glisăm variabila u, din categoria
Variables, iar în dreapta lui > scriem valoarea 315
8. Asemănător cu Pașii 6 și 7, în dreapta lui or va glisăm condiția u < 45
9. În această ramură a lui if, glisăm blocul show string “Hello!” din
categoria Basic. În acest bloc modificăm “Hello!” în “N”
10. Pe ramura else a blocului if definit la Pasul 4 glisăm un nou bloc
if true then else din categoria Logic
11. În noul if facem aceleași setări ca la pașii 5 – 9 cu particularitățile:
u > 45 and u < 135, iar în blocul show string scriem “E”

32
Pas Acțiune
Observație: pentru a crește viteza de scriere putem executa clic
dreapta pe condiția din primul if, de la Pasul 4, selectăm opțiunea
duplicate, iar condiția o glisăm la noul if în care facem modificările sus
amintite.
12. Executăm clic dreapta pe if -ul de la Pasul 11, selectăm opțiunea
duplicate și glisăm noul if în ramura else
Executăm modificările de la condiție: u > 135 and u < 225, iar în blocul
show string scriem “S”
13. Dacă unghiul u, ca valoare, nu se încadrează în niciuna dintre valorile
din ramurile definite în if – urile anterioare, vom glisa blocul show
string din categoria Basic în care scriem “W”
Obținem:

33
În partea stângă a platformei, reprezentarea virtuală a lui micro:bit ne permite
simularea rotirii minicalculatorului, acționând asupra simbolului aflat în partea
superioară a acestui micro:bit virtual.

Experiment: Magnetometrul ne permite să realizăm următorul experiment: să


se determine prezența unui câmp magnetic în apropierea micro:bit-ului.

Pas Acțiune
1. Cu ajutorul categoriei Variables definim variabila m0
2. Din categoria Variables glisăm blocul set m0 to 0 în blocul on start
3. Setăm valoarea variabilei m0 cu valoarea forței magnetice inițiale, în
jurul lui micro:bit, la pornirea aplicației (măsurată în micro Tesla),
valoare pe care o regăsim în categoria Input …, blocul magnetic force
(µT) strength Acest bloc îl glisăm peste valorea 0 din blocul anterior
set m0 to 0
4. În blocul forever, glisăm blocul if true then else din categoria Logic
5. În condiția lui if vom compara modulul diferenței dintre valoarea
inițială m0 și valoarea citită la un moment dat prin magnetic force (µT)
strength cu o valoare pe care o stabilim noi. Această valoare o putem
schimba pentru a detecta o sursă magnetică mai puternică sau mai
34
Pas Acțiune
slabă (am ales ca valoare 110). Observație: diferența dintre cele două
valori se calculează în modul pentru a elimina importanța orientării
polului magnetic al sursei măsurate față de micro:bit
6. Din blocul Logic, subcategoria Comparison glisăm peste condiția true
din if, blocul 0 > 0
7. Peste primul 0 de la pasul anterior glisăm, din categoria Math, blocul
absolute of 0
8. În blocul absolute of 0 peste 0 glisăm 0 - 0 din categoria Math
9. În primul 0 de la pasul anterior glisăm variabila m0, iar în locul celui de-
al doilea 0 glisăm, din categoria Input …, blocul magnetic force (µT)
strength
10. În locul celui de-al doilea 0 de la Pasul 6, scriem 110
11. În prima ramură a lui if, corespunzătoarea „dacă condiția este
adevărată” vom glisa blocul show icon din categoria Basic în care
selectăm spre afișare rombul
12. În cazul în care condiția din if nu este îndeplinită vom glisa blocul show
leds din categoria Basic în care vom marca led-ul din mijloc

Programul corespunzător este:

35
Puteți verifica programul plasând micro:bit-ul, de exemplu, în apropierea
boxelor audio, a căștilor audio sau a unui laptop.

36
7. Senzorul Luminozitate

Minicalculatorul micro:bit are posibilitatea de a măsura nivelul luminozității


mediului ambiant prin intermediul unora dintre led-urile ecranului. Valorile
acestor măsurători pot fi numere cuprinse între 0 - întuneric și 255 - lumină
strălucitoare.

Exercițiu: să se determine nivelul de luminozitate în jurul micro:bit-ului prin


apăsarea pe butonul A

Prin acționarea asupra cerculețului din stânga sus a minicalculatorului virtual


aflat pe platformă, putem simula diverse nivele de luminozitate.

Exercițiu: în funcție de nivelul de luminozitate din jurul micro:bit-ului, led-urile


ecranului său să lumineze mai mult sau mai puțin. Exemplu:

luminozitate strălucirea ecranului


0 - 120 255 (maximă)
121 - 200 111 (medie)
201 - 255 0 (nulă)

Indicație:
se va folosi blocul set brightness n care se găsește în categoria Led
37
38
8. Imagini

În paragrafele Afișarea simbolurilor predefinite (icon) și Afișarea simbolurilor


definite de către utilizator am prezentat modul în care micro:bit-ul poate
afișa, pe ecranul format de cele 5 x 5 led-uri diverse simboluri.

În cele ce urmează, prin imagine vom înțelege o matrice de 5x5 pixeli (numită
cadru) pe care o putem afișa pe ecranul lui micro:bit, imagine pe care o putem
crea, afișa, anima.

Pentru a realiza aceste lucruri ne vom folosi de blocuri din categoria Images.

Exemplu: din categoria Images glisăm în blocul on start, blocul


show image myImage at offset 0

Reamintim că ecranul minicalculatorului este format dintr-o matrice de 5 linii


și 5 coloane. offset nr se referă la afișarea imaginii începând cu a nr coloană,
din cele 5 care o formează.

Tot din categoria Images glisăm peste myImage din blocul


show image myImage at offset 0, blocul create image în care trasăm două linii
paralele

39
Imaginea formată pe ecranul
minicalculatorului virtual este

În cazul în care la offset în loc de 0 punem 2,


imaginea se va afișa începând cu a 2-a sa
coloană (reamintim coloanele sunt
numerotate începând cu 0)

Imaginea o putem deplasa, pe ecran, de la dreapta la stânga

sau
40
sau de la stânga la dreapta

41
sau

Unei imagini putem să-i dăm efectul de scroll, în sensul că aceasta se mișcă
spre o margine până iese din ecran și apare în partea opusă marginii în care a
„dispărut”. Implicit imaginea apare din partea dreaptă, iar derularea ei durează
până în momentul în care întreaga imagine este afișată pe ecran.

Pentru a realiza acest efect apelăm la blocul (din categoria Images):

scroll image myImage with offset nr1 and interval (ms) nr2

unde:
nr1 reprezintă coloana cu care începe defilarea, coloană din cele 5 care
formează imaginea. Această coloană va fi prima care apare în partea dreaptă
a ecranului lui micro:bit
nr2 reprezintă întârzierea cu care se produce derularea imaginii pe ecran

42
Exemplu:

Derularea imaginii va începe din partea


dreaptă a ecranului lui micro:bit, cu
coloana 0, iar pauza/întârzierea în derulare
va fi de 2 secunde. Primul pas în derularea
imaginii îl putem vedea în imaginea
alăturată.

Observație: putem executa un scroll de la


stânga la dreapta, punând în locul lui nr1
un număr negativ. De exemplu, pentru aceeași imagine, din exemplu anterior:

43
micro:bit ne permite afișarea unor imagini mari, formate din două cadre
(matrice de 10 coloane și 5 linii).

Vom folosi, în blocul show image myImage at offset 0 în locul lui myImage,
create big image

Exemplu: următorul program va afișa, în funcție de butonul apăsat, A sau B, o


figură veselă, respectiv tristă. De menționat că cele două figuri vor fi desenate
de către utilizator pe aceeași imagine mare. Prin apăsarea pe unul dintre
butoanele lui micro:bit se va afișa o parte sau alta a imaginii mari.

Acționarea butonului A Acționarea butonului B

44
Exemplu: următoarea aplicație va realiza, prin intermediul unei imagini mari,
o animație/simulare a creșterii și descreșterii unor valuri.

Efectul:

În paragraful Afișarea simbolurilor predefinite (icon), am amenționat faptul


că micro:bit are o serie de simboluri predefinite pe care le putem folosi în
diverse aplicații. Aceste simboluri pot fi tratate ca și imagini putând fi
manipulate ca orice imagine definită de către utilizator.

Exemplu: prin intermediul a două variabile, patrat respectiv patratel, vom


afișa două simboluri predefinite din librăria lui micro:bit. Afișarea celor două
simboluri, tratate ca imagini o vom face prin apăsarea pe butonului A respectiv
B al lui micro:bit

45
Exemplu: aplicăm efectul de scroll celor două simboluri, definite în exemplul
anterior,
tratate ca
imagini, prin
intermediul
butoanelor A,
respectiv B.

Blocul
clear screen,
utilizat, se
găsește în
categoria
Basic.

46
La paragraful legat de busolă, am văzut că există o corelare între punctele
cardinale și săgețile corespunzătoare lor. La fel ca în exemplele de mai sus,
putem trata săgețile corespunzătoare punctelor cardinale ca imagini. Pentru
aceasta vom folosi blocul arrow image din categoria Images.

47
9. Ecranul LED

Prin intermediul blocurilor din categoria Led, avem posibilitatea să intervenim,


la nivel de led, în diverse afișări pe ecranul
lui micro:bit. Reamintim că ecranul este
format dintr-o matrice de 5x5 led-uri.
Referirea la oricare led de pe ecran se face
prin coordonatele acestuia.

De exemplu, pentru a „aprinde” (porni)


led-ul de coordonate (0,2) vom folosi
blocul
plot x 0 y 2 Efectul contrar, „stingerea”
(oprirea) unui led se realizează cu ajutorul
blocului unplot. Pentru a „stinge” led-ul
anterior, folosim unplot x 0 y 2

Exercițiu: să se realizeze o mișcare du-te-


vino, a unui led luminos, pe linia a treia a
ecranului lui micro:bit, dintr-o margine în
cealaltă.

48
Exercițiu: „aprindeți” pe rând toate
led-rile de sub diagonala principală a
ecranului după care „stingeți-le”, pe
rând. Această acțiune să se repete la
infinit.

49
Putem combina acțiunea blocurilor din categoria Led cu acțiunea unor blocuri
din alte categorii.

Exemplu: faceți să clipească fața zâmbitoare


afișată prin intermediul blocului show icon din
categoria Basic

Blocul togle x y ne permite să comutăm între


starea de „aprins„
și „stins” și
reciproc, a unui
led.

Astfel, exemplul anterior se mai poate scrie:

Pentru a testa dacă un led de pe


ecran este „aprins” se poate folosi
blocul point x y care întoarce
valoarea de adevărat dacă led-ul
de la punctul de coordonate (x, y)
funcționează.

Exemplu: scrieți un program care


să afișeze A (adevărat) sau F (fals)
după cum led-ul de la
coordonatele (2,2) este „aprins”
sau nu. În programul alăturat,
inițial am aprins led-ul de la
coordonatele (2, 2).

Utilizatorul are posibilitatea să


stabilească strălucirea ledurilor
50
led-urilor ecranului cu ajutorul blocului plot x y brightness nr, unde nr este o
valoare cuprinsă între 0 (led „stins”) și 255 strălucirea maximă.

Exercițiu: să se construiască două pătrate concentrice și un punct interior celui


de-al doilea. Cerința suplimentară este ca pătratele și punctul să aibă străluciri
diferite.

O primă rezolvare construiește


pătratele, începând cu cel exterior și
termină cu punctul din centrul
ecranului.

51
A doua rezolvare se
poate folosi și în
rezolvarea altor probleme.

52
Tot în categoria Led mai găsim blocuri referitoare la strălucirea led-urilor:
brightness (care determină nivelul) și set brightness nr (setează nivelul
strălucirii)

Putem controla funcționarea sau nu a led-urilor prin folosirea blocului


led enable true/false

Exemplu: ne propunem să afișăm cu ajutorul blocului show icon, din categoria


Basic, o inimioară. Cu ajutorul butoanelor pogramabile A și B ale lui micro:bit
vom permite sau nu afișarea acestui desen (icoane).

Exercițiu: „aprindeți” la poziții aleatoare și cu intensitate aleatoare led-urile de


pe ecranul lui micr:bit.
Indicație: pentru obținerea valorilor aleatoare pentru coordonatele led-ilor și
pentru intensitatea iluminării lor, vom folosi, din categoria Math, blocul pick
random. Pentru coordonate se folosesc numere aleatoare cuprinse între 0 și
4, iar pentru strălucire vom folosi valori aleatoare, tot între 0 și 4 înmulțite cu
60 (valoarea maxim posibilă a strălucirii fiind 255).

53
54
10. Sunet

micro:bit are posibilitatea de a reda sunete/melodii prin intermediul unui


difuzor, căști audio, boxe. Pentru a conecta aceste dispozitive la micro:bit
avem nevoie de un cablu special, fie de două cabluri având fiecare la capete
cleme de tip crocodil

Cleme de tip crocodil


pentru conectare la pinii
GND respectiv 0 (implicit)

Mufă stereo pentru


conectarea boxelor
sau a căștilor audio

Redarea melodiilor din


bibliotecă

În categoria Music vom găsi


blocuri pe care le vom utiliza
pentru a adăuga proiectelor
noastre divese sunete sau
melodii. În biblioteca lui
micro:bit sunt implementate
mai multe melodii pe care le
putem selecta și asculta
folosind blocul start melody

Exemplu: am ales melodia lui


Ludwig van Beethoven (Oda
bucuriei), iar ca număr de
repetări: o dată

55
Observăm că o melodie poate fi selectată pentru a fi repetată o dată, la infinit,
o dată în fundalul aplicației sau la infinit în fundalul aplicației.
Observație: o melodie din prim-plan are prioritate asupra uneia din fundal în
sensul că melodia din fundal va fi redată doar la terminarea melodiei din prim-
plan.

Frecvența reprezintă măsura numărului de repetări ale unui fenomen


periodic în unitatea de timp, fiind simbolizată prin Hz (hertz) în cinstea
fizicianului german Heinrich Hertz (1857-1894). Frecvența de 1 Hz
corespunde unei perioade de repetare de o secundă.

Nota La din gama centrală a pianului este folosită ca reper față de care se
acordează instrumentele muzicale și este definită ca având frecvența de
440 Hz.

Omul percepe sufrecvențe cuprinse aproximativ între 20 Hz și 20 kHz


(20.000 Hz) .

Notații ale notelor muzicale în diverse țări:

România
Franța Do Re Mi Fa Sol La Si
Italia
Germania
Nordul C D E F G A H
Europei
Marea
Britanie C D E F G A B
SUA
Frecvența*
262 294 330 349 392 440 494
(Hz)
*valori aproximative folosite de micro:bit

56
Generarea unei note muzicale

durata

Observație: pentru ascultarea notei este folosit, implicit pin-


ul P0

Dacă dorim să schimbăm pin-ul prin care va fi generat sunetul folosim din
categoria Advanced, subcategoria Pins, blocul analog set pitch pin nr, unde nr
poate fi P0, P1, P2

Exemplu: pentru redarea notei La folosim pin-ul P1

În cazul în care avem nevoie ca un sunet să fie repetat o perioadă mai


îndelungată decât cea impusă în blocul play tone, se poate folosi blocul ring
tone (Hz). Oprirea redării sunetului respectiv se va face din program sau prin
oprirea aplicației.
57
Exemplul următor prezintă generarea și redarea de sunete aleatorii

Redarea sunetelor poate fi întreruptă pentru o anumită perioada cu ajutorul


blocului rest (ms) nr, unde nr reprezintă numărul de milisecunde

O melodie poate fi redată mai rapid sau mai lent folosind change tempo by
(bpm) nr unde nr reprezintă valoarea cu care se schimbă tempo-ul melodiei

58
11. Tablouri unidimensionale (array)

Se definește noțiunea de tablou unidimensional, ca fiind o listă de elemente


(itemi) numere, șiruri de caractere, sprite-uri, note muzicale.

Elementele dintr-un tablou pot fi modificate. Referirea la un element se poate


face prin poziția sa în cadrul tabloului (indicele/indexul elementului). Primul
element are indicele 0, al doilea are indicele 1 etc.

Lungimea unui tablou este reprezentată de numărul de elemente pe care îl


conține. Lungimea unui tablou poate fi modificată prin adăugarea sau
ștergerea, în orice loc din tablou, a unor elemente.

Pentru lucrul cu tablouri unidimensionale (arrays) vom apela la etichetele


categoriei Arrays.

Definirea unui tablou

a. pentru valori numerice: folosim eticheta set list to array of 1 2 - +


unde:
list poate fi redefinit cu ajutorul categoriei Variables
cifrele 1 2 pot fi modificate cu orice valoare numerică
- + permit micșorarea, respectiv mărirea numărului de elemente al listei

Exemplu:
Să se definească un tablou care conține numere pare, tablou pe care să îl
numim nr_pare

59
b. pentru șiruri de caractere: folosim eticheta
set text list to array of “a” “b” “c” - +
unde:
text list poate fi redefinit cu ajutorul categoriei Variables
caracterele “a” “b” “c” pot fi modificate cu orice șir de caractere
- + permit micșorarea, respectiv mărirea numărului de elemente al listei

Exemplu:
Să se definească un tablou care conține șiruri de caracterer, tablou pe care să
îl numim cuvinte

Determinarea lungimii tabloului

60
micro:bit-ul va afișa:

Inserarea unui element în tablou

Pentru inserare vom face apel la poziția pe care


dorim să inserăm respectivul element.

Exercițiu:
Într-un tablou inițial, numit cuvinte, care conține șirurile de caractere “Ana”,
“are”, “mere”, să se insereze, între “Ana” și “are”, șirul de caractere “nu”. Să
se afișeze elementele noului tablou, în ordinea în care acestea apar în tablou.

1
0

61
Explicații:
1. se definește tabloul cuvinte care conține șirurile de caractere “Ana”, “are”,
“mere”
2. variabilei nr i se atribuie lungimea tabloului cuvinte
3. se afișează 3
4. se inserează în tabloul cuvinte, pe poziția 1 șirul de caractere “nu”
5. variabilei nr i se atribuie lungimea tabloului cuvinte după inserarea noului
șir “nu”
6. se afișează 4
7. variabila i se inițializează cu valoarea 0. i este inidicele unui element din
tabloul cuvinte
8. se parcurge tabloul cuvinte, după indicele elementelor sale
9. se afișează șirul având indicele i
10. pauză între afișarea șirurilor din cuvinte

Exercițiu:

Să se construiască un tablou numit leduri care conține 5 elemente, numere


întregi, având valorile între 1 și 25. Programul va citi, pe rând, câte un element
al tabloului leduri și va aprinde, pe poziții aleatoare, un număr de led-uri,
corespunzător elementului citit.

Observație: datorită faptului că led-urile lui micro:bit se vor lumina aleatoriu


(ca poziție), este posibil ca pe ecran să nu fie același număr de led-uri aprinse
cu numărul citit din tablou (unele led-uri pot fi accesate de program pentru a
fi luminate de mai multe ori).

62
1

6
w

Explicații:
1. se definește tabloul leduri care conține elemente numerice
2. se definește un ciclu după poziția ocupată de elemente în tabloul leduri
3. pentru fiecare element din tabloul leduri, se repetă de un număr de ori,
egal cu valoarea elementului de pe poziția respectivă
4. se luminează led-ul de pe poziția aleatoare x, y
5. după afișare se face o pauză, pentru a putea admira led-urile activate
6. se șterge ecranul (se sting led-urile, pentru a se afișa o nouă configurație a
led-urilor

63
12. Comunicații radio

Minicalculatorul micro:bit dispune de două butoane, notate A, respectiv B,


care pot fi programate pentru a răspunde la diverse sarcini.

Un micro:bit poate comunica cu alți micro:biți prin intermediul undelor radio.


Reamintim că fiecare minicalculator micro:bit dispune de o antenă de 2,4 GHz
care asigură comunicarea cu alte dispozitive prin intermediul Bluetooth Low
Energy (BLE).

Puterea semnalului radio poate fi mai slabă, corespunzătoare valorii 0, sau mai
puternică, corespunzătoare lui 7. Implicit puterea este 6. Setarea puterii
semnalului se realizează prin intermediul blocului radio set transmit power nr

Numele științific al puterii semnalului radio este dBm sau decibel miliwatt.

Semnal Valoare
slab (0) -30 dBm
puternic (7) 4 dBm

În cazul în care semnalul radio este puternic, acesta poate fi perceput până la
o distanță de 70 m

Pentru a realiza o comunicare între micro:biți vom scrie programe folosind


blocuri din categoria Radio. Prin intermediul programelor se pot trimite între
micro:biți numere, șiruri de caractere.

Pentru a permite mai multor micro:biți să comunice între ei, trebuie să-i setăm
pe toți ca făcând parte din același grup de comunicație. Acest lucru se
realizează prin folosirea blocului radio set group x, unde x este un număr
cuprins între 0 și 255.

64
Exemplu, x fiind în acest caz 100:

Exercițiu: Folosim 2 sau mai mulți micro:biți pe care îi definim ca făcând parte
din acelați grup (de exemplu 100). Folosind butoanele programabile ale
micro:bit-ului 1, din exemplul de mai jos, să se transmită celorlalte
minicalculatoare litera corespunzătoare butonului apăsat.

1 2 3 4

Programul care îl vom realiza ne va permite ca apăsând mai departe, pe


butonul B al minicalculatorului 2, de exemplu, litera B să fie afișată pe fiecare
ecran al micro:biților folosiți.

1 2 3 4

65
Programul
alăturat îl vom
încărca în
memoria
fiecărui
micro:bit folosit.

Exercițiu: pornind de la exercițiul anterior, vom adăuga la cerințe ștergerea


ecranelor minicalculatoarelor care primesc comanda, în cazul în care pe
micro:bit-ul care trimite comanda apăsăm ambele butoane A și B.

66
Exercițiu: cu ajutorul unui micro:bit, să se măsoare nivelul luminozității în jurul
său. Prin apăsarea pe butonul său programabil A, să se transmită rezultatul
măsurătorii unui alt micro:bit. Cei doi micro:biți fac parte din aceeași grupă
radio.

67
O variantă de program este:

Exercițiu: cu ajutorul unui micro:bit, să se măsoare nivelul luminozității în jurul


său. Prin apăsarea pe butonul său programabil A, să se transmită rezultatul
măsurătorii unui alt micro:bit, care își va adapta luminozitatea ecranului invers
proporțional cu numărul primit (cu cât mai mare este intensitatea luminii
măsurată de primul bit cu atât mai puțin luminos este ecranul celui de-al
doilea). Cei doi micro:biți fac parte din aceeași grupă radio.

68
Observație: exercițiul anterior se constituie într-un exemplu de cum putem
controla iluminatul unei încăperi, străzi etc. folosind mai mulți micro:biți, din
care unul face măsurătorile iar ceilalți execută o comandă în funcție de datele
primite.

Exercițiu: creați o aplicație la care participă doi jucători, fiecare având propriul
micro:bit. Inițial, pe fiecare ecran, al celor două minicalculatoare apare un
punct luminos la cordonatele x=2, y=4. Aceste punct reprezintă nava
jucătorului. Ea poate fi mișcată, stânga – dreapta, cu ajutorul butoanelor
programabile A, respectiv B. Dacă un jucător acționează în același timp ambele
butoane (A+B), atunci nava sa trimite un glonte spre micro:bit-ul adversarului.
Glontele părăsește ecranul jucătorului care a tras și apare, pe prima linie și
coloana corespunzătoare a ecranului celui de-al doilea jucător. Dacă glontele
nimerește nava adversarului, numărul de vieți al jucătorului cu nava lovită,
scade. Jocul se termină când unul dintre jucători și-a terminat numărul de vieți.
Jucătorului câștigător îi apare pe ecran o figură zâmbitoare, iar pe ecranul celui
care a pierdut apare o figură tristă.

69
Primul jucător trage din poziția (1,4). Glontele va avea traseul: (1,3), (1,2), (1,1),
(1,0) moment în care părăsește ecranul primului jucător.
Pe ecranul celui de-al doilea jucător, glontele are traseul: (3,0), (3,1), (3,2),
(3,3), iar ultimul pas al glontelui va fi în (3,4) unde poate sau nu întâlni
adversarul.

Un model
de
rezolvare a
proiectului
poate fi:

70
Se inițializează sprite-ul la x = 2 y = 4 care reprezintă nava jucătorului.
Butoanele A, respectiv B vor permite mișcarea navei la stânga, respectiv la
dreapta.

Prin apăsarea concomitentă a butoanelor A și B se generează, pe linia imediat


superioară navei, glontele. Coloana pe care se află glontele coincide cea a
navei. Pentru a sesiza mișcarea glontelui se pune o pauză de 100 ms între
pozițiile sale succesive. Glontele se va deplasa „în sus” până atinge prima linie
a ecranului. În acest moment glontele este transmis prin radio partenerului de
joc.

71
Glontele „primit prin radio” de al doilea jucător, coboară până pe linia 4 când
programul trebuie să sesizeze dacă se va produce o coliziune sau nu cu nava
jucătorului. Dacă se produce coliziunea, numărul de vieți scade cu 1, în caz
contrar glontele „dispare” de pe ecran. La finalul jocului, pe ecranul
câștigătorului apare o figură veselă, iar pe acelui care a pierdut, o figură tristă.

72
13. Proiecte

13.1. Determinarea umidității solului dintr-un ghiveci

Ne propunem să verificăm dacă solul (pământul) dintr-un ghiveci este uscat


sau nu. Pentru acest proiect avem nevoie de:
- un micro:bit
- 2 cabluri cu cleme de tip crocodil
- 2 cuie
- unu sau mai multe ghivece cu flori

Solul are o rezistență electrică care depinde de cantitatea de apă și nutrienți


din el. Din acest motiv putem privi solul ca un rezistor variabil într-un circuit
electronic. Combinația dintre apă și nutrienții din sol face ca solul să aibă o
anumită conductibilitate. Deci, cu cât există mai multă apă, combinată cu
nutrienți, cu atât mai puțin solul va avea rezistență electrică.
Prin nutrienții din sol vom înțelege diferite elemente chimice care sunt
esențiale pentru creșterea plantelor.

Rezistența electrică o vom determina prin citirea tensiunii pe pin-ul P0. Valorile
posibil returnate sunt cuprinse între 0 (fără curent) și 1023 (curent maxim).

Valoare măsurată Stare sol


Din mai multe determinări, convenim să 0 - 260 uscat
considerăm, pentru proiectul nostru: 261 - 900 mediu
901 - 1023 umed

Indicații: pinii pe care îi vom utiliza în experimentul nostru vor fi P0 (pin pentru
citire) și 3V (pentru furnizarea curentului electric) la care vom conecta cele
două cabluri.
73
Semnificația reprezentării grafice de pe Reprezentare Stare sol
ecranul lui micro:bit va indica dacă solul Pahar plin uscat
din ghiveci are nevoie sau nu de apă.
Pahar semi plin mediu
Pahar gol umed

74
13.2. Viteza unei bile

Ne propunem să determinăm viteza unei bile metalice pe care o lansăm într-


un jgheab de carton. Pentru acest proiect avem nevoie de:
- un micro:bit
- 4 cabluri cu cleme de tip crocodil
- o bilă de metal
- o bucată de carton sub formă de dreptunghi
- folii de aluminiu/staniol
- formula v = d / t (v- viteza, d - distanța, t - timpul)

fâșii de fâșii de
aluminiu carton aluminiu
S
(staniol) (staniol)
T
liniile după care vom
A
îndoi marginile
R
cartonului
T distanța d măsurată

bila

vedere din față a jgheabului


rezultat prin îndoirea
cartonului

75
Explicații: în momentul în care bila face contact cu cele două folii ale reperului
A, se închide circuitul format din cablurile care unesc pinii P0 și GND cu
respectivele folii. micro:bit-ul va reține, într-o variabilă pe care o notăm cu t0
timpul la care bila a ajuns la reperul A. Bila își continuă mișcarea până când
face contact cu foliile de la reperul B, închizând circuitul format din cablurile
care unesc pinii P1 și GND cu respectivele folii. Vom nota cu t1 variabila în care
vom reține timpul la care bila a ajuns la reperul B.

Timpul necesar bilei să parcurgă distanța dintre cele două repere îl vom nota
cu t și va fi egal cu diferența celor două măsurători, adică t = t1 - t0.
Măsurătorile se fac în mili secunde.

Distanța d măsurată între cele două repere A și B este constantă în cadrul


experimentului. Distanța o exprimăm în milimetri.

Pentru aflarea vitezei bilei vom apela la formula v = d / t

Exemplu:
pentru:
d = 1000 mm
t0 = 100 ms
t1= 500 ms

vom obține
v = 1000 /
(500 - 100) =
2,5 m/s

76
13.3. Viteza de alergare a unui coleg

Dorim să măsurăm viteza cu care aleargă, pe terenul de sport, un coleg.

Indicații:
Ne alegem două repere, R1 și R2 prin dreptul cărora va trece colegul nostru.
Măsurăm distanța dintre R1 și R2, pe care o vom memora, în programul nostru,
prin intermediul unei variabile pe care o notăm cu d. Privim la colegul care
aleargă: în momentul în care trece prin dreptul reperului R1 apăsăm pe
butonul A al lui micro:bit, iar când trece prin dreptul reperului R2 apăsăm pe
butonul B al lui micro:bit. La apăsarea pe butonul A programul memorează,
prin intermediul variabilei t1, timpul la care a trecut colegul nostru prin dreptul
reperului R1. Analog, t2 timpul la care colegul a trecut prin dreptul reperului
R2

Pentru a calcula viteza de alergare a colegului nostru prin dreptul celor două
repere folosim formula v = d / t, unde t = t2-t1
În programul alăturat, am ales distanța dintre R1 și R2 ca fiind de 3m.

77
13.4. Mărul cântăreț

Următorul proiect își propune generarea unor sunete la atingerea unui fruct
(un măr în cazul de față). Pentru acest proiect avem nevoie de:
Pentru acest proiect avem nevoie de:
- un micro:bit
- un cablu audio cu cleme de tip crocodil
- 2 cabluri cu cleme de tip crocodil
- o pereche de boxe audio
- un măr

boxe
audio

măr

mâna care ține cablul mâna care


ce face legătura cu atinge
pin-ul P1 mărul

78
O variantă de rezolvare
este:
Variabila sunet se
inițializează cu valoarea
212 pentru ca la prima
sa incrementare cu 50,
sunetul emis să fie Midle
C. La fiecare atingere a
mărului valoarea lui
sunet se incrementează
cu 50 programul având
grijă să nu depășim
intervalul (aproximativ)
Middle C - High C

O altă variantă de rezolvare permite ca la atingerea mărului, acesta să


genereze un șir de sunete (o „melodie”)

79
13.5. Banane muzicale

Ne propunem, folosind un măr, ca micro:bit-ul să producă sunete la atingerea


alternativ a două banane

boxe
audio

măr

banana1 banana2

mâna care atinge mâna care


banana1 sau ține
banana2 mărul

80
81

S-ar putea să vă placă și