Interaktiva LED öl Pong tabell (48 / 87 steg)

Steg 48: Programvara: tid förseningar och animationer



För att göra en animation, kommer vi att skapa någon form av en tidsfördröjning mellan ramar, annars animeringen tar bara en sekund att slutföra. Vi vill inte använda någon konventionell tidsfördröjningar som kommer att stoppa programmet och göra andra funktioner som bollen brickor värdelös. Vi måste hålla programmet loopa igenom all kod och kontrollera varje segment av kod för att se om hur lång tid det har gått.

En av de mest effektiva sätten att göra detta är att använda en global räknare som får ökas i rutinen avbrott. I avbrottstjänstens rutin för Timer3 finns det en global 32-bitars variabel (count32) som får ökas på varje avbrott. Denna variabel kommer att användas i flesta av våra avbrott förseningar tillsammans med en funktion kallad "Time_Check (UINT32 * mark, UINT16 intervall)" att tillåta oss att hålla reda på fördröjningstiden samtidigt hålla programmet flöda. Vi kommer att skapa en exempel animering som lyser upp varje rad på rutnätet LED en i taget. Vi kommer att kalla det "Our_Test_Animation(void)".

Our_Test_Animation(void)
1) i filen Globals.h, ägna seq [x] att din funktion som du skapar. att vara en oanvänd variabel i matrisen seq [] 'x'. För detta exempel använder vi seq [24].

2) lägga till funktionen prototypen i din header-fil och konfigurera funktionen i filen C. Det här exemplet blir vår "UINT8 Our_Test_Animation(void)".

3) deklarera en "statisk UINT8 last_seq" som är lika med 0xFF och en "statisk UINT32 tmark" variabel som är lika med 0. Dessa variabler måste vara statiska så att rutinen kommer ihåg deras värden när det loopar tillbaka igenom animationen.

4) vi kommer att behöva minst en lokal variabel kallas "försening" som används för att referera till "count32" i funktionen Time_Check(). "försening" gör exakt vad det heter, det förseningar i programmet en viss tid (8 ms/Avbryt * värdet av "försening").

5) Återställa värdet för seq [x] är 0xFF. När rutinen börjar kommer den att köra i "om (seq [24] == 0xFF)' bit kod, det är där vi satt upp vissa variabler för start av vår animation.

6) nästa "om (seq [24]! = last_seq)" uttalande kontrollerar om det finns en ny sekvens. Om det finns, det kommer att uppdatera last_seq med nuvarande seq [24] värdet, sedan uppdatera vår timing referens (tmark) och sedan uppdatera animation koden.

7) ' om (Time_Check (& tmark, fördröjning)) "kontroller för att se om en viss tid har gått sedan sista öglan genom funktionen. Om det har, det kommer att uppdatera seq [24] till den nästa sekvensen och animeringen kommer att uppdateras på nästa loop genom funktionen.

8) ' om (seq [24] > 31) "kontroll för att se om alla sekvenser har utförts och om animeringen är klar. Värdet av "31" beror på hur många sekvenser du har i din rutin (vi har 32 sekvenser i denna rutin, 0 - 31). Om alla sekvenserna har avrättats, vi har seq [24] dess standardvärde för 0xFF och returnera 0 indikerar att animeringen är klar.

9) om animeringen inte har fullgjort alla sina sekvenser den vilja återvända en 1.

Cross referera till ovanstående steg med färdiga koden i foto #4. Genom att skapa en animering detta sätt, är vi begränsade till 255 sekvenser (255 sekvenser + 1 Återställ sekvens) eftersom vi använder en 8-bitars variabel för seq [x]. Om du behöver mer än 255 ramar, kan du ändra seq [x] till en 16-bitars variabel och har upp till 65535 sekvenser. Om du behöver mer exakt timing än Timer3 kan erbjuda (~ 8 ms per avbrott), kan du ställa in Timer5 att avbryta förr och flytta den globala räknaren (count32) där. Slutligen, standard animeringar som har stöd för koden är 50. Om du behöver mer än 50 avbryta fördröjd animationer, behöver du bara att öka värdet av det konstanta SEQ_AMOUNT (typedefs.h) till det värde som du behöver.

Den huvudsakliga begränsningen till att använda ett avbrott dröjsmål som detta är att våra huvudloop måste vara effektiv och vi kan inte slösa för mycket tid i någon rutin i de viktigaste loopen. Programmet måste hålla flyter hela vägen igenom eftersom om det stannar för länge det fördröjer tidpunkten för resten av rutinerna tillsammans med den. Foto #5 innehåller ett annat exempel för en animering som kallas Cycle_Colors(void) som använder samma avbrott fördröjning format.

Se Steg
Relaterade Ämnen

LED Pong tabell

Denna LED öl pong tabell blåser sinnen, och om du gör det korrekt, inga säkringar. Fullt fungerande modellen båda upptäcker där en boll studsar och förstärker ditt festande erfarenhet med en musik-känsliga ljusshow. Som du ser, kommer vår nuvarande v...

LED Arduino Beer Pong tabell

Vårt projekt är en lysdiod underhållning tabell eller colloquially, en Beer Pong tabell. Vi fick idén från en grupp studenter förra året som också byggde en öl pong tabell för deras projekt, och vi lärde oss om deras design och gjort några betydande...

Baserade Arduino Bi-color LED Matrix Pong spel

Vi har skapat två game-projekt instructables hittills använda jolliFactory Bi-color LED Matrix Driver modul DIY kit vi har utformat. Denna ledde matrisen modul är utformad för att kunna kedja-så du kan seriekoppla moduler tillsammans med antalet modu...

EL Wire oändlighet Pong tabell

beslutat att göra en awesome pong tabell för mitt nya hus. Gotta love College livet!Reservdelslista:-Vik-upp plast bord-EL wire för att förstora-Driver för binda av ditt valJag rekommenderar coolneon.com-spegel klipp att hålla tråd-2 "x 4" s för...

Flytande öl Pong tabell

för många här, det är sommartid nu. För många av dessa människor: sommartid parterna (nämligen sådana utomhus). För många av dessa människor inkluderar detta en pool vid något tillfälle. Och sedan ett parti ofta innehåller öl pong för många (unga) mä...

Lätt College öl Pong tabell

Vi har alla sett saker som studenter kasta ut innan sommaren-soffor, madrasser, lampor, etc. Om du råkar hitta en bokhylla och en strykbräda, kan du aktivera det skräppost till en solid öl pong tabell för en egen lägenhet.Jag satt ihop två olika bord...

Hur man bygger en vikbar öl pong tabell!

jag byggde denna öl pong tabell för en vän!Frågan är en öl pong tabell är riktigt stor så jag skapa en vikbar!Den här är anpassade som en fotboll marken.Steg 1: Förbered material! i tabellen är 2,40 X 0.6 m så 4 trä paneler av 0,6 m X 0.6 m!Det vikti...

Interaktiva LED skor - Arduino

Sticker ut från mängden med dessa coola interaktiva LED skor som aktiveras vid rörelse. Välj mellan sex olika effekter, att blanda saker upp lite nästa gång du är ute på stan!Steg 1: översikt Varje sko är driv vid en Arduino Pro Mini med en matris av...

4 x 4 x 4 interaktiva LED-cube med Arduino

för att förklara min 4 x 4 x 4 interaktiva LED-cube publicerade förut, lite mer klart, jag ska försöka att göra mitt första steg för steg instructable.Denna 4 x 4 x 4 kub är interaktiv med fyra hörnet lysdioder både som lysdioder och sensorer som rea...

Småbarn interaktiva LED System (pågår)

Jag jobbar på två projekt parallellt och jag vill organisera vad jag har på detta projekt innan jag börjar dokumentera det andra projektet.Småbarn interaktiva LED System (pågår)Beräknad: 50% komplett.När du är klar som projektet ska:Består av: karton...

Glöd i mörka LED Ping Pong boll

Skapa en glöd i mörka LED ping pong bollen med flera enkla steg.Steg 1: material Du behöver följande material:Ping Pong bollLED (5mm eller 10 mm)3V batteriTejpLåg Temp limpistolRazorSteg 2: Förbereda LED Lysdioder har en positiv och negativ tråd. Du...

Hemgjort anpassade bärbara öl Pong tabell

Steg 1: Layout jag byggde den här tabellen för vår årliga hemliga Santa gåva utbyte. Min draw är en enorm lakers fan och ville ha en bärbar öl pong tabell, men budgeten för utbyte är $40... Så jag byggde en.Steg 2: Material Min bror är en finish snic...

Interaktiva LED labbrock

detta är en instructable för den interaktiva LED Lab rockar, utställningsmonter på Autodesk University.Kolla in filmerna nedan! Först är en demo av färgerna påverkas av knapparna. Andra är en demo av alkoholmätare! (detta kommer att förklaras senare)...

Oändlighet Pong tabell V2

detta är mitt andra oändlighet pong bord. Jag har lärt mig en hel del från dessa två tabeller, och jag ska försöka att ställa ut några steg för att replikera dem. Även om jag ska ge en rättvis varning, finns det en hel del trial and error. Lycka till...

Skapa din egen öl Pong tabell

College sociala livet för vissa omfattar ett mycket brett utbud av frågor. Från tjänsthändelser till college sports är sociala livet i college en mycket stor del av atmosfären under hela campus. En kul del av det sociala livet är parterna. För de öve...

Bärbar öl pong tabell

Först av allt jag är från Sydafrika och öl pong är inte stor här, eller ska jag säga det är inte stort ännu. Jag bestämde mig att bygga min egen tabell eftersom du helt enkelt inte kan köpa tabeller här och om du vill importera, det kommer att kosta...

Hur.. Göra en magi Ping Pong tabell

Detta är hur vi gjorde vårt första magiska ping pong bord! Det är ett styrelserum bord som lätt kan omvandlas till ett bordtennisbord! Vi hoppas du njuter!Steg 1: Först måste du benen och bas! Vi har använt tall vår men dess verkligen en fråga om per...

Interaktiva LED pussel lampa

ÖversiktDenna LED-lampa är en interaktiv designprodukt. Det är en rektangulär prisma bas som kan hålla i flera ljus slots att slutföra kretsen och lysa upp. Det ger användare möjlighet att manipulera design och ändra lampor baserade på flera situatio...

LED Ping Pong boll

du kan rulla dem, spela fångsten med dem, eller ens spela fetch med din hund med dem. (Större hundar kan kvävas, min hund är verkligen liten och kan inte kvävas på det)NYARE VERSION:)Steg 1: Samla material Behöver du:Super ljusa lysdioderTvå Ping Pon...