El primer que he de dir és que, si voleu treballar amb arrays amb micro:bit, millor usar el codi. Això no treu el fet que es poden fer molts programes amb arrays usant makecode, però ja m'he trobat diverses vegades que el pas de makecode a codi no es fa prou bé, i això fa que fins i tot programes aparentment senzills no funcionin. Segur que això es millorarà, però ara cal tenir present el codi.
Es tracta d'una app creada per Ellen DeGeneres. Per veure com es juga al joc, mireu l'enllaç:
https://bits.blogs.nytimes.com/2013/05/03/ellen-degeneres-iphone-game/
El joc està tret de la pàgina oficial de micro:bit.
La idea és fer un hipotètic mapa de constelacions.
Amb líndex podem accedir al valor de la variable a la que apunta. Així: list[0]=5 , list[1]=2, list[3]=7, etc.
Tal i com es mostra al programa, veiem que la variable n ens indica quin mapa dibuixem i quantes estrelles hi ha en aquest mapa (en aquest cas, 7).
Com que l'índex s'executa a partir del zero, es dibuixarien 8 estrelles (l'índex comença a partir del 0). Per això restem 1.
Amb k=4 veureu millor el funcionament del programa. També és una bona tècnica veure com funciona part del programa. Per exemple, mostreu certs valors si polseu el polsador B, o visualitzeu-los via port sèrie.
Proveu el programa per valor de k=0 fins a k=5 i mireu d'entendre com funciona el programa.
Recordeu que no hem considerat el fet que no es puguin repetir les constel·lacions, cosa que complicaria el programa i en aquest cas és recomanable usar el codi.
El bucle For del programa ens permet llegir els valors de tota la matriu, anomenada list. Així, veiem tots els valors de la matriu per pantalla, des de list[0] fins a list[4].
Després esborrem la pantalla led i per a tornar a visualitzar els valors, hem de tornar a polsar el polsador B.
En l'exemple veiem la suma de dues matrius, A i B, element a element.
La micro:bit pot llegir dades de magnituds físiques i graficar-les. També permet emmagatzemar-les amb arxius txt i csv (Excel o altres fulls de càlcul, com el de google o el calc).
Primer programa. Polsant A, veiem com i es va incrementant i la barra de leds també. Hem convertit la pantalla en una barra de leds vertical. Podem veure les dades que es van llegint i imprimit per consola.
Segon programa. Si NO sabem quin és el rang que hem d'imprimir, especialment el valor màxim, posem up to 0.
Polsant B veiem com, un cop arribat al 50, ja s'imprimeix per pantalla la "barra gràfica", de manera proporcional a la xifra. Aquesta tècnica es coneix amb el nom d'autorang.
He capturat una pantalla d'aquest segon programa amb les dades de la consola i del gràfic que s'hi dibuixa (podem capturar també arxius de dades).
En la captura de pantalla podeu veure les icones:
Podem veure com la barra de leds llegeix les xifres proporcionalment un cop llegida la xifra màxima.
Fixeu-vos en la imatge següent que a la part superior dreta, icona simulador, podeu pausar la imatge simulada.
En aquesta pràctica veiem com:
En les imatges veiem petits programes per tal d'entendre com ho fem per a mostrar dades pel port sèrie. Es tracta doncs de treballar la llibreria serial. Es troba en la zona on hi ha les llibreries avançat.
Format de les dades. El visor de dades reconeix el format de la seva sortida. Si es tracta de valors, els representa en el visor gràfic i a la consola. Si es tracta d'informació (text) les dades no es grafiquen, però sí es mostren a la consola.
Els formats de dades són:
string o cadena de text, "Això és una cadena de text"
números,
array de números , tots els valors emmagatxemats a l'array
name value pairs (NVP), a un valor se li assigna un nom que indica què és aquest valor i d'on prové. el format és nom:valor . La línia s'escriu en consola, i el visualitzador de dades la reconeix com un valor i la grafica. Cada nom es representarà en un gràfic diferent.
El programa serveix per a veure que els números els podem treure per consola, i els podem graficar (són números).
Mireu els gràfics que ens ofereix el visor del simulador. Es tracta dels valors numèrics desats a la matriu/array.
El programa és molt interessant per a veure com canvien els valors en una variable, en aquest cas diamond, si anem canviant el valor de amb què indexem el For: index.
Com que es tracta de números, el simulador els graficarà, i veurem que el gràfic va generant gràfics en forma de diamant. Per a entendre què fa cadascuna, proveu de deixar només una instrucció de les quatre que hi ha: la primera del bucle si. Després afegiu la primera del bucle si no. Afegiu les altres dues. Així, si afegim les quatre instruccions que tenim al bucle if then else (si entonces si no), veurem millor què fa cadascuna.
Podem graficar els valors de temperatura i llum polsant A cada un cert temps. Si tenim la micro:bit connectada, la consola que s'obre és la de la micro:bit, i podem llegir i graficar les dades de temperatura i de llum a temps real.
El valor Acceleration té tres subvalors: X, Y, Z. El valor es separa del subvalor amb un punt.
Partint d'una data i d'una hora en la qual iniciem una recollida de dades, podem saber quan hem pres les mostres.
En la pràctica podem veure el temps que sacsegem (en segons) la micro:bit; també podem veure els valors de la temperatura i el nivell de llum per a cada instant que prenem una mostra d'aquestes magnituds (cada vegada que sacsegem la micro:bit).
En aquest cas la simulació ens va prou bé, ja que podem variar més la llum i la temperatura i es veu millor en el gràfic que amb valors reals.
Podem definir UN node de ràdio que els identifiqui com a emissor i com a receptor. Podem definir 100 nodes (del 0 al 99). El node és UN mateix número que identifica la connectivitat. Després definim quina targeta és emissora i quina és receptora.
En aquesta pràctica utilitzarem la llibreria ràdio.
Descarregueu primer el codi de l'estació emissora i després el de la receptora. Després, connecteu l'estació emissora a una pila i la receptora deixeu-la connectada amb el cable USB-microUSB. D'aquesta manera podeu veure la lectura del port sèrie, i veureu com varia la temperatura en temps real, i el gràfic també. A sota de la imatge de la micro:bit, al makecode, us apareixerà un botó amb el nom mostrar consola Dispositivo.
Programa de l'estació emissora (E)
El node és el número 99. En aquest cas, hi connectarem dues targetes. Identifiquem quina és la targeta emissora (E) i quina és la receptora (R).
A la targeta emissora llegim la temperatura, l'emmagatzemem a la variable Temperature, l'enviem a l'estació receptora i ho repetim cada segon.
Programa de l'estació receptora (R)
Al rebre el valor de la variable Temperature, la mostrem al display de leds i l'enviem pel port sèrie, indicant que es tracta de graus Celsius (C).
Programa Emissor
Establim la targeta emissora i la receptora, el node i veiem que aquesta targeta envia la força de l'acceleració (en les 3 dimensions) a la targeta receptora.
Programa Receptor
Sintonitzem la targeta receptora amb l'emissora, a al rebre el número enviat, el mostra. També pel port sèrie.
Tingueu la targeta receptora connectada per capturar les dades i graficar-les per consola.
Grafiquem la funció y = (x-5)^2
Variant la pausa, podrem variar l'amplada de la representació de la funció.
COm que usem el port sèrie per escriure x i també y, també podem veure els dos gràfics, i veiem quin és el valor d'y en funció del valor d'x.
Si voleu més o menys valors, substituïu el 10 del bucle For per altres valors.
Per graficar funcions a la vegada, utilitzem els arrays. A la imatge de sota podeu veure el resultat.
Aquí podeu controlar el número de mostres i el temps de mostreig, a banda de les variables a graficar.
Tot seguit veiem l'arxiu csv obert amb LibreOffice. Si teniu LibreOffice instal·lat, us obrirà directament aquesta extensió.
Primer ens posa el temps en segons, fins a la mil·lèsima. Després, els tres valors mesurats d'acceleració (x,y,z), tal i com estan col·locats en la matriu. També hem de fer notar la claredat de l'arxiu de text.
El programa emissor envia els valors de la temperatura i del nivell de llum. Tal i com hem vist, per exemple, en el programa P15, si només volem enviar un valor, enviem la instrucció radio enviar número Temperature.
Si hem d'enviar més d'un paràmetre, els hem d'enviar per valor, tal com veiem al programa de sota. Així el primer valor que s'envia és la temperatura i el segon la llum. En aquest cas les dades s'envien cada minut. Si n'hem de recollir durant un temps prolongat, les dades es poden llegir en intervals a conveniència de l'experiment.
Programa Emissor
Programa Receptor
Us volia mostrar una adreça de youtube que mostra com utilitzar OpenLog amb micro:bit. Incloc també l'adreça del tutorial:
https://www.youtube.com/watch?v=9pGuniTrXRQ
https://core-electronics.com.au/tutorials/data-logging-with-the-microbit-and-openlog.html
Aquí en teniu el pdf, extret de la web anterior:
Expliquem-ho una mica. OpenLog permet registrar dades via port sèrie i admet targes microSD de fins a 64 GB. OpenLog permet registrar una gran quantitat de dades en sèrie. Quan escriu consumeix 23 mA, 6 en repòs. Podem connectar OpenLog als 3,3 V de micro:bit, que recordeu que aquest pin dóna fins a 90 mA !!!
Si connectem OpenLog, aquest recull les dades que li enviem via sèrie, i les emmagatzema a la targeta microSD.
Els pins d'OpenLog estan pensat per a ser connectats directament a una placa Arduino, així que per a connectar-lo a una micro:bit s'ha de preparar algunes connexions. Un cop interconnectats micro:bit i OpenLog, posem la targeta a OpenLog (de 64 MB fins 64 GB), segons estimació de dades a emmagatzemar.
Un cop fetes les connexions, cal fer el programa.
NO he provat encara OpenLog amb la micro:bit, un cop el provi ja us diré si tot ha anat com havia d'anar.
P21_Arrays i matriu de leds
Disposem de dos arrays: llista1 i llista2. Cada llista pot emmagatzemar 5 números de llista[0] a llista [4].
llista1 té les coordenades x dels leds que volem activar del display de leds, i llista2 les coordenades y.
Fes un programa que il·lumini els leds: (0,4), (2,3), (4,0), (3,1), (1,2)
P22_Arrays, random numbers i matriu de leds
Es tracta de repetir el programa anterior, però els valors que contindran els arrays han de ser números aleatoris entre 0 i 4.
P23_Micro:bits E/R
Feu un programa que permeti encendre i apagar un led connectat a l'estació receptora, o un led de la matriu led.
El led es connectarà al terminal P2. Poseu-hi una R en sèrie d'un valor baix (de 47 a 220 Ohms).
Si polsem A de la emissora, s'activarà el led de la receptora; si polsem B de la emissora, el led de la receptora s'apagarà.
P24_Acceleració x
Feu un programa que llegeixi els valors de l'acceleració de l'eix x i els desi en un arxiu acceleracio.txt. La lectura s'ha d'efectuar cada segon. Observeu el gràfic i feu-ne una captura de pantalla.