Innholdsfortegnelse:

Lag et elektrisk vater: 15 trinn
Lag et elektrisk vater: 15 trinn

Video: Lag et elektrisk vater: 15 trinn

Video: Lag et elektrisk vater: 15 trinn
Video: ТАКОГО ЕЩЕ НИКТО НЕ ВИДЕЛ! Узнав это СЕКРЕТ, ты никогда не выбросишь пластиковую бутылку! 2024, November
Anonim
Lag et elektrisk vater
Lag et elektrisk vater

Bruk dette vannpasset for å raskt og enkelt vise vippen til ethvert objekt som er festet!

Laget av Kaitlyn fra Raffles Institution.

Trinn 1: Mål

Lær å lese tilt med micro: bits innebygde akselerometer.

Lær å jobbe med micro: bits 5x5 LED -skjerm!

Trinn 2: Materialer

1 x BBC micro: bit

1 x mikro -USB -kabel

2 x AA -batterier

1 x dobbelt AA -batteripakke

Trinn 3: Forkoding: Koble til Micro: Bit

  1. Koble BBC micro: bit til datamaskinen din med en mikro -USB -kabel.
  2. Få tilgang til javascript -editoren for micro: bit på makecode.microbit.org.

Trinn 4: Trinn 0: Kodeflyt

Før vi begynner å skrive koden, må vi bestemme hva vi vil oppnå med programmet og i hvilken rekkefølge hver komponent skal kjøres.

For det elektriske vateret er trinnene vi tar i koden for hver sløyfe:

  • Les tiltavlesninger fra akselerometer.
  • Konverter tiltavlesninger til tiltnivåer som skal vises på LED -matrisen.
  • Se etter endring i tiltnivåavlesninger fra forrige sløyfe.
  • Lag en rekke LED -koordinater for forskjellige vippesaker og retninger.
  • Plott LED -koordinater på mikro: bit LED -matrise.

Noen få ekstra funksjoner vi må inkludere er:

  • Kalibrering for første tiltposisjon.
  • Tilbake til standard tiltkalibrering.

Trinn 5: Trinn 1: Definere variabler

Vi starter med å definere nødvendige variabler som vist. En oversikt over noen få variabler er:

  • tiltList: Array som lagrer graden av tilt fra verdiene 0-4 i rekkefølgen [Venstre, Høyre, Forover, Bakover]
  • tiltBoundary: Grensen for det første tiltnivået mellom 0 (ingen tilt) og 1 (svak tilt)
  • prevState: Array som lagrer tiltverdiene til mikro: bit fra en tidligere sløyfe i samme format som tiltList, brukes til å se etter endring i tilt mellom iterasjoner
  • ledPlotList: Plot led -koordinatarrayer i skjemaet (x, y). For å definere en matrise bruker vi typetallet for å indikere et nestet utvalg av variabler av type: number.

Trinn 6: Trinn 2: Konverter Tilt -verdier til nivåer

Siden 5x5 LED -matrisen bare kan vise så mye informasjon, vil de faktiske tiltverdiene ikke være nyttige for visning.

I stedet tar en funksjon tiltExtent () parameteren num, som refererer til tiltverdien fra akselerometeret, og konverterer disse tiltverdiene (num) til tiltnivåer fra 0 til 4.

0 indikerer ingen tilt i gitt retning og 4 indikerer veldig stor tilt, mens -1 returneres når det er en feil.

Her brukes tiltBoundary og tiltSensitivity som grenseverdier mellom tiltnivåer.

Trinn 7: Trinn 3: Kompiler tiltnivåer

De to funksjonene checkRoll () og checkPitch () skriver tiltnivåene som er oppnådd fra tiltExtent () til tiltList for henholdsvis rull (venstre-høyre) og pitch (fremover-bakover) aksene.

Før vi bruker tilt -verdiene, kalibrerer vi dem ved hjelp av en null -verdi for både pitch (zeroPitch) og roll (zeroRoll) hentet fra en kalibreringsfunksjon skrevet senere.

Ettersom akselerometeravlesningene er negative for både venstre og forover tilt, må vi bruke Math.abs () -funksjonen for å få modulen til den negative verdien som skal gis til tiltExtent () -funksjonen som en parameter for disse to retningene.

Trinn 8: Trinn 4: Skriv LEDPlotList -funksjoner

Etter å ha oppnådd tiltnivåene i tiltList kan vi nå skrive ledningsplottingsfunksjonene for de forskjellige tilfellene som kan oppstå, nemlig

  • plotSingle (): Vipp bare i en enkelt retning, og ta omfanget av tilt i gitt retning som parameter.
  • plotDiagonal (): Vipp i to retninger av samme størrelse, og ta omfanget av tilt i begge retninger som parameter.
  • plotUnqual (): Vipp i to retninger av forskjellige størrelser, og ta omfanget av tilt i hver retning som parameter. Bruker plotDiagonal () først og legger til ledPlotList -arrayet etterpå.

Disse plottingsfunksjonene skriver en rekke ledede koordinater til ledPlotList som skal plottes senere.

Trinn 9: Trinn 5: Plott LED -matrise for hvert tilfelle

Ved å bruke plottefunksjonene fra de tre tilfellene i trinn 4, kan vi nå plotte den faktiske LED -matrisen for de forskjellige mulige kombinasjonene av tiltnivåer. Siden de tre funksjonene i trinn 4 ikke skiller retning, må vi justere koordinatverdiene som sendes til LED -matrisen for å plotte lysdiodene i riktig retning.

PlotResult () inneholder flere if -betingelser som kontrollerer typen tilt og plotter LED -matrisen tilsvarende ved hjelp av led.plot (x, y). De mulige kombinasjonene av tilt er:

Enkeltretning: Bare venstre eller høyre

Enkeltretning: Bare fremover eller bare bakover

To retninger: Forover-venstre eller Bakover-venstre

To retninger: Forover-høyre eller Bakover-høyre

Merk: For vipping i to retninger kan hver kombinasjon ha samme eller forskjellig størrelse (sjekket ved å sammenligne maxX og maxY), og dermed plottet med henholdsvis plotDiagonal () eller plotUnequal ().

Trinn 10: Trinn 6: Skriv kalibreringsfunksjoner

Etter å ha fullført hoveddelen av koden, legger vi nå til funksjonene calibTilt () og resetTilt ().

calibTilt () lar brukerne tare tilt til null ved mikro: bitens nåværende posisjon

resetTilt () tilbakestiller kalibreringen av kortet til sin opprinnelige tilstand.

Trinn 11: Trinn 7: Skriv tilstandsfunksjon

Vi legger til en enkel funksjon checkState () for å sjekke om tiltnivåene har endret seg fra en tidligere iterasjon.

Hvis det ikke er noen endring i tiltnivåer fra en tidligere iterasjon, dvs. stateChange == 0, kan vi gå direkte til neste iterasjon og hoppe over plottet av LED -matrisen, noe som reduserer beregningen som er nødvendig.

Trinn 12: Trinn 8: Sett alt sammen Del 1

Nå kan vi endelig plassere alle nødvendige funksjoner i micro: bits uendelige sløyfe for å kjøre den gjentatte ganger.

For det første setter vi knapp A og B på micro: bit til henholdsvis calibTilt () og resetTilt () funksjonene ved å bruke input.onButtonPressed (), og plotter et kryss på LED -matrisen når kalibreringen er fullført.

Trinn 13: Trinn 9: Sette det hele sammen Del 2

Kjør deretter de nødvendige funksjonene i henhold til vår kodeflyt i trinn 0 og se etter en tilstandsendring (noe som betyr at det har en endring i tilt av micro: bit siden den siste iterasjonen).

Hvis det er en endring i tiltnivåer, dvs. stateChange == 1, vil koden oppdatere prevState til de nye tiltnivåene og sette stateChange tilbake til 0 for neste iterasjon, og plotte de oppdaterte tiltnivåene på LED -matrisen ved hjelp av PlotResult ().

Trinn 14: Trinn 10: Montering

Flash den fullførte koden til din micro: bit.

Fest din micro: bit og batteripakken godt til ethvert objekt, og den er klar til bruk!

Rått

Ha det gøy med ditt elektriske vater! Og mens du er i gang, hvorfor ikke prøve å utvide mulighetene til tilt -sensoren eller til og med gjøre den til et spill?

Denne artikkelen er fra TINKERCADEMY.

Trinn 15: Kilde

Denne artikkelen er fra:

Hvis du har spørsmål, kan du kontakte : [email protected].

Anbefalt: