INHOUDSOPGAWE:

Skep 'n elektriese waterpas: 15 stappe
Skep 'n elektriese waterpas: 15 stappe

Video: Skep 'n elektriese waterpas: 15 stappe

Video: Skep 'n elektriese waterpas: 15 stappe
Video: Диагностика гбо 4 поколения своими руками 2024, Julie
Anonim
Skep 'n elektriese waterpas
Skep 'n elektriese waterpas

Gebruik hierdie waterpas om die kanteling van enige aangehegte voorwerp vinnig en maklik te wys!

Geskep deur Kaitlyn van Raffles Institution.

Stap 1: Doelwitte

Leer om kantel te lees met die ingeboude versnellingsmeter van micro: bit.

Leer om te werk met micro: bit se 5x5 LED -skerm!

Stap 2: materiaal

1 x BBC -mikro: bietjie

1 x mikro -USB -kabel

2 x AA -batterye

1 x dubbele AA -battery

Stap 3: Voorkodering: Koppel u mikro: bit

  1. Koppel die BBC micro: bit aan u rekenaar met 'n mikro -USB -kabel.
  2. Gaan na die javascript -redakteur vir die micro: bit by makecode.microbit.org.

Stap 4: Stap 0: Kodevloei

Voordat ons die kode begin skryf, moet ons besluit wat ons met die program wil bereik en in watter volgorde elke komponent moet werk.

Vir die elektriese waterpas is die stappe wat ons in die kode vir elke lus sal neem:

  • Lees kantelmessings vanaf die versnellingsmeter.
  • Skakel kantelmessies om na kantelvlakke wat op LED -matriks vertoon moet word.
  • Kontroleer of die kantelvlakmetings van die vorige lus verander is.
  • Skep 'n reeks LED -koördinate vir verskillende kantelgevalle en rigtings.
  • Plot LED -koördinate op mikro: bit LED -matriks.

'N Paar ekstra funksies wat ons moet insluit, is:

  • Kalibrasie vir aanvanklike kantelposisie.
  • Keer terug na die standaard kantelkalibrasie.

Stap 5: Stap 1: Definieer veranderlikes

Ons begin deur die benodigde veranderlikes te definieer, soos getoon. 'N Verdeling van 'n paar veranderlikes is:

  • tiltList: Array wat die mate van kanteling stoor vanaf waardes 0-4 in die volgorde [Links, Regs, vorentoe, agteruit]
  • tiltBoundary: grens van die eerste kantelvlak tussen 0 (geen kanteling) en 1 (effense kanteling)
  • prevState: Array wat die kantelwaardes van die mikro: bis stoor vanaf 'n vorige lus in dieselfde formaat as tiltList, wat gebruik word om te kyk of daar 'n verandering in kanteling tussen iterasies is
  • ledPlotList: Plot geleide koördinaatskikkings in die vorm (x, y). Om 'n skikking te definieer, gebruik ons die tipe nommer om 'n geneste reeks veranderlikes van tipe: nommer aan te dui.

Stap 6: Stap 2: Skakel kantelwaardes om na vlakke

Aangesien die 5x5 LED -matriks net soveel inligting kan vertoon, sal die werklike kantelwaardes nie nuttig wees om te vertoon nie.

In plaas daarvan neem 'n funksie tiltExtent () die parameter num, wat verwys na die kantelwaarde van die versnellingsmeter, en skakel hierdie kantelwaardes (num) om na kantelvlakke van 0 na 4.

0 dui geen kanteling in die gegewe rigting aan nie en 4 dui op baie groot kanteling, terwyl -1 terugkom as daar 'n fout is.

Hier word tiltBoundary en tiltSensitivity gebruik as die grenswaardes tussen kantelvlakke.

Stap 7: Stap 3: Stel die kantelvlakke op

Die twee funksies checkRoll () en checkPitch () skryf die kantelvlakke wat verkry word vanaf tiltExtent () in tiltList vir die rol (links-regs) en die toonhoogte (vorentoe-agtertoe) onderskeidelik.

Voordat ons die kantelwaardes gebruik, kalibreer ons dit met 'n nulwaarde vir beide toonhoogte (zeroPitch) en rol (zeroRoll) verkry uit 'n kalibrasiefunksie wat later geskryf is.

Aangesien die versnellingsmeterlesings negatief is vir beide linker- en vorentoe -kanteling, moet ons die funksie Math.abs () gebruik om die modulus van die negatiewe waarde te kry wat die tiltExtent () -funksie as parameter vir hierdie twee rigtings moet gee.

Stap 8: Stap 4: Skryf LEDPlotList -funksies

Nadat ons die kantelvlakke in tiltList verkry het, kan ons nou die LED -plotfunksies skryf vir die verskillende gevalle wat kan ontstaan, naamlik

  • plotSingle (): Kantel slegs in 'n enkele rigting, met die mate van kanteling in die gegewe rigting as parameter.
  • plotDiagonal (): Kantel in twee rigtings van dieselfde grootte, en neem die mate van kanteling in beide rigtings as parameter.
  • plotUnqual (): Kantel in twee rigtings van verskillende groottes, met die mate van kanteling in elke rigting as parameter. Gebruik eers plotDiagonal () en voeg daarna by tot die ledPlotList -skikking.

Hierdie plotfunksies skryf 'n verskeidenheid geleide koördinate na ledPlotList om later opgestel te word.

Stap 9: Stap 5: Stel 'n LED -matriks vir elke geval op

Deur die plotfunksies uit die drie gevalle in stap 4 te gebruik, kan ons nou die werklike LED -matriks teken vir die verskillende moontlike kombinasies van kantelvlakke. Aangesien die drie funksies in stap 4 nie met rigting onderskei nie, moet ons die koördinaatwaardes wat aan die LED -matriks oorgedra word, aanpas om die LED's in die regte rigtings te teken.

PlotResult () bevat veelvoudige as -toestande wat die tipe kanteling kontroleer en die LED -matriks dienooreenkomstig met led.plot (x, y) plot. Die moontlike kombinasies van kanteling is:

Enkele rigting: Slegs links of regs

Enkele rigting: slegs vorentoe of agteruit

Twee rigtings: vorentoe-links of agtertoe-links

Twee rigtings: vorentoe-regs of agtertoe-regs

Opmerking: vir kanteling in twee rigtings kan elke kombinasie dieselfde of verskillende grootte hê (gekontroleer deur die vergelyking van maxX en maxY) en gevolglik met behulp van plotDiagonal () of plotUnequal () geteken word.

Stap 10: Stap 6: Skryf kalibrasiefunksies

Nadat ons die grootste deel van die kode voltooi het, voeg ons nou die funksies calibTilt () en resetTilt () by.

Met calibTilt () kan gebruikers die kanteling op nul in die huidige posisie van die micro: bit stel

resetTilt () stel die kalibrasie van die bord terug in sy oorspronklike toestand.

Stap 11: Stap 7: Skryf staatsfunksie

Ons voeg 'n eenvoudige funksie checkState () by om te kyk of die kantelvlakke verander het van 'n vorige iterasie.

As daar geen verandering in kantelvlakke van 'n vorige iterasie is nie, dit wil sê stateChange == 0, kan ons direk na die volgende iterasie oorgaan en die plot van die LED -matriks oorslaan, wat die berekening wat nodig is, verminder.

Stap 12: Stap 8: Alles saamvoeg Deel 1

Nou kan ons uiteindelik al die nodige funksies in die oneindige lus van die micro: bit plaas om dit herhaaldelik uit te voer.

Eerstens stel ons knoppie A en B op die micro: bit op die funksies calibTilt () en resetTilt () onderskeidelik met behulp van input.onButtonPressed (), en teken 'n regmerkie op die LED -matriks wanneer die kalibrasie voltooi is.

Stap 13: Stap 9: Alles saamvoeg Deel 2

Voer dan die nodige funksies uit volgens ons kodevloei in stap 0 en kyk of daar 'n toestandverandering is (wat beteken dat die kanteling van micro: bit sedert die laaste iterasie verander het).

As daar 'n verandering in kantelvlakke is, dws stateChange == 1, sal die kode prevState opdateer na die nuwe kantelvlakke en stateChange terugstel na 0 vir die volgende iterasie, en die opgedateerde kantelvlakke op die LED -matriks met PlotResult () teken.

Stap 14: Stap 10: Montering

Flits die voltooide kode na u micro: bit.

Koppel u mikro: bit en die battery veilig aan enige voorwerp en dit is gereed vir gebruik!

Ontsagwekkende

Geniet u elektriese waterpas! En terwyl u besig is, waarom probeer u nie die funksies van die kantelsensor uitbrei of selfs in 'n speletjie verander nie?

Hierdie artikel is van TINKERCADEMY.

Stap 15: Bron

Hierdie artikel is afkomstig van:

As u enige vrae het, kan u kontak: [email protected].

Aanbeveel: