Inhoudsopgave:
- Stap 1: Doelen
- Stap 2: Materialen
- Stap 3: Pre-codering: sluit uw Micro:Bit aan
- Stap 4: Stap 0: Codestroom
- Stap 5: Stap 1: Variabelen definiëren
- Stap 6: Stap 2: Tilt-waarden converteren naar niveaus
- Stap 7: Stap 3: Compileer kantelniveaus
- Stap 8: Stap 4: Schrijf LEDPlotList-functies
- Stap 9: Stap 5: Plot LED-matrix voor elk geval
- Stap 10: Stap 6: Kalibratiefuncties schrijven
- Stap 11: Stap 7: Schrijfstatusfunctie
- Stap 12: Stap 8: Alles samenvoegen Deel 1
- Stap 13: Stap 9: Alles samenvoegen Deel 2
- Stap 14: Stap 10: Montage
- Stap 15: Bron
Video: Een elektrische waterpas maken: 15 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:19
Gebruik deze waterpas om snel en eenvoudig de helling van elk bevestigd object weer te geven!
Gemaakt door Kaitlyn van Raffles Institution.
Stap 1: Doelen
Leer kantelen lezen met de ingebouwde versnellingsmeter van micro:bit.
Leer werken met het 5x5 LED-display van micro:bit!
Stap 2: Materialen
1 x BBC micro:bit
1 x micro-USB-kabel
2 x AA-batterijen
1 x dubbele AA-batterij
Stap 3: Pre-codering: sluit uw Micro:Bit aan
- Sluit de BBC micro:bit aan op uw computer met behulp van een micro-USB-kabel.
- Open de javascript-editor voor de micro:bit op makecode.microbit.org.
Stap 4: Stap 0: Codestroom
Voordat we beginnen met het schrijven van de code, moeten we beslissen wat we met het programma willen bereiken en in welke volgorde elk onderdeel moet worden uitgevoerd.
Voor de elektrische waterpas zijn de stappen die we in de code voor elke lus zullen nemen:
- Lees kantelmetingen van versnellingsmeter.
- Zet kantelmetingen om in kantelniveaus die op de LED-matrix moeten worden weergegeven.
- Controleer op verandering in tilt-niveau-uitlezingen van de vorige lus.
- Creëer een reeks LED-coördinaten voor verschillende kantelgevallen en richtingen.
- Plot LED-coördinaten op micro:bit LED-matrix.
Een paar extra functies die we moeten opnemen zijn:
- Kalibratie voor initiële kantelpositie.
- Terugkeren naar de standaard kantelkalibratie.
Stap 5: Stap 1: Variabelen definiëren
We beginnen met het definiëren van de benodigde variabelen, zoals weergegeven. Een uitsplitsing van een aantal variabelen is:
- tiltList: array die de mate van kanteling opslaat van waarden 0-4 in de volgorde [Links, Rechts, Vooruit, Achteruit]
- tiltBoundary: Grens van het eerste tilt-niveau tussen 0 (geen tilt) en 1 (lichte tilt)
- prevState: array die de tilt-waarden van de micro:bit van een vorige lus opslaat in hetzelfde formaat als tiltList, gebruikt om te controleren op een verandering in tilt tussen iteraties
- ledPlotList: Plot led-coördinatenarrays in de vorm (x, y). Om een array te definiëren gebruiken we het type number om een geneste array van variabelen van het type: number aan te geven.
Stap 6: Stap 2: Tilt-waarden converteren naar niveaus
Omdat de 5x5 LED-matrix maar zoveel informatie kan weergeven, zijn de werkelijke kantelwaarden niet bruikbaar voor weergave.
In plaats daarvan neemt een functie tiltExtent() de parameter num, die verwijst naar de tilt-waarde van de versnellingsmeter, en converteert deze tilt-waarden (num) naar tilt-niveaus van 0 tot 4.
0 geeft geen kanteling in de gegeven richting aan en 4 geeft een zeer grote kanteling aan, terwijl -1 wordt geretourneerd wanneer er een fout is.
Hier worden tiltBoundary en tiltSensitivity gebruikt als grenswaarden tussen kantelniveaus.
Stap 7: Stap 3: Compileer kantelniveaus
De twee functies checkRoll() en checkPitch() schrijven de kantelniveaus die zijn verkregen uit tiltExtent() naar tiltList voor respectievelijk de rol (links-rechts) en de pitch (vooruit-achteruit).
Voordat we de tilt-waarden gebruiken, kalibreren we ze met behulp van een nulwaarde voor zowel pitch (zeroPitch) als roll (zeroRoll), verkregen uit een later geschreven kalibratiefunctie.
Aangezien de accelerometermetingen negatief zijn voor zowel de linker- als de voorwaartse kanteling, moeten we de functie Math.abs() gebruiken om de modulus te verkrijgen van de negatieve waarde die aan de functie tiltExtent() moet worden gegeven als een parameter voor deze twee richtingen.
Stap 8: Stap 4: Schrijf LEDPlotList-functies
Nadat we de kantelniveaus in tiltList hebben verkregen, kunnen we nu de led-plotfuncties schrijven voor de verschillende gevallen die zich kunnen voordoen, namelijk:
- plotSingle(): Kantel slechts in één richting, waarbij de mate van kanteling in de gegeven richting als parameter wordt genomen.
- plotDiagonal(): Kantel in twee richtingen van dezelfde grootte, waarbij de mate van kanteling in beide richtingen als parameter wordt genomen.
- plotUnequal(): Kantel in twee richtingen van verschillende grootte, waarbij de mate van kanteling in elke richting als parameter wordt genomen. Gebruikt eerst plotDiagonal() en voegt het daarna toe aan de ledPlotList-array.
Deze plotfuncties schrijven een array van led-coördinaten naar ledPlotList om later te plotten.
Stap 9: Stap 5: Plot LED-matrix voor elk geval
Met behulp van de plotfuncties uit de drie gevallen in stap 4, kunnen we nu de werkelijke LED-matrix plotten voor de verschillende mogelijke combinaties van kantelniveaus. Omdat de drie functies in stap 4 geen onderscheid maken met richting, moeten we de coördinaatwaarden aanpassen die aan de LED-matrix worden doorgegeven om de LED's in de juiste richting te plotten.
PlotResult() bevat meerdere if-voorwaarden die het soort kanteling controleren en de LED-matrix dienovereenkomstig plotten met led.plot(x, y). De mogelijke combinaties van kantelen zijn:
Enkele richting: alleen links of alleen rechts
Enkele richting: alleen vooruit of alleen achteruit
Twee richtingen: Vooruit-links of Achteruit-links
Twee richtingen: Vooruit-rechts of Achteruit-rechts
Opmerking: Voor kantelen in twee richtingen kan elke combinatie dezelfde of een verschillende grootte hebben (gecontroleerd door maxX en maxY te vergelijken), en dus worden uitgezet met respectievelijk plotDiagonal() of plotUnequal().
Stap 10: Stap 6: Kalibratiefuncties schrijven
Nadat we het grootste deel van de code hebben voltooid, voegen we nu de functies calibTilt() en resetTilt() toe.
calibTilt() stelt gebruikers in staat de kanteling naar nul te tarreren op de huidige positie van de micro:bit
resetTilt() zet de kalibratie van het bord terug naar de oorspronkelijke staat.
Stap 11: Stap 7: Schrijfstatusfunctie
We voegen een eenvoudige functie checkState() toe om te controleren of de kantelniveaus zijn gewijzigd ten opzichte van een eerdere iteratie.
Als er geen verandering is in kantelniveaus van een vorige iteratie, d.w.z. stateChange == 0, kunnen we direct doorgaan naar de volgende iteratie en het plotten van de LED-matrix overslaan, waardoor de benodigde berekening wordt verminderd.
Stap 12: Stap 8: Alles samenvoegen Deel 1
Nu kunnen we eindelijk alle benodigde functies in de oneindige lus van de micro:bit plaatsen om deze herhaaldelijk uit te voeren.
Eerst stellen we knop A en B op de micro:bit in op respectievelijk de functies calibTilt() en resetTilt() met behulp van input.onButtonPressed(), en zetten we een vinkje op de LED-matrix wanneer de kalibratie is voltooid.
Stap 13: Stap 9: Alles samenvoegen Deel 2
Voer vervolgens de benodigde functies uit volgens onze codestroom in stap 0 en controleer op een statuswijziging (wat betekent dat er een verandering is in de kanteling van micro:bit sinds de laatste iteratie).
Als er een verandering is in tilt-niveaus, d.w.z. stateChange == 1, zal de code prevState bijwerken naar de nieuwe tilt-niveaus en stateChange terugzetten naar 0 voor de volgende iteratie, en de bijgewerkte tilt-niveaus op de LED-matrix plotten met PlotResult().
Stap 14: Stap 10: Montage
Flash de voltooide code naar uw micro:bit.
Bevestig uw micro:bit en het batterijpakket stevig aan elk object en het is klaar voor gebruik!
Geweldig
Veel plezier met je elektrische waterpas! En terwijl u toch bezig bent, waarom probeert u niet de mogelijkheden van de kantelsensor uit te breiden of er zelfs een spel van te maken?
Dit artikel is van TINKERCADEMY.
Stap 15: Bron
Dit artikel is afkomstig van:
Als je vragen hebt, kun je contact opnemen met [email protected].
Aanbevolen:
Een mini-elektrische motor Masco G36 maken - Ajarnpa
Een mini-elektrische motor maken Masco G36: instructies voor het maken van een elektrische motor
(2) Beginnen met het maken van een spel - Een opstartscherm maken in Unity3D - Ajarnpa
(2) Beginnen met het maken van een spel - Een opstartscherm maken in Unity3D: In deze Instructable leert u hoe u een eenvoudig opstartscherm maakt in Unity3D. Eerst openen we Unity
Digitale waterpas een doe-het-zelf-projectmodule van Electronicslovers - Ajarnpa
Digitale waterpas een doe-het-zelf-projectmodule van Electronicslovers: er is een tijd dat je een meubelstuk of iets dergelijks in je huis moet monteren en voor een rechte montage gebruikt iedereen gewoonlijk een waterpas. ElectronicsLovers Tech Team heeft deze module gebouwd, die één verschil heeft met een gebruikelijke: i
Een Bluetooth-adapter Pt.2 maken (een compatibele luidspreker maken): 16 stappen
Een Bluetooth-adapter Pt.2 maken (een compatibele luidspreker maken): in deze instructie laat ik u zien hoe u mijn Bluetooth-adapter kunt gebruiken om een oude luidspreker Bluetooth-compatibel te maken. * Als u mijn eerste instructie over "Maken nog niet hebt gelezen een Bluetooth-adapter" Ik raad u aan dit te doen voordat u doorgaat.C
Hoe een elektrische scooter uit elkaar te halen voor elektrische onderdelen - Ajarnpa
Hoe een elektrische scooter uit elkaar te halen voor elektrische onderdelen: Dit is de manier waarop ik een tweedehands elektrische scooter uit elkaar haal voor onderdelen die nodig zijn voor het bouwen van een elektrisch mountainboard. (Idee komt van >> https://www .instructables.com/id/Electric-Mountain-Board/)De reden dat ik een tweedehands exemplaar heb gekocht is