Taula de continguts:

Creeu un nivell d’esperit elèctric: 15 passos
Creeu un nivell d’esperit elèctric: 15 passos

Vídeo: Creeu un nivell d’esperit elèctric: 15 passos

Vídeo: Creeu un nivell d’esperit elèctric: 15 passos
Vídeo: Converses a l'Espai Ciència | Ramon Folch 2024, Juliol
Anonim
Creeu un nivell espiritual elèctric
Creeu un nivell espiritual elèctric

Utilitzeu aquest nivell espiritual per mostrar de forma ràpida i senzilla la inclinació de qualsevol objecte adjunt.

Creat per Kaitlyn de Raffles Institution.

Pas 1: objectius

Apreneu a llegir la inclinació amb l’acceleròmetre incorporat de micro: bit.

Apreneu a treballar amb la pantalla LED 5x5 de micro: bit.

Pas 2: materials

1 x micro: bit de BBC

1 x cable micro USB

2 piles AA

1 x doble bateria AA

Pas 3: Pre codificació: connecteu el vostre micro: Bit

  1. Connecteu el bit micro: BBC a l'ordinador mitjançant un cable micro USB.
  2. Accediu a l’editor javascript del micro: bit a makecode.microbit.org.

Pas 4: Pas 0: flux de codi

Abans de començar a escriure el codi, hem de decidir què volem aconseguir amb el programa i en quin ordre s’ha d’executar cada component.

Per al nivell espiritual elèctric, els passos que farem en el codi de cada bucle són:

  • Llegiu les lectures d’inclinació des de l’acceleròmetre.
  • Convertiu les lectures d’inclinació en nivells d’inclinació que es mostraran a la matriu de LED.
  • Comproveu si hi ha canvis en les lectures del nivell d’inclinació del bucle anterior.
  • Creeu un conjunt de coordenades LED per a diferents casos i direccions d’inclinació.
  • Dibuixeu les coordenades de LED a la matriu LED de micro: bits.

Algunes de les funcions addicionals que hem d’incloure són:

  • Calibratge per a la posició inicial d’inclinació.
  • Tornant al calibratge d'inclinació per defecte.

Pas 5: pas 1: definició de variables

Comencem definint les variables necessàries tal com es mostra. Un desglossament d'algunes variables són:

  • tiltList: matriu que emmagatzema l’extensió de la inclinació dels valors 0-4 en l’ordre [esquerra, dreta, endavant, enrere]
  • tiltBoundary: límit del primer nivell d’inclinació entre 0 (sense inclinació) i 1 (inclinació lleugera)
  • prevState: Matriu que emmagatzema els valors d’inclinació del micro: bit d’un bucle anterior en el mateix format que tiltList, que s’utilitza per comprovar si hi ha un canvi d’inclinació entre les iteracions
  • ledPlotList: Traceu matrius de coordenades led en la forma (x, y). Per definir una matriu, fem servir el número de tipus per indicar una matriu imbricada de variables de tipus: nombre.

Pas 6: Pas 2: convertiu els valors d'inclinació a nivells

Com que la matriu LED 5x5 només pot mostrar tanta informació, els valors d’inclinació reals no seran útils per a la visualització.

En canvi, una funció tiltExtent () pren el paràmetre num, que fa referència al valor d’inclinació de l’acceleròmetre i converteix aquests valors d’inclinació (num) en nivells d’inclinació de 0 a 4.

0 indica cap inclinació en la direcció indicada i 4 indica una inclinació molt gran, mentre que -1 es torna quan hi ha un error.

Aquí, tiltBoundary i tiltSensitivity s’utilitzen com a valors límit entre els nivells d’inclinació.

Pas 7: Pas 3: Compileu els nivells d’inclinació

Les dues funcions checkRoll () i checkPitch () escriuen els nivells d’inclinació obtinguts de tiltExtent () a tiltList per als eixos de desplaçament (esquerra-dreta) i de pitch (endavant-enrere) respectivament.

Abans d’utilitzar els valors d’inclinació, els calibrem utilitzant un valor a zero tant per al to (zeroPitch) com per al roll (zeroRoll) obtinguts d’una funció de calibratge escrita més tard.

Com que les lectures de l’acceleròmetre són negatives tant per a la inclinació esquerra com per a la directa, hem d’utilitzar la funció Math.abs () per obtenir el mòdul del valor negatiu que es donarà a la funció tiltExtent () com a paràmetre per a aquestes dues direccions.

Pas 8: pas 4: escriviu funcions LEDPlotList

Després d’haver obtingut els nivells d’inclinació a tiltList, ara podem escriure les funcions de traçat de leds per als diferents casos que puguin sorgir, és a dir,

  • plotSingle (): Inclina només en una sola direcció, prenent com a paràmetre l’extensió de la inclinació en una direcció determinada.
  • plotDiagonal (): Inclina en dues direccions de la mateixa magnitud, prenent l’extensió de la inclinació en qualsevol direcció com a paràmetre.
  • plotUnequal (): Inclina en dues direccions de magnituds diferents, prenent com a paràmetre la extensió de la inclinació en cada direcció. Utilitza primer plotDiagonal () i després s’afegeix a la matriu ledPlotList.

Aquestes funcions de traçat escriuen una matriu de coordenades de led a ledPlotList que es representaran més endavant.

Pas 9: pas 5: dibuixeu la matriu LED per a cada cas

Utilitzant les funcions de traçat dels tres casos del pas 4, ara podem traçar la matriu LED real per a les diferents combinacions possibles de nivells d’inclinació. Com que les tres funcions del pas 4 no discriminen amb la direcció, hem d’ajustar els valors de coordenades passats a la matriu de LED per representar els LED en les direccions correctes.

PlotResult () conté múltiples si hi ha condicions que comproven el tipus d’inclinació i representen la matriu LED en conseqüència mitjançant led.plot (x, y). Les possibles combinacions d’inclinació són:

Direcció única: només a l’esquerra o només a la dreta

Direcció única: només cap endavant o només cap enrere

Dues direccions: endavant-esquerra o endarrere-esquerra

Dues direccions: Endavant-dreta o Endarrere-dreta

Nota: Per a la inclinació en dues direccions, cada combinació pot tenir la mateixa o diferent magnitud (comprovada comparant maxX i maxY) i, per tant, traçada mitjançant plotDiagonal () o plotUnequal () respectivament.

Pas 10: pas 6: escriure funcions de calibratge

Un cop completat el gruix del codi, ara afegim les funcions calibTilt () i resetTilt ().

calibTilt () permet als usuaris tarar la inclinació a zero a la posició actual del micro: bit

resetTilt () restableix el calibratge de la placa al seu estat original.

Pas 11: Pas 7: Escriure la funció d'estat

Afegim una funció simple checkState () per comprovar si els nivells d’inclinació han canviat respecte a una iteració anterior.

Si no hi ha canvis en els nivells d’inclinació d’una iteració anterior, és a dir, stateChange == 0, podem passar directament a la següent iteració i ometre el traçat de la matriu LED, reduint el càlcul necessari.

Pas 12: pas 8: unir-ho tot, part 1

Ara, finalment, podem col·locar totes les funcions necessàries al bucle infinit del micro: bit per executar-lo repetidament.

En primer lloc, establim els botons A i B al micro: bit a les funcions calibTilt () i resetTilt () respectivament mitjançant input.onButtonPressed (), i dibuixem una marca a la matriu LED quan es completa el calibratge.

Pas 13: pas 9: unir-ho tot, part 2

A continuació, executeu les funcions necessàries segons el nostre flux de codi al pas 0 i comproveu si hi ha un canvi d'estat (és a dir, hi ha un canvi en la inclinació del micro: bit des de l'última iteració).

Si hi ha un canvi en els nivells d’inclinació, és a dir, stateChange == 1, el codi actualitzarà prevState als nous nivells d’inclinació i tornarà a establir stateChange a 0 per a la següent iteració i traçarà els nivells d’inclinació actualitzats a la matriu LED mitjançant PlotResult ().

Pas 14: Pas 10: Muntatge

Feu clic al codi completat al vostre micro: bit.

Connecteu el micro: bit i la bateria de manera segura a qualsevol objecte i ja està a punt per utilitzar-lo.

Increïble

Diverteix-te amb el teu nivell espiritual elèctric! I mentre hi esteu, per què no intenteu ampliar les capacitats del sensor d’inclinació o fins i tot convertir-lo en un joc?

Aquest article és de TINKERCADEMY.

Pas 15: font

Aquest article prové de:

Si teniu cap pregunta, podeu contactar amb : [email protected].

Recomanat: