Documente Academic
Documente Profesional
Documente Cultură
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.
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.
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
Descrierea tehnică
Î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
7
2. Programarea
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
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.
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)
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
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.
Ș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.
Exercițiu: afișați un mesaj compus din mai multe cuvinte. Folosiți pentru
afișare șirul “Te salut Ana!”
13
Varianta 2: Folosirea mai multor blocuri show string “Hello!”
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)
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.
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ă:
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
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
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
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.
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
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
28
• shake
• logo up
• logo down
• screen up
• screen down
• tilt left
• tilt right
• free fall
• 3g
• 6g
• 8g
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)
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.
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
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
Indicație:
se va folosi blocul set brightness n care se găsește în categoria Led
37
38
8. Imagini
Î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.
39
Imaginea formată pe ecranul
minicalculatorului virtual este
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.
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:
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
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:
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
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.
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)
53
54
10. Sunet
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.
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.
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
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
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)
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
60
micro:bit-ul va afișa:
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:
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
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 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
1 2 3 4
65
Programul
alăturat îl vom
încărca în
memoria
fiecărui
micro:bit folosit.
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:
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.
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
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).
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
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
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.
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
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
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
79
13.5. Banane muzicale
boxe
audio
măr
banana1 banana2
80
81