Innehållsförteckning:

Skapa en elektrisk vattenpass: 15 steg
Skapa en elektrisk vattenpass: 15 steg

Video: Skapa en elektrisk vattenpass: 15 steg

Video: Skapa en elektrisk vattenpass: 15 steg
Video: Невероятная Архитектура 2024, November
Anonim
Skapa en elektrisk vattenpass
Skapa en elektrisk vattenpass

Använd denna vattenpass för att snabbt och enkelt visa lutningen på alla föremål som bifogas!

Skapad av Kaitlyn från Raffles Institution.

Steg 1: Mål

Lär dig att läsa tilt med micro: bit: s inbyggda accelerometer.

Lär dig att arbeta med micro: bitars 5x5 LED -skärm!

Steg 2: Material

1 x BBC micro: bit

1 x Micro USB -kabel

2 x AA -batterier

1 x dubbel AA -batteri

Steg 3: Förkodning: Anslut din Micro: Bit

  1. Anslut BBC micro: bit till din dator med en mikro -USB -kabel.
  2. Gå till javascript -redigeraren för micro: bit på makecode.microbit.org.

Steg 4: Steg 0: Kodflöde

Innan vi börjar skriva koden måste vi bestämma vad vi vill uppnå med programmet och i vilken ordning varje komponent ska köras.

För den elektriska vattenpasset är stegen vi tar i koden för varje slinga:

  • Läs tiltavläsningar från accelerometer.
  • Konvertera lutningsavläsningar till lutningsnivåer som ska visas på LED -matrisen.
  • Kontrollera om förändringar i lutningsnivåavläsningar från föregående slinga.
  • Skapa matris av LED -koordinater för olika lutningsfall och riktningar.
  • Rita LED -koordinater på mikro: bit LED -matris.

Några ytterligare funktioner vi måste inkludera är:

  • Kalibrering för startlutningsposition.
  • Återgår till standard tilt kalibrering.

Steg 5: Steg 1: Definiera variabler

Vi börjar med att definiera de variabler som behövs enligt bilden. En uppdelning av några variabler är:

  • tiltList: Array som lagrar lutningsgrad från värden 0-4 i ordningen [Vänster, Höger, Framåt, Bakåt]
  • tiltBoundary: Gränsen för den första lutningsnivån mellan 0 (ingen lutning) och 1 (lätt lutning)
  • prevState: Array som lagrar lutningsvärdena för mikro: bit från en tidigare slinga i samma format som tiltList, används för att kontrollera om en ändring av tilt mellan iterationer
  • ledPlotList: Plotta ledda koordinatarrayer i formen (x, y). För att definiera en matris använder vi typnumret för att indikera en kapslad uppsättning variabler av typ: nummer.

Steg 6: Steg 2: Konvertera lutningsvärden till nivåer

Eftersom 5x5 LED -matrisen bara kan visa så mycket information kommer de faktiska lutningsvärdena inte att vara användbara för visning.

Istället tar en funktion tiltExtent () parametern num, som hänvisar till tiltvärdet från accelerometern, och omvandlar dessa tiltvärden (num) till tiltnivåer från 0 till 4.

0 anger ingen lutning i den givna riktningen och 4 indikerar mycket stor lutning, medan -1 returneras när det uppstår ett fel.

Här används tiltBoundary och tiltSensitivity som gränsvärden mellan tiltnivåer.

Steg 7: Steg 3: Kompilera lutningsnivåer

De två funktionerna checkRoll () och checkPitch () skriver lutningsnivåerna som erhålls från tiltExtent () i tiltList för rullning (vänster-höger) respektive tonhöjd (framåt-bakåt) axlar.

Innan vi använder lutningsvärdena kalibrerar vi dem med ett nollvärde för både tonhöjd (zeroPitch) och roll (zeroRoll) som erhållits från en kalibreringsfunktion som skrivits senare.

Eftersom accelerometeravläsningarna är negativa för både vänster och framåtlutning måste vi använda funktionen Math.abs () för att få modulen för det negativa värdet som ska ges till tiltExtent () -funktionen som en parameter för dessa två riktningar.

Steg 8: Steg 4: Skriv LEDPlotList -funktioner

Efter att ha erhållit lutningsnivåerna i tiltList kan vi nu skriva led -plottningsfunktionerna för de olika fallen som kan uppstå, nämligen

  • plotSingle (): Luta endast i en enda riktning, med tiltningens omfattning i given riktning som parameter.
  • plotDiagonal (): Luta i två riktningar av samma storlek och ta lutning i båda riktningarna som parameter.
  • plotUnequal (): Luta i två riktningar av olika storleksordning och ta lutning i varje riktning som parameter. Använder plotDiagonal () först och lägger till i ledPlotList -arrayen efteråt.

Dessa plottningsfunktioner skriver en rad led -koordinater till ledPlotList för att plottas senare.

Steg 9: Steg 5: Plotta LED -matris för varje fall

Med hjälp av plottningsfunktionerna från de tre fallen i steg 4 kan vi nu plotta den faktiska LED -matrisen för de olika möjliga kombinationerna av lutningsnivåer. Eftersom de tre funktionerna i steg 4 inte diskriminerar med riktning, måste vi justera koordinatvärdena som överförs till LED -matrisen för att plotta lysdioderna i rätt riktning.

PlotResult () innehåller flera if -villkor som kontrollerar typ av lutning och plottar LED -matrisen i enlighet därmed med led.plot (x, y). De möjliga kombinationerna av tilt är:

Enkelriktning: Endast vänster eller endast höger

Enkelriktning: Endast framåt eller endast bakåt

Två riktningar: Framåt-vänster eller Bakåt-vänster

Två riktningar: Framåt-höger eller Bakåt-höger

Obs: För lutning i två riktningar kan varje kombination ha samma eller olika storlek (kontrolleras genom att jämföra maxX och maxY) och därmed plottas med plotDiagonal () respektive plotUnequal ().

Steg 10: Steg 6: Skriv kalibreringsfunktioner

Efter att ha slutfört huvuddelen av koden lägger vi till funktionerna calibTilt () och resetTilt ().

calibTilt () tillåter användare att tara lutningen till noll vid mikro: bitens nuvarande position

resetTilt () återställer kalibreringen av kortet till dess ursprungliga tillstånd.

Steg 11: Steg 7: Skriv tillståndsfunktion

Vi lägger till en enkel funktion checkState () för att kontrollera om lutningsnivåerna har ändrats från en tidigare iteration.

Om det inte sker någon förändring i lutningsnivåer från en tidigare iteration, dvs stateChange == 0, kan vi direkt gå vidare till nästa iteration och hoppa över plottningen av LED -matrisen, vilket minskar beräkningen som behövs.

Steg 12: Steg 8: Sätta ihop allt del 1

Nu kan vi äntligen placera alla nödvändiga funktioner i micro: bit: s oändliga loop för att köra den upprepade gånger.

För det första ställer vi in knapp A och B på micro: bit till funktionerna calibTilt () respektive resetTilt () med hjälp av input.onButtonPressed () och markerar en bock på LED -matrisen när kalibreringen är klar.

Steg 13: Steg 9: Sätta ihop det hela Del 2

Kör sedan de nödvändiga funktionerna enligt vårt kodflöde i steg 0 och kolla efter en tillståndsförändring (vilket betyder att det har en förändring i lutningen av micro: bit sedan den senaste iterationen).

Om det sker en förändring i lutningsnivåerna, dvs stateChange == 1, kommer koden att uppdatera prevState till de nya lutningsnivåerna och ställa in stateChange till 0 för nästa iteration och plotta de uppdaterade lutningsnivåerna på LED -matrisen med PlotResult ().

Steg 14: Steg 10: Montering

Flasha den färdiga koden till din micro: bit.

Fäst din micro: bit och batteripaketet säkert på alla föremål och det är klart att använda!

Grymt bra

Ha kul med din elektriska vattenpass! Och medan du håller på, varför inte försöka förlänga lutningsgivarens funktioner eller till och med göra det till ett spel?

Denna artikel är från TINKERCADEMY.

Steg 15: Källa

Denna artikel är från:

Om du har några frågor kan du kontakta : [email protected].

Rekommenderad: