Laboratorul 01. Introducere în Microbit

Placa de dezvoltare Microbit

Microbit (BBC Micro Bit sau micro:bit) este un microcontroler (minicalculator simplu cu capacități limitate care poate rula un singur program) dezvoltat cu ajutorul BBC în scopuri educaționale. Printre caracteristicile principale ale plăcii se numără:

  • Nordic nRF52833 SoC
    • Procesor ARM Cortex-M4 core cu 64 MHz
    • Memorie RAM: 128 KB
    • Memorie Flash: 512 KB
  • Interfata de conectare prin USB
  • Microfon si speaker
  • Antena radio
  • 2 butoane programabile
  • 25 de LED-uri
  • 3 pini programabili
  • Senzori precum: atingere, lumină, temperatură, busolă sau accelerometru

Simulator Microbit

Pentru a putea simula interacțiunea și programarea unei plăci Microbit, vom folosi o platformă online numită MakeCode. Primii pași pe care îi vom face în acomodarea cu acest simulator este să creăm un proiect și să scriem un program folosind Visual Programming.

Visual Programming (Blockly)

Visual Programming sau Blockly este o bibliotecă dezvoltată de Google care ne permite să scriem coduri folosind blocuri care se pot lega împreună folosind mouse-ul (drag-and-drop). Odată ce programul este “asamblat” și rulat, în spate se generează codul echivalent într-un limbaj high-level precum Python sau JavaScript (în cazul platformei MakeCode, codul rezultat este în JavaScript).

Avantajul la folosirea Blockly este că nivelul de cunoștințe de programare necesar este redus, iar un program minimal poate fi construit cu ușurință. Dezavantajul major apare în momentul în care dorim să construim programe mai mari și mai complexe, dezvoltarea acestuia într-un limbaj de programare normal fiind mult mai rapidă și mai facilă.

În continuare vom vedea care sunt câteva din block-urile principale din cadrul platformei MakeCode:

Block-uri de bază

Acestea sunt block-uri simple utilizate pentru simularea unui ecran din LED-urile disponibile pe placă, dar și alte funcții precum delay-uri, care întârzie execuția block-ului următor de cod. Câteva exemple sunt:

  • Generarea de imagine folosind LED-urile:

  • Afișarea unui număr folosind LED-urile:

  • Întârzierea execuției următorului block de cod:

Block-uri de interacțiune cu funcționalitățile plăcii

Acestea sunt block-urile care interacționează cu senzorii disponibili pe placă precum cei de atingere, giroscop (pentru înclinație) sau temperatură, dar și cu alte componente precum cele două butoane de pe placă. Câteva exemple sunt:

  • Detectarea înclinării repetate a plăcii:

  • Detectarea atingerii (senzorul se află sub logo):

  • Detectarea apăsării butonului:

Bucle repetitive

Secțiunea de block-uri cuprinsă în cadrul acestui block se va repeta de un număr specific de ori. Cele mai importante sunt:

  • Repetarea unei secțiuni de un număr repetat de ori:

  • Repetarea unei secțiuni de un număr repetat de ori folosind o variabilă:

  • Buclă repetitivă condițională:

  • Întreruperea unei bucle repetitive:

Block-uri logice

Aici avem block-uri care execută block-urile interioare doar dacă o anumită condiție este îndeplinită, dar și blocuri care întorc o valoare logică (adevărat sau fals). Cele mai importante sunt:

  • Secțiune condițională - executată dacă valoarea este adevărată:

  • Verificarea egalității a două numere:

  • Verificarea valorii logice a două valori:

Toate block-urile explicate pe categorii pot fi găsite aici.

Interacțiunea cu platforma

Pentru a crea un proiect nou, intrăm pe pagina platformei MakeCode și apăsăm pe butonul “New Project”. Vom scrie apoi un nume pentru noul proiect și apoi vom apăsa “Create”. Mai jos vedem cum arată platforma atunci când creăm un proiect nou:

În partea stângă avem plăcuța cu care putem interacționa (fie apăsând unul din cele doua butoane sau logo-ul, fie înclinând placa). În partea centrală avem block-urile pe care le putem utiliza grupate în foldere, pe care le putem folosi cu “drag-and-drop” și apoi le putem uni. În partea din dreapta avem locul unde compunem programul din block-uri.

Platforma nu stochează proiectele pe care le scriem, aceasta folosindu-se de facilitățile de stocare ale browser-ului. De aceea, pentru a putea folosi proiectele ulterior, trebuie să le descărcăm folosind butonul “Download”. Proiectul se va salva local sub forma unui fișier .hex . Ulterior, în pagina principală, în loc să creăm un proiect nou, avem opțiunea de a selecta “Import” și a încărca fișierul .hex .

Un exemplu de program care poate fi scris este următorul:

Acest cod va genera folosind LED-urile de pe placă un anumit tip de față în funcție de interacțiunea pe care o avem cu placa din partea stângă a browser-ului. De exemplu, dacă apăsăm butonul A, vom obține o față zâmbitoare ca mai jos:

Exerciții

După rezolvarea unui exercițiu, salvați proiectul local cu un nume sugestiv pentru a nu pierde ceea ce ați reușit să lucrați și pentru a putea accesa ulterior rezolvările. Pentru fiecare exercițiu creați un proiect nou.

  1. Creați un proiect nou în care să reproduceți codul dat mai sus în exemplu. Puteți să ștergeți block-urile de “on start” și “on forever” create automat la generarea proiectului.
  2. Simulați rostogolirea unui zar: la “scuturarea” plăcii se va afișa un număr aleator între 0 și 6. Hint: Grupul de block-uri “Math”
  3. Generarea unei secvențe folosind ecranul din LED-uri. Veți genera mai întâi o imagine, iar după 2 secunde de întârziere, vă veți scrie prenumele (de preferat prescurtat) sau o poreclă. În final după încă o întârziere de 200 de milisecunde, veți aprinde toate led-urile de pe plăcuță (simularea umplerii ecranului).
  4. În funcție de butonul apăsat pe placă generați o imagine care să fie afișată.
  5. Joc de sunet: Dacă se generează un zgomot, ecranul de LED-uri se va lumina pentru două secunde. În momentul în care este din nou liniște, ecranul de LED-uri va fi din nou gol. Hint-uri: grupul de block-uri “Input” și variabile.
  6. Generați o bară de tip “nivel” din ecranul de LED-uri, care să reflecte nivelul de luminozitate. Hint: grupul “Input”.
  7. Generați o secvență de imagini pe ecran la un interval prestabilit.
  8. Creați un timer. La apăsarea butonului A, se va porni timerul și se va afișa o imagine pe ecran, iar la apăsarea butonului B, se va opri timerul, iar numărul de secunde va fi afișat pe ecran. Hint: grupul de block “Input” la “More” și grupul “Math”.
  9. În funcție de interacțiunea cu placa (apăsarea unui buton, a logo-ului sau “scuturarea” plăcii) redați câte un sunet diferit și afișați pe ecran câte o imagine.
  10. Lumină inteligentă: dacă nivelul luminii scade sub un anumit prag, se va lumina complet ecranul; dacă nivelul crește peste un anumit prag se va lumina complet ecranul. Mai mult, se va reda și un sunet corespunzător pentru zi/noapte.
  11. Exercițiu avansat: Animal de companie
    1. Animalul este reprezentat printr-o față zâmnbitoare sau supărată afișată pe ecran.
    2. Pentru a “mângâia animalul” se apasă logo-ul. Se va reda un sunet corespunzător atunci când este apăsat logo-ul.
    3. Se va da drumul la un timer imediat ce programul pornește, iar dacă se trece de 10 secunde de când nu a mai fost mângâiat, “animalul” va scoate un sunet corespunzător. Dacă se trece de 20 de secunde de când nu a mai fost mângâiat, “animalul moare” și se afișează un “X” pe ecran sau o altă imagine reprezentativă (fiți creativi).
    4. Timer-ul este resetat de fiecare dată când se apasă logo-ul.
info2/laboratoare/01.txt · Last modified: 2021/03/16 00:35 by alexandru.vochescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0