Sommario:

Crea una livella elettrica: 15 passaggi
Crea una livella elettrica: 15 passaggi

Video: Crea una livella elettrica: 15 passaggi

Video: Crea una livella elettrica: 15 passaggi
Video: Come motorizzare una tapparella passo dopo passo TUTORIAL 2024, Dicembre
Anonim
Crea una livella elettrica
Crea una livella elettrica

Usa questa livella per visualizzare rapidamente e facilmente l'inclinazione di qualsiasi oggetto attaccato!

Creato da Kaitlyn dalla Raffles Institution.

Passaggio 1: obiettivi

Impara a leggere l'inclinazione con l'accelerometro integrato di micro:bit.

Impara a lavorare con il display LED 5x5 di micro:bit!

Passaggio 2: materiali

1 x micro BBC: bit

1 x cavo micro USB

2 batterie AA

1 x doppio pacco batteria AA

Passaggio 3: pre-codifica: collega il tuo Micro:Bit

  1. Collega il micro:bit BBC al tuo computer utilizzando un cavo micro USB.
  2. Accedi all'editor javascript per micro:bit su makecode.microbit.org.

Passaggio 4: Passaggio 0: Flusso del codice

Prima di iniziare a scrivere il codice, dobbiamo decidere cosa vogliamo ottenere con il programma e in quale ordine deve essere eseguito ciascun componente.

Per la livella elettrica, i passaggi che seguiremo nel codice per ogni ciclo sono:

  • Leggere le letture dell'inclinazione dall'accelerometro.
  • Converti le letture dell'inclinazione in livelli di inclinazione da visualizzare sulla matrice LED.
  • Verificare la modifica delle letture del livello di inclinazione rispetto al ciclo precedente.
  • Crea una serie di coordinate LED per diversi casi di inclinazione e direzioni.
  • Traccia le coordinate dei LED su una matrice di LED micro:bit.

Alcune funzioni aggiuntive che dobbiamo includere sono:

  • Calibrazione per la posizione di inclinazione iniziale.
  • Ritorno alla calibrazione dell'inclinazione predefinita.

Passaggio 5: Passaggio 1: definizione delle variabili

Iniziamo definendo le variabili necessarie come mostrato. Una ripartizione di alcune variabili sono:

  • tiltList: Array che memorizza l'estensione dell'inclinazione dai valori 0-4 nell'ordine [Sinistra, Destra, Avanti, Indietro]
  • tiltBoundary: limite del primo livello di inclinazione tra 0 (nessuna inclinazione) e 1 (leggera inclinazione)
  • prevState: Array che memorizza i valori di inclinazione del micro:bit da un ciclo precedente nello stesso formato di tiltList, utilizzato per verificare un cambiamento di inclinazione tra le iterazioni
  • ledPlotList: Traccia gli array di coordinate led nella forma (x, y). Per definire un array, usiamo il tipo number per indicare un array nidificato di variabili di tipo: number.

Passaggio 6: Passaggio 2: convertire i valori di inclinazione in livelli

Poiché la matrice LED 5x5 può visualizzare solo così tante informazioni, i valori di inclinazione effettivi non saranno utili per la visualizzazione.

Invece, una funzione tiltExtent() prende il parametro num, che fa riferimento al valore di tilt dall'accelerometro, e converte questi valori di tilt (num) in livelli di tilt da 0 a 4.

0 indica nessuna inclinazione nella direzione data e 4 indica un'inclinazione molto grande, mentre -1 viene restituito quando si verifica un errore.

In questo caso, tiltBoundary e tiltSensitivity vengono utilizzati come valori limite tra i livelli di inclinazione.

Passaggio 7: Passaggio 3: Compila i livelli di inclinazione

Le due funzioni checkRoll() e checkPitch() scrivono i livelli di inclinazione ottenuti da tiltExtent() in tiltList rispettivamente per gli assi roll (sinistra-destra) e pitch (avanti-indietro).

Prima di utilizzare i valori di tilt, li calibriamo utilizzando un valore azzerato sia per il pitch (zeroPitch) che per il roll (zeroRoll) ottenuto da una funzione di calibrazione scritta in seguito.

Poiché le letture dell'accelerometro sono negative sia per l'inclinazione a sinistra che in avanti, è necessario utilizzare la funzione Math.abs() per ottenere il modulo del valore negativo da assegnare alla funzione tiltExtent() come parametro per queste due direzioni.

Passaggio 8: Passaggio 4: scrivere le funzioni LEDPlotList

Ottenuti i livelli di tilt in tiltList possiamo ora scrivere le funzioni di plottaggio dei led per i diversi casi che possono presentarsi, ovvero

  • plotSingle(): inclina solo in una direzione, prendendo come parametro l'estensione dell'inclinazione in una data direzione.
  • plotDiagonal(): Inclinazione in due direzioni della stessa grandezza, prendendo come parametro l'estensione dell'inclinazione in entrambe le direzioni.
  • plotUnequal(): Inclinazione in due direzioni di diversa grandezza, prendendo come parametro l'estensione dell'inclinazione in ciascuna direzione. Utilizza prima plotDiagonal() e successivamente si aggiunge all'array ledPlotList.

Queste funzioni di tracciamento scrivono un array di coordinate led in ledPlotList da tracciare in seguito.

Passaggio 9: Passaggio 5: tracciare la matrice LED per ogni caso

Utilizzando le funzioni di tracciamento dei tre casi nel passaggio 4, possiamo ora tracciare la matrice LED effettiva per le diverse possibili combinazioni di livelli di inclinazione. Poiché le tre funzioni nel passaggio 4 non discriminano con la direzione, è necessario regolare i valori delle coordinate passati alla matrice LED per tracciare i LED nelle giuste direzioni.

PlotResult() contiene più condizioni if che controllano il tipo di inclinazione e tracciano la matrice LED di conseguenza utilizzando led.plot(x, y). Le possibili combinazioni di tilt sono:

Direzione singola: solo a sinistra o solo a destra

Direzione singola: solo avanti o solo indietro

Due direzioni: Avanti-sinistra o Indietro-sinistra

Due direzioni: Avanti-destra o Indietro-destra

Nota: per l'inclinazione in due direzioni, ogni combinazione può avere la stessa o una diversa grandezza (controllata confrontando maxX e maxY) e quindi tracciata utilizzando plotDiagonal() o plotUnequal() rispettivamente.

Passaggio 10: Passaggio 6: scrittura delle funzioni di calibrazione

Dopo aver completato la maggior parte del codice, ora aggiungiamo le funzioni calibTilt() e resetTilt().

calibTilt() consente agli utenti di tarare l'inclinazione a zero nella posizione corrente del micro:bit

resetTilt() ripristina la calibrazione della scheda al suo stato originale.

Passaggio 11: Passaggio 7: funzione di scrittura dello stato

Aggiungiamo una semplice funzione checkState() per verificare se i livelli di inclinazione sono cambiati da un'iterazione precedente.

Se non ci sono cambiamenti nei livelli di inclinazione da un'iterazione precedente, ad esempio stateChange == 0, possiamo passare direttamente all'iterazione successiva e saltare il tracciamento della matrice LED, riducendo il calcolo necessario.

Passaggio 12: Passaggio 8: mettere tutto insieme, parte 1

Ora possiamo finalmente inserire tutte le funzioni necessarie nel ciclo infinito del micro:bit per eseguirlo ripetutamente.

Per prima cosa, impostiamo i pulsanti A e B sul micro:bit alle funzioni calibTilt() e resetTilt() rispettivamente usando input.onButtonPressed() e tracciamo un segno di spunta sulla matrice LED quando la calibrazione è completata.

Passaggio 13: Passaggio 9: mettere tutto insieme, parte 2

Quindi esegui le funzioni necessarie in base al nostro flusso di codice nel passaggio 0 e verifica un cambiamento di stato (il che significa che c'è un cambiamento nell'inclinazione di micro: bit dall'ultima iterazione).

Se c'è un cambiamento nei livelli di inclinazione, ad esempio stateChange == 1, il codice aggiornerà prevState ai nuovi livelli di inclinazione e imposterà stateChange nuovamente a 0 per l'iterazione successiva e plotterà i livelli di inclinazione aggiornati sulla matrice LED utilizzando PlotResult().

Passaggio 14: Passaggio 10: assemblaggio

Flash il codice completato sul tuo micro:bit.

Attacca saldamente il tuo micro:bit e il pacco batteria a qualsiasi oggetto ed è pronto per l'uso!

Stupendo

Divertiti con la tua livella elettrica! E già che ci sei, perché non provare ad estendere le capacità del sensore di inclinazione o addirittura trasformarlo in un gioco?

Questo articolo è di TINKERCADEMY.

Passaggio 15: fonte

Questo articolo è tratto da:

In caso di domande, è possibile contattare: [email protected].

Consigliato: