Unitat03_Les possibilitats de micro:bit I

P01_Icones intermitents






Només algunes consideracions:

  • Tenim una petita col·lecció d'icones a la nostra disposició. Si en volem una que no hi és, l'hem de crear.

  • La matriu leds és petita (5columnes x 5 files), però és un bon entrenament per a treballar amb matrius led més grans, complertes i, com no, espectaculars. En aquest cas, cal programar la shield en Python.

https://www.raspberrypi.org/blog/sense-hat-emulator/

  • La pausa la podem escriure nosaltres numèricament, encara que ens en surtin algunes per defecte. Així, podem triar temps més grans.

P02_Animació amb transicions

Si mireu la llibreria Basic veureu com una de les instruccions és show arrow. Heu de fer clic a ...more. Algunes de les llibreries disposen d'algunes instruccions en aquest format.

També podeu veure com disposem de la opció clear screen.

Visualitzar un string (cadena de caràcters) o un número. Les paraules usades (reservades) es fan servir en JavaScript i també en Python.

El bucle on start executa només una vegada el codi intern.

El bucle forever executa sempre el codi intern.

Fàcil !!!

P03_Animació amb transicions






La transició és un efecte que agrada, per tant l'hem d'utilitzar!!!

En aquest cas podem veure la diferència entre el bucle On start i el bucle Forever.


  • No cal dir que la pràctica admet múltiples variacions. Creeu les vostres.

P04_Animació amb transicions


Quan volem escriure un text usant aquesta llibreria, l'hem d'introduir entre cometes, que ja porta incorporades el bloc show string per defecte. En canvi, quan introduïm números no calen cometes.

Si volem treure per pantalla més d'una dada, caldrà deixar un o més espais després de la primera dada, per tal que no s'ajuntin. El temps també ens ajuda a una bona presentació.

P05_Variables internes

Podem veure com podem simular els valors de la temperatura, podem canviar el valor arrossegant el ratolí damunt la barra vermella, i el valor que escollim es mostrarà.

En general, el programa per llegir variables internes es pot fer amb aquest simple algoritme. Anirem llegint-les.

P06_Activar, desactivar, invertir leds

Programem amb makecode aquesta tirallonga i utilitzem la llibreria Led.

Utilitzem les instruccions plot, unplot i toggle.

Per a tenir una idea del que fan, recorda que has de posar el ratolí al damunt de les instruccions. També et pots posar el programa en castellà. Inicialment la versió castellana d'aquesta versió de makecode tenia defectes, ja que hi havia instruccions que no hi eren. Sembla que s'han anat resolent. Per exemple, a la llibreria Text hi faltaven instruccions.

El programa de la dreta és el mateix que el de l'esquerra. Les versions són makecode/JavaScript. La barra superior blava de makecode permet treballar d'ambdues maneres. Com diria Shakespeare: "As you like"

P07_Estat dels leds

El que fem és utilitzar un Led de la matriu, el (0,0), amb un període de t=2s, i semiperíodes iguals.

El botó A també el duu micro:bit incorporat.

Utilitzem la llibreria música (hi dedicarem la propera unitat) per tal que la música (els tons) sonin seguint l'estat del led.


Si voleu graficar qualsevol altre led, tingueu present la figura, per tal de veure que s'ha configurat en la forma led(columna, fila), on tant les files com les columnes van de 0 a 4 (5 files, 5 columnes).

Aquesta configuració ens sobta, ja que estem acostumats a pensar més aviat en (files, columnes), però també cal reconèixer que si canviem l'ordre és un bon exercici, igual que quan canviem la x i la y per altres lletres/variables.

P08_Dibuixem amb els leds

Mira d'explicar, abans de provar, què fa cadascun dels següents programes, de l'1 al 4.

Ara deixa un sol Forever i posa les quatre instruccions For seguides, de la 1 a la 4, dins del Forever. Després pots canviar l'ordre, si vols, o modificar el dibuix creat.

Es tracta de generar un efecte lluminós generant quadrats.

Programa 1

Programa 2

Programa 3

Programa 4

La captura de pantalla mostra el programa muntat, amb un sol Forever i els 4 bucles For.

La idea que us proposo tot seguit és fer espirals; primer només amb el plot-unplot i després usant el bucle For. La segona opció és més reduïda i més elegant, però per a arribar a la segona cal saber entendre i començar per la primera. Us deixo un enllaç amb l'arxiu sense la instrucció For.

https://drive.google.com/open?id=1e6OskAshosPxsY-bzfTnHS0WtX0HFNt1



En el cas de la versió sense el For, s'activarà el dibuix de l'espiral quan polsem B. Si polsem A, veurem a la matriu de leds el mateix dibuix.

És interessant que vegeu com es controlen i quins són els leds que s'han de graficar en cada instrucció For.

  • Mireu d'explicar com funciona. Com a indicació us diré que cada For dibuixa primer i després oculta les respectives línies de les espirals.

Per comprovar si l'encerteu, proveu de treure a makecode la instrucció de polsador A+B, de la llibreria Entrada. Poseu-hi dintre un sol bucle For, i veureu quins són els leds que il·lumina.

Sovint, per entendre el funcionament d'un programa, l'hem de provar en les seves parts. "Divideix i guanyaràs".

Tampoc no ens hem de quedar aquí. Amb el temps i una canya, podem pensar de:

  • Mirar de dibuixar la espiral a l'inrevés

  • Buscar altres estructures que permetin dibuixar la mateixa espiral, i veure perquè les descartem o les adoptem. Per exemple, pensar a veure de quina manera simplifiques al màxim el programa. Això ja no és tan fàcil, però l'error no ens ha de desanimar mai, ans al contrari. Per tal de fer una activitat com aquesta, cal pensar en el codi.

Per a l'educació primària el codi no és gens indispensable, però a la secundària sí. De tota manera, mireu, per exemple, una activitat programable en Python, Astro Pi zero (primària/1er cicle ESO):

https://projects.raspberrypi.org/es-ES/projects/astro-pi-mission-zero

O bé Astro Pi Space Lab(2n cicle ESO/Batxillerat/CF):

https://astro-pi.org/missions/space-lab/


Per al programa que es mostra tot seguit, mira d'explicar quin serà el resultat final. És una de les activitats que cal saber fer: saber llegir un programa.

Inicialitzem les variables fila i columna (recordeu que comencem a comptar a partir del zero).

Amb la variable i llegim cada fila, i amb la j la columna.

Si i=0, j llegeix i imprimeix de 0 a columna (de 0 a 4).

Si i=1, j llegeix i imprimeix de 0 a columna-1 (de 0 a 3).

  • Acaba tu les altres iteracions. Es tracta d'un recurs força utilitzat: un For dins d'un altre For.

P09_Buffer de display


Es tracta d'una representació en memòria de l'estat dels 25 leds.

Les funcions plot i unplot accedeixen al buffer directament.

Les funcions que mostren una imatge, número o cadena sobreescriuen el buffer.

En el primer cas, veurem el led(0,0) il·luminat, però en el segon no, ja que la funció show string sobreecriu tot el buffer de display.

P10_Polsadors/Botons A i B

Podem simular si pulsem els A i B alhora

P11a_Sacsegem la micro:bit

La decisió que pren la micro:bit en funció de la seva inclinació, o de si l'estem sacsejant o no, també la podem simular, però en aquest cas provar-ho queda molt millor :-)

P11b_Sacsegem la micro:bit i etc. etc.

Prova algunes d'aquestes opcions, però NO totes alhora, treu els blocs blaus cap a fora dels events de la llibreria entrada.

Es tracta d'una versió més complerta de la pràctica anterior

P12_Pins 0 1 i 2. Simulació



Podem veure com, polsant als pins respectius, el simulador detecta que ho hem fet. Més endavant ho farem amb polsadors externs, i enviarem així un senyal en aquestes entrades.

Es tracta de tres pins que tenen espai suficient per a ser punxats amb les pinces cocodril. Són entrades analògiques.

P13_Rotació en l'eix y

Com veiem, podem incloure una nota en el mateix entorn makecode.

Es tracta de veure si la targeta s'ha girat més de 10º en l'eix y.

Per tal de controlar el gir de l'eix x, utilitza el paràmetre timbre.


Resulta interessant l'explicació que fa micro:bit (en part en castellà) sobre la llibreria d'entrada:

https://makecode.microbit.org/reference/input

I l'anivellador que ens proposa com a exemple, que ens avisa si es produeixen girs en x i en y

https://makecode.microbit.org/reference/input/rotation

L'acceleròmetre mesura l'acceleració en el moviment en els eixos, acceleració(x,y,z). L'acceleració es considera positiva cap a la dreta i negativa cap a l'esquerra en l'eix x. En l'eix y, serà positiva si s'apropa a nosaltres i negativa si s'allunya. Pel que fa a l'eix z, és positiva cap amunt.

La llibreria d'entrada té una instrucció que permet ajustar el rang de l'acceleròmetre. El rang és el major nombre de gravetats d'acceleració que mesurarà: 1g, 2g, 4g, 8g. Tant si mesurem l'acceleració com quan seleccionem les gs, qualsevol número més gran serà ignorat per la micro:bit.

P14_Detecció de moviment

Es tracta de mesurar el moviment envers l'eix x.

Desem el valor de l'acceleració x a la variable acceleracioX.

Per tal de detectar el moviment a dreta i esquerra, posem el valor absolut de la variable.

P15_Pedra paper tisores

Es tracta que juguin al clàssic joc d'una manera més actual, més a l'estil segle XXI.

Com es pot veure, resolem l'exercici amb dos bucles if then else niats. Niar bucles és una constant en programació.

En aquest bucle, si es compleix la condició, que la construïm gràcies a la llibreria Lògica, s'executa el que hi ha dins el bucle si condició = true aleshores; si no, s'executa el que hi ha dins del bucle si no (else).

Observeu el codi en JavaScript. Fixeu-vos en la instrucció

if (numero == 1) {

Hi ha dos iguals. Fins i tot se n'hi poden posar 3. En els programes que farem no notarem la diferència. En JS s'han de posar per indicar una condició lògica, que pot ser certa o falsa (o sí o no). Si només posem un igual en el codi anterior, es queixarà. Proveu-ho.

P16_Nivell de llum

Prova de simular el programa. Canvia el valor de la quantitat de llum rebuda, arrossegant amb el ratolí sobre el selector rodó. Tot seguit, prova de descarregar el programa.



P17_Nivell de llum amb la funció plot

Es tracta de convertir la pantalla led amb una barra. S'il·luminaran més leds com més alt sigui el nivell de llum, en direcció vertical.

La imatge de sota indica el simulador. Com que detectem nivell de llum, podem veure les dades de la simulació o les reals. A més, les podem desar en un arxiu csv o txt.


P18_Temperatura amb la funció plot

Repetim la pràctica anterior però ara amb la variable Temperatura. Creem aquesta variable, on s'emmagatzemaran els valors de temperatura registrats. Valor màxim a mesurar = 50.

La funció plot envia dades al PC via USB, cosa que ens permet registrar aquestes dades.

P19_Paràmetre en forma numèrica

Ara es tracta que el programa mostri el valor numèric per pantalla. Quan el valor de la temperatura es mostra per la pantalla de leds (en scroll), cal que programem una pausa. Podem simular el programa ;-)

P20_ Direcció del camp magnètic B


La brúixola integrada a micro:bit permet llegir, en graus, la direcció del camp magnètic B. Desem el valor de la funció en una variable.

P21_ Brúixola



Prèviament hem de calibrar la brúixola, per tal d'aconseguir un resultat satisfactori. Ens apareixerà un punt a la matriu de leds i ens demanarà que dibuixem un cercle, o bé que il·luminem tots els leds, etc. Un cop realitzada aquesta operació, ens apareixerà l'emoticona del somriure (smiley).

El programa ens assenyala els punts cardinals, en l'interval de graus que l'hi hem definit.

P22_Detector de camp magnètic


Tal i com hem fet el programa, es detectarà un camp magnètic proper. Podem ajustar i jugar amb el paràmetre F/6, posant un número més gran o més petit en funció del grau de detecció. D'aquesta manera ajustem la sensibilitat del detector.

Si volem mostrar el número F, posem aquest bloc al para siempre i hem de posar la instrucció graficar (x,y) (2,2) al bloc al iniciar.

P23_Temps transcorregut

Quan activem la micro:bit, hi ha una variable que s'inicialitza, i comença a comptar el temps (cronòmetre). Compta el temps des de l'inici del programa i el visualitza.

Mireu a la llibreria d'entrada i veureu dos blocs que fan això: un en milisegons (ms) i l'altre en microsegons(us).

P24_Dibuixem en el display






La inicialització de variables en aquest cas no cal, ja que en acabar el programa ja inicialitzo n, i la variable índex ja la inicialitza el mateix For.

La idea és desplaçar-se per la pantalla de leds per tal de dibuixar una figura determinada (de triangles en dibuixarem uns quants), però per anar incrementant la variable n en lloc de posar els números directament.

  • Fixa't que en el programa, he creat la variable n i la vaig incrementant en 1. Però no l'he feta servir en els bucles For. Posa-la on creguis convenient per tal que el programa no pateixi modificacions

  • Fixa't en la diferència entre usar set i usar change (establecer y cambiar, respectivament)

  • Prova de fer un petit programa, creant una variable n, i treu per la sortida el seu valor. Primer incrementa n (n=n+1) usant set i després usa change. Compara els valors de sortida

P25_Vumeter led




Utilitzem ara una instrucció de la llibreria Bucles, Repetir.

La de repetir és una de les tasques que més encomanem als ordinadors. El primer bloc dibuixa la diagonal i el segon l'esborra.

Si fem servir el bucle For (Para), el programa es comporta de la mateixa manera.

Fixeu-vos que, al contrari del programa anterior, ara sí que cal inicialitzar les variables.

  • Mira de fer un programa en el qual s'il·lumini el led(0,4), s'apagui i s'il·lumini el led(1,3), aquest s'apagui i s'il·lumini el led(2,2), aquest s'apagui i s'il·lumini el led (3,1), i finament aquest s'apagui i s'ul·lumini el led(4,0). Ara fes el mateix però fent el camí invers (ara baixa per la diagonal). Utilitza les variable suma i resta, però ara fes-ho amb la instrucció cambiar enlloc d'establecer.

Aquest darrer programa serà el Ud03_P025_Vumeter led 2

P26_Calculadora

Una idea pot ser que aquest programa el facin estudiants d'ESO per tal que l'alumnat de primària l'utilitzi.

Amb el polsador A seleccionem el primer valor. Creem la variable primerValor per tal que s'emmagatzemi el primer valor polsat.

Amb el polsador B és al mateix que amb el primer valor, però ara amb el segon valor.

Noteu que la calculadora està pensada per a usar números del 1 al 9.

Polsant A+B seleccionem el signe.

Sacsejant la micro:bit, podem mostrar el resultat. És com si el fet de sacsejar ens servís d'interruptor. Així obtenim el resultat de l'operació seleccionada.

Amb aquesta calculadora podem treballar, a banda de les operacions bàsiques, els números negatius i els decimals.

Més endavant, quan treballem el port sèrie, treballarem també la manera d'enviar dades a la micro:bit via sèrie.

Pràctiques proposades

P27_Triangles amb Fors anidats

Seguint l'exemple fet al programa 08, per a dibuixar triangles, mira de dibuixar la figura, sense mirar el programa:

*****

****

***

**

*

No sempre surt a la primera. Juga!!!

Anima't a provar altres configuracions formant triangles, per exemple:

*

**

***

****

*****

O bé altres configuracions en què l'increment-decrement es realitza horitzontalment, enlloc de verticalment, com a les dues figures anteriors. Usa bucles For niats.

P28_Triangles amb la sentència/instrucció repeat

Dibuixa la figura anterior però amb la instrucció repeat.

Utilitza un repeat per a cada línia, i la instrucció establecer

P29_Nombres aleatoris

Fes un programa que generi un número aleatori entre un interval fixat. Usa el pin 0, el pin 1 o el pin 2 (tria), i activa'l connectant-te entre el pin i la massa. Millor si fas servir pinces de cocodril per a connectar-te. Si envies directament el pin a massa, funciona també.

P30_Llegim i mostrem variables

Fes un programa que:

  • Polsant A, llegim el nivell de llum i l'associem a una variable anomenada llum

  • Polsant B, hem de visualitzar per pantalla el valor que hem emmagatzemat al polsar A

P31_Escales de temperatura

Fes un programa que llegeixi la temperatura en graus Celsius (ºC), i la passi a graus Farengheit (ºF) i a graus Kelvin(ºK). Comprova que els resultats són correctes.

P32_Escales de temperatura

Fes un programa que:

  • Polsant A es mostri la temperatura en ºC, i polsant B es mostri en ºK

  • En repòs ha d'aparèixer un ? per pantalla

  • Transcorregut t = 1s després d'haver accionat A o B, també ha d'aparèixer l'interrogant, o qualsevol altre símbol o lletra, com una T, per exemple.

Enjoy!!!