Inhaltsverzeichnis:

Erstellen Sie eine elektrische Wasserwaage - Gunook
Erstellen Sie eine elektrische Wasserwaage - Gunook

Video: Erstellen Sie eine elektrische Wasserwaage - Gunook

Video: Erstellen Sie eine elektrische Wasserwaage - Gunook
Video: Ratgeber Wasserwaagen | Wie man eine digitale Wasserwaage von SOLA kalibriert 2024, November
Anonim
Erstellen Sie eine elektrische Wasserwaage
Erstellen Sie eine elektrische Wasserwaage

Verwenden Sie diese Wasserwaage, um schnell und einfach die Neigung jedes angebrachten Objekts anzuzeigen!

Erstellt von Kaitlyn von Raffles Institution.

Schritt 1: Ziele

Lernen Sie die Neigung mit dem integrierten Beschleunigungsmesser von micro:bit zu lesen.

Lernen Sie, mit dem 5x5-LED-Display von micro:bit zu arbeiten!

Schritt 2: Materialien

1 x BBC-Mikro: Bit

1 x Micro-USB-Kabel

2 x AA-Batterien

1 x Doppel-AA-Batteriepack

Schritt 3: Vorcodierung: Verbinden Sie Ihr Micro:Bit

  1. Verbinden Sie das BBC micro:bit über ein Micro-USB-Kabel mit Ihrem Computer.
  2. Greifen Sie auf den Javascript-Editor für micro:bit unter makecode.microbit.org zu.

Schritt 4: Schritt 0: Codefluss

Bevor wir mit dem Schreiben des Codes beginnen, müssen wir uns entscheiden, was wir mit dem Programm erreichen wollen und in welcher Reihenfolge die einzelnen Komponenten ausgeführt werden sollen.

Für die elektrische Wasserwaage sind die Schritte, die wir im Code für jede Schleife ausführen werden:

  • Lesen Sie die Neigungsmesswerte vom Beschleunigungsmesser ab.
  • Wandeln Sie Neigungsmesswerte in Neigungsniveaus um, die auf der LED-Matrix angezeigt werden.
  • Überprüfen Sie, ob sich die Neigungspegel-Messwerte gegenüber der vorherigen Schleife geändert haben.
  • Erstellen Sie eine Reihe von LED-Koordinaten für verschiedene Neigungsfälle und -richtungen.
  • Zeichnen Sie die LED-Koordinaten auf die micro:bit LED-Matrix.

Einige zusätzliche Funktionen, die wir einschließen müssen, sind:

  • Kalibrierung für die anfängliche Neigungsposition.
  • Rückkehr zur Standard-Neigungskalibrierung.

Schritt 5: Schritt 1: Variablen definieren

Wir beginnen mit der Definition der benötigten Variablen wie gezeigt. Eine Aufschlüsselung einiger Variablen ist:

  • TiltList: Array, das das Ausmaß der Neigung von den Werten 0-4 in der Reihenfolge [Links, Rechts, Vorwärts, Rückwärts] speichert
  • TiltBoundary: Grenze der ersten Neigungsebene zwischen 0 (keine Neigung) und 1 (leichte Neigung)
  • prevState: Array, das die Tilt-Werte des micro:bit aus einer vorherigen Schleife im gleichen Format wie TiltList speichert, um zu überprüfen, ob sich die Neigung zwischen den Iterationen ändert
  • ledPlotList: Zeichnen Sie LED-Koordinaten-Arrays in der Form (x, y). Um ein Array zu definieren, verwenden wir den Typ number, um ein verschachteltes Array von Variablen des Typs: number anzugeben.

Schritt 6: Schritt 2: Neigungswerte in Ebenen umwandeln

Da die 5x5 LED-Matrix nur eine begrenzte Menge an Informationen anzeigen kann, sind die tatsächlichen Neigungswerte für die Anzeige nicht nützlich.

Stattdessen nimmt eine Funktion TiltExtent() den Parameter num, der sich auf den Neigungswert vom Beschleunigungsmesser bezieht, und wandelt diese Neigungswerte (num) in Neigungsstufen von 0 bis 4 um.

0 bedeutet keine Neigung in die angegebene Richtung und 4 bedeutet eine sehr große Neigung, während -1 zurückgegeben wird, wenn ein Fehler auftritt.

Hier werden TiltBoundary und TiltSensitivity als Grenzwerte zwischen Tilt-Levels verwendet.

Schritt 7: Schritt 3: Neigungsebenen kompilieren

Die beiden Funktionen checkRoll() und checkPitch() schreiben die von TiltExtent() erhaltenen Tilt-Level in TiltList für die Roll- (links-rechts) bzw. die Nick- (vorwärts-rückwärts) Achsen.

Bevor wir die Neigungswerte verwenden, kalibrieren wir sie mit einem auf Null gesetzten Wert für Nick (zeroPitch) und Roll (zeroRoll), der aus einer später geschriebenen Kalibrierungsfunktion erhalten wird.

Da die Messwerte des Beschleunigungsmessers sowohl für die linke als auch für die Vorwärtsneigung negativ sind, müssen wir die Funktion Math.abs() verwenden, um den Modul des negativen Werts zu erhalten, der der Funktion TiltExtent() als Parameter für diese beiden Richtungen übergeben wird.

Schritt 8: Schritt 4: Schreiben Sie LEDPlotList-Funktionen

Nachdem wir die Neigungsniveaus in TiltList erhalten haben, können wir nun die LED-Plotfunktionen für die verschiedenen auftretenden Fälle schreiben, nämlich

  • plotSingle(): Neigung nur in eine Richtung, wobei das Ausmaß der Neigung in der angegebenen Richtung als Parameter verwendet wird.
  • plotDiagonal(): Neigung in zwei Richtungen gleicher Größe, wobei das Ausmaß der Neigung in beide Richtungen als Parameter verwendet wird.
  • plotUnequal(): Neigung in zwei Richtungen unterschiedlicher Größe, wobei das Ausmaß der Neigung in jede Richtung als Parameter verwendet wird. Verwendet zuerst plotDiagonal() und fügt danach das ledPlotList-Array hinzu.

Diese Plotting-Funktionen schreiben ein Array von LED-Koordinaten in ledPlotList, um später geplottet zu werden.

Schritt 9: Schritt 5: LED-Matrix für jeden Fall zeichnen

Mit den Plotfunktionen aus den drei Fällen in Schritt 4 können wir nun die tatsächliche LED-Matrix für die verschiedenen möglichen Kombinationen von Neigungsniveaus darstellen. Da die drei Funktionen in Schritt 4 nicht die Richtung unterscheiden, müssen wir die an die LED-Matrix übergebenen Koordinatenwerte anpassen, um die LEDs in die richtigen Richtungen zu zeichnen.

PlotResult() enthält mehrere if-Bedingungen, die die Art der Neigung prüfen und die LED-Matrix entsprechend mit led.plot(x, y) darstellen. Die möglichen Neigungskombinationen sind:

Einzelrichtung: Nur Links oder Nur Rechts

Einzelrichtung: Nur vorwärts oder Nur rückwärts

Zwei Richtungen: Vorwärts-links oder Rückwärts-links

Zwei Richtungen: Vorwärts-rechts oder Rückwärts-rechts

Hinweis: Für die Neigung in zwei Richtungen kann jede Kombination die gleiche oder unterschiedliche Größe haben (überprüft durch Vergleich von maxX und maxY) und daher mit plotDiagonal() bzw. plotUnequal() geplottet werden.

Schritt 10: Schritt 6: Kalibrierfunktionen schreiben

Nachdem wir den Großteil des Codes fertiggestellt haben, fügen wir nun die Funktionen calibTilt() und resetTilt() hinzu.

calibTilt() ermöglicht es Benutzern, die Neigung an der aktuellen Position des micro:bit auf Null zu tarieren

resetTilt() setzt die Kalibrierung des Boards auf den ursprünglichen Zustand zurück.

Schritt 11: Schritt 7: Zustandsfunktion schreiben

Wir fügen eine einfache Funktion checkState() hinzu, um zu überprüfen, ob sich die Neigungsstufen gegenüber einer vorherigen Iteration geändert haben.

Wenn sich die Neigungsstufen gegenüber einer vorherigen Iteration nicht ändern, d. h. stateChange == 0, können wir direkt zur nächsten Iteration übergehen und das Zeichnen der LED-Matrix überspringen, wodurch der Rechenaufwand reduziert wird.

Schritt 12: Schritt 8: Alles zusammenfügen Teil 1

Jetzt können wir endlich alle notwendigen Funktionen in die Endlosschleife von micro:bit einfügen, um sie wiederholt auszuführen.

Zuerst setzen wir die Tasten A und B auf dem micro:bit mit input.onButtonPressed() auf die Funktionen calibTilt() bzw. resetTilt() und zeichnen einen Tick auf der LED-Matrix, wenn die Kalibrierung abgeschlossen ist.

Schritt 13: Schritt 9: Alles zusammenfügen Teil 2

Führen Sie als nächstes die erforderlichen Funktionen gemäß unserem Codefluss in Schritt 0 aus und prüfen Sie, ob eine Zustandsänderung vorliegt (d. h., dass sich die Neigung von micro:bit seit der letzten Iteration geändert hat).

Wenn sich die Neigungsstufen ändern, d.

Schritt 14: Schritt 10: Montage

Flashen Sie den fertigen Code in Ihr micro:bit.

Befestigen Sie Ihr micro:bit und das Akkupack sicher an jedem Gegenstand und schon ist es einsatzbereit!

Fantastisch

Viel Spaß mit Ihrer elektrischen Wasserwaage! Und wenn Sie schon dabei sind, warum versuchen Sie nicht, die Fähigkeiten des Neigungssensors zu erweitern oder sogar in ein Spiel zu verwandeln?

Dieser Artikel ist von TINKERCADEMY.

Schritt 15: Quelle

Dieser Artikel ist von:

Bei Fragen wenden Sie sich bitte an: [email protected].

Empfohlen: