Interactieve LED Beer Pong tafel (48 / 88 stap)

Stap 48: Software: tijd vertragingen en animaties


Om een animatie, we zullen moeten maken van enige vorm van een vertraging tussen frames, anders de animatie duurt slechts een fractie van een seconde om te voltooien. Wij wilt niet gebruiken elke conventionele vertragingen die zal het programma stoppen en maken andere functies zoals de bal sluitringen nutteloos. We moeten houden van het programma in een lus doorlopen alle code en het controleren van elk segment van de code om te zien als de verstreken tijd is verstreken.

Een van de meest effectieve manieren om dit te doen is het gebruik van een globale teller die in een interrupt routine wordt opgehoogd. In de interrupt service routine voor Timer3 is er een globale variabele voor 32-bits (count32) die op elke interrupt wordt opgehoogd. Deze variabele zal gebruikt worden in de meeste van onze interrupt vertragingen samen met een functie genaamd ' Time_Check (UINT32 * mark, UINT16 interval)' te laten toe om de vertragingstijd terwijl nog steeds het programma overlopen bij te houden. We zullen een voorbeeld animatie dat elke rij op de LED-grid een tegelijk oplicht maken. Wij noemen het 'Our_Test_Animation(void)'.

Our_Test_Animation(void)
1) in het Globals.h bestand, seq [x] te wijden aan uw functie die u maakt. wordt een ongebruikte variabele in de matrix van seq [] 'x'. Voor dit voorbeeld zullen we gebruiken seq [24].

2) de functie-prototype aan uw headerbestand toevoegen en instellen van de functie in het C-programmabestand. Voor dit voorbeeld zullen onze 'UINT8 Our_Test_Animation(void)'.

3) verklaren een 'statische UINT8 last_seq' die gelijk is aan 0xFF en een 'statische UINT32 tmark' variabele die gelijk is aan 0. Deze variabelen moeten statische zodat de routine hun waarden onthoudt wanneer het doorlopen terug de animatie.

4) zullen we ten minste één lokale variabele met de naam 'vertraging', die wordt gebruikt om te verwijzen naar 'count32' in de Time_Check() functie. 'vertraging' doet precies wat het heet, het het programma een bepaalde hoeveelheid tijd vertragingen (8ms/onderbreken * waarde van 'vertraging').

5) De waarde van de reset voor seq [x] is 0xFF. Wanneer de routine begint zal het uitvoeren van de ' als (seq [24] == 0xFF)' stuk van code, dit is waar we bepaalde variabelen voor de opstart van onze animatie instellen.

6) de volgende ' als (seq [24]! = last_seq) "instructie controleert om te zien of er een nieuwe reeks. Als er, last_seq wordt bijgewerkt met de huidige waarde van seq [24], het zal vervolgens update onze timing referentie (tmark) en vervolgens de code van de animatie.

7) ' als (Time_Check (& tmark, vertraging))' controles om te zien als de opgegeven hoeveelheid tijd is verstreken sinds de laatste lus door middel van de functie. Als het gebeurd, seq [24] de volgende volgorde wordt bijgewerkt en de animatie zal worden bijgewerkt op de next-lus door middel van de functie.

8) ' als (seq [24] > 31)' zal controleren om te zien of alle van de sequenties zijn uitgevoerd en indien de animatie is voltooid. De waarde van '31' hangt af van hoeveel sequenties hebt in uw routine (we hebben 32 sequenties in deze routine, 0 - 31). Als alle van de sequenties zijn uitgevoerd, zullen wij seq [24] ingesteld op de standaardwaarde van 0xFF en retourneren een 0 die aangeeft dat de animatie is voltooid.

9) als de animatie nog niet alle van de sequenties uitgevoerd een 1 wordt geretourneerd.

Kruis verwijst naar de bovenstaande stappen met de afgewerkte code in foto #4. Door het creëren van een animatie deze manier, zijn wij beperkt tot 255 reeksen (255 reeksen + 1 reset volgorde) omdat we een 8-bits variabele voor seq [x gebruiken]. Moet u meer dan 255 frames, kunt u wijzigen seq [x] aan een 16-bits variabele en hebben tot 65535 sequenties. Moet u nauwkeuriger timing dan Timer3 (~ 8ms per interrupt) kunnen bieden, kunt u Timer5 verplaatsen de globale teller (count32) er te vroeg onderbreken instellen. Tot slot, de standaardhoeveelheid animaties die de code ondersteunen is 50. Als u meer dan 50 interrupt vertraagd animaties moet, moet u enkel Verhoog de waarde van de constante SEQ_AMOUNT (typedefs.h) aan de waarde die u nodig hebt.

De belangrijkste beperking aan het gebruik van een interrupt vertraging zoals dit is dat onze hoofdlus moet efficiënt en we kunnen niet teveel tijd in een routine in de hoofdlus. Het programma moet de hele weg door blijven stromen omdat als het stopt voor het te lang de timing van de rest van de routines mee zal vertragen. Foto #5 bevat een ander voorbeeld voor een animatie genaamd Cycle_Colors(void) die dezelfde interrupt vertraging indeling gebruikt.

Gerelateerde Artikelen

LED Pong tafel

LED Pong tafel

Deze LED bier pong tafel blaast geesten, en als u het correct, geen doet zekeringen. De volledig functionele model zowel detecteert waar een bal stuitert en verbetert uw feesten ervaring met een muziek-gevoelige lichtshow. Zoals u ziet, zal onze huid
LED Arduino Bier Pong tafel

LED Arduino Bier Pong tafel

Ons project is een LED verlicht entertainment tabel of gemeenzaam, een Bier Pong tafel. Kregen we het idee van een groep studenten vorig jaar die ook een bier pong tafel voor hun laatste project bouwde, en we geleerd over hun ontwerp en heeft enkele
Interactieve LED-tabel

Interactieve LED-tabel

hier is een gids op hoe te om uw eigen interactieve LED-tabel met behulp van een van de kits van Evil Mad Sciencitstinstructable.Hier is een video van mijn laatste tafel in actie in het donker, en een foto van hoe het eruit:Stap 1: Kies uw maat, en e
Hoe maak je de beste bier Pong tafel op de campus

Hoe maak je de beste bier Pong tafel op de campus

Ben je moe van het spelen van bier pong op lame vouw tabellen?  Of misschien moe van het nemen van uw vrienden deur uit de scharnieren, elke keer dat je wilt spelen?  Ooit afgevraagd hoe ze bouwen alle het koel bier pong tafels online met automatisch
EL Wire Infinity Pong tafel

EL Wire Infinity Pong tafel

heb ik besloten om een ontzagwekkende pong tafel voor mijn nieuwe huis. Gotta love universiteitsleven!Onderdelen lijst:-Fold-Up Plastic tabel-EL draad van uw keuze-Driver voor de draad van uw keuzeIk adviseer hoogst coolneon.com-spiegel klemmen te ho
Infinity Pong tafel V2

Infinity Pong tafel V2

dit is mijn tweede oneindigheid pong tafel. Ik heb veel geleerd van deze twee tabellen, en ik zal proberen om enkele stappen om te repliceren hen. Hoewel ik geef een eerlijke waarschuwing, is er een veel trial and error. Succes!Stap 1: Materialen & T
Gemakkelijke opklapbare Ping-pong tafel

Gemakkelijke opklapbare Ping-pong tafel

Laten we een opklapbare ping pong tafel als mijn eerste DIY-project gepubliceerd in instrucables.com. De werkelijke afmetingen van een een ping pong tafel zijn 274 x 152 cm, als gevolg van de moeilijkheid van vervoer, onze tafel zal hebben de volgend
DIY Ping Pong tafel

DIY Ping Pong tafel

deze eenvoudige DIY ping pong tafel klaar is voor gebruik in een kwestie van minuten. Het kost minder dan $100 en de benen zijn iets dat elke huiseigenaar hoe dan ook moet!Opmerking: Dit is niet een verordening tabel! Deze tabel meet 4' x 8' vs. een
Procedures.. Make A Magic Ping Pong tafel

Procedures.. Make A Magic Ping Pong tafel

Dit is hoe wij onze eerste magische ping pong tafel gemaakt! Het is een directiekamer tabel die gemakkelijk kan worden omgezet in een ping pong tafel! Wij hopen dat u geniet van!Stap 1: Eerst moet u uw benen en base! Wij hebben pine gebruikt voor ons
Flat Pack Mini Ping Pong tafel

Flat Pack Mini Ping Pong tafel

Dit is een kleine schoolproject. Hier konden we een object kiezen onze smaak zolang het niet een stuk van meubilair, kunst of een lamp. Alhoewel een ping pong tafel is enigszins een stuk van het meubilair, mocht ik nog langs deze route te gaan.Het id
Hoe het bouwen van een Ping Pong tafel

Hoe het bouwen van een Ping Pong tafel

het project beschrijft de bouw van een Ping Pong tafel gedimensioneerd op de standaard grootte van internationals.Het is een gemakkelijke taak: alle mensen kunnen kunnen doen.Alleen eenvoudige materialen worden gebruikt (voornamelijk hout), en zijn n
Drijvende bier Pong tafel

Drijvende bier Pong tafel

voor veel mensen hier, het is nu zomertijd. Voor veel van die mensen betekent zomer partijen (namelijk degenen buiten). Voor veel van deze mensen hierbij een zwembad op een bepaald punt. En aangezien een partij vaak bier pong voor vele (jonge) mensen
4 x 4 x 4 interactieve LED-kubus met Arduino

4 x 4 x 4 interactieve LED-kubus met Arduino

om uit te leggen mijn 4 x 4 x 4 interactieve LED-kubus gepubliceerd voordat, een beetje meer duidelijk, zal ik proberen om mijn eerste stap voor stap instructable.Deze 4 x 4 x 4 kubus is interactief met behulp van de hoek van de top vier LED's als LE
Hoe te bouwen van een opvouwbare bier pong tafel!

Hoe te bouwen van een opvouwbare bier pong tafel!

ik bouwde dit bier pong tafel voor een vriend!Het gaat om dat een bier pong tafel is echt groot dus ik maak een opvouwbare!Deze is aangepast als een voetbal-grond.Stap 1: Voorbereiden materialen! De tabel is 2,40 m X 0,6 m dus 4 panelen van 0,6 m X 0