Indholdsfortegnelse:

In-Line LED-display Arduino-spil: 7 trin (med billeder)
In-Line LED-display Arduino-spil: 7 trin (med billeder)

Video: In-Line LED-display Arduino-spil: 7 trin (med billeder)

Video: In-Line LED-display Arduino-spil: 7 trin (med billeder)
Video: Introduction to HT16K33 4 Digit LED Seven Segment Display with Arduino 2024, Juli
Anonim
Image
Image
Større komponenter
Større komponenter

aka LED Ladder Display Game System.

En Attiny-85 udstyret med hardware og software til at spille actionfyldte "videospil" på en in-line LED-skærm.

Den har et multiplexet 12 LED stige display, og understøtter op til 6 knapindgange og en valgfri lydudgang.

Det er fyldt med 4 færdighedsspil, med flere sværhedsgrader og nogle variationer (opdateret til 16 spil, når det bruges med en ATMega MCU).

[Video]

Trin 1: Større komponenter

Jeg byggede mit projekt modulært (to separate samlinger). En hoved Display-underenhed; som kan bruges alene i sig selv. Og en knapindgangssamling. På den måde kan jeg bruge knappen eller skærmmodulet igen i et andet projekt. Dette giver også mulighed for fleksible monteringsmuligheder.

Jeg bragte også kontrollinjen til en pin-header til LED-stigen, så jeg kunne bruge en Arduino Nano (eller en Uno), til at udvikle software til den samt bruge den i andre projekter. En Digispark fungerer ikke på grund af de andre komponenter på dets printkort.

Jeg valgte at bruge de samme pin -tildelinger til LED -stigen som i tidligere instruktioner for at gøre det let for dem, der allerede har en sådan hardwareimplementering, at bruge softwaren i denne instruerbare, selvom jeg ikke fandt de opgaver, der blev foretaget til den klareste logik i softwaren.

De to linjer mellem modulerne er PB4 og jord. Da alt, hvad der er på multiknapsamlingen, er modstande og kontakter, så det ikke er polaritetsafhængigt, og det er ikke vigtigt at vende forbindelsen.

Med understøttelse af flere knapper kan et større udvalg af spil (eller applikationer) implementeres. To af spillene i denne instruktive spilles bedst med to knapper. De fire hovedknapper kan bruges til direkte adgang til et tilhørende spil. Snart vil jeg implementere et spil, der afhænger af brugen af alle fire hovedknapper.

Dette projekt bruger op til seks knapper. Fire hoved BTN 1-4, Disse knapper kan registreres individuelt, selv når der trykkes på to af dem samtidigt. De to andre er specielle knapper, først er der ækvivalent med den enkelte knap i tidligere projekter, der gør en hård forbindelse mellem PB4 -indgangen til jorden, jeg kalder dette BTN0 eller ESC, da denne switch altid kan registreres og vil blokere detektion af nogen af de andre. Den anden specialtast er funktionstasten. Hvis der trykkes på den når BTN 0-4 trykkes, kan den registreres og bruges til at ændre funktionalitet.

I denne skill game sketch bruger jeg:

  • FncKey+Btn1 vende tilbage til menutilstand
  • FncKey+Btn2 forskudssværhedsgrad (hvis det er højest, gå tilbage til det laveste)
  • FncKey+Btn4 øjeblikkelig pause (tryk på en vilkårlig tast for at fjerne pause)
  • FncKey + Btn 0 eller 3 er udefinerede.

Trin 2: Deleliste

Liste over dele
Liste over dele

Nødvendige dele

  • Lysdioder, rød, gul, grøn og blå som disse
  • PCB -plader ligner ting, du skal muligvis købe et større bræt og skære det til den ønskede størrelse.
  • pin dip socket lignende varer
  • Attiny-85 chip
  • modstandere
  • anvendte knapkontakter: 12x12x8mm og 6x6x6mm PCB Momentary Tactile Push Buttons

anbefalede:

  • summer 5v, aktiv type
  • en Popsicle stick
  • 2,54 mm pin header strip
  • 30 ga wire og wire-wrap værktøj https://www.ebay.com/itm/351798901037 ovenstående link er til wire, der mere ligner 36 ga. Jeg ville ønske, jeg kendte til en sådan aftale for rigtige 30 ga. tråd

Trin 3: Byggeriets højdepunkter

Konstruktionens højdepunkter
Konstruktionens højdepunkter
Konstruktionens højdepunkter
Konstruktionens højdepunkter
Konstruktionens højdepunkter
Konstruktionens højdepunkter
Konstruktionens højdepunkter
Konstruktionens højdepunkter

På hovedkortet har jeg elektrisk det samme som andre tidligere LED-stige-projekter, som du måske vil henvise til for yderligere grundlæggende konstruktionsanvisninger

Jeg bruger dog ikke en udvendig pull up resister på den analoge indgang A2 (PB4), jeg bruger også røde, gule, grønne og blå lysdioder i stedet for alle en farve, hvilket er ønskeligt for nogle af de spil, jeg har oprettet til denne hardware.

Her er I/O -opgaverne som forventet af de vedhæftede softwareskitser:

Projekt MCU AT-85 Uno/Nano

Navne navn pin# brd navn --------- ---- ---- --------- Rød L1-3 PB3 2 D-11 Yel L4-6 PB0 5 D-8 Grøn L7-9 PB1 6 D-9 Blå L10-11 PB2 7 D-10 Ain PB4/A2 3 A-2 Lyd PB5 1 D-3

Den ene væsentlige forskel er, at jeg har to knapper forbundet til PB4. Den første går direkte fra PB4 til jorden, men uden ekstern pull -up resister (jeg kalder dette BTN0). Jeg har også en knapkontakt (som jeg kalder BTN1) forbundet med en 75Kohm i serie til jorden. Dette hovedkort kan bruges uden "Button" -monteringskortet, men med en vis begrænset funktionalitet.

De nuværende begrænsende modstandere, der går til sæt af LED, skal vælges baseret på lysstyrken på de forskellige farve -LED'er, du bruger, og hvor lyse du vil have dem. Jeg endte med 91 ohm for det røde sæt, 75 gule, 430 grønne og 150 ohm for blå. Disse værdier kan virke lave, men husk, at lysdioderne er multipleksede (generelt meget <100% af tiden)

Jeg brugte 3 mm lysdioder og adskilte dem lidt fra hinanden. Jeg havde benene på LED'en over en Popsicle -pind. På denne måde stod de alle op i samme mængde og frem for alle andre komponenter. Jeg har til hensigt på et tidspunkt at montere enheden med kun lysdioderne, der stikker ud gennem en ramme.

Jeg valgte at vikle led-forbindelserne sammen. Uden et specielt printkort er dette lettere at gøre end lodning på trange steder med masser af sammenkoblinger; har ikke en tendens til at producere shorts og er lettere at rewire i tilfælde af en fejl. Med alle strømme i og omkring mikrokontrolleren i milliampere er 30 ga ledning tilstrækkelig.

Knapper og relaterede modstandere:

Jeg udtænkte en unik konfiguration (slags et dobbelt Y) af modstandere og knapper, således at softwaren kunne skelne individuelle og dobbelte knaptryk (teoretisk set kan enhver kombination af disse fire knapper identificeres). Jeg forsøgte flere konfigurationer med et væld af modstandsværdier i et regneark på udkig efter den bedste konfiguration, og simulerede dem derefter i software med at prøve alle mulige modstandskombinationer for at finde det sæt (som jeg bruger), som ville producere maksimal minimumsforskel af analoge aflæsninger mellem alle og alle enkelt- og dobbeltknap -tryk. Jeg arrangerede dem, så især Btn1, Btn4 og Btn1+4 var særskilte.

Se diagram over knapnetværk ovenfor.

Du skal tildække alle ledninger, der forbinder til PB4 (og muligvis skifte kontakter og modstandere) med elektrisk tape, varm lim eller andet, der slet ikke leder, da en simpel mega-ohm-modstand vil afbryde evnen til at bestemme hvilken kontakt der er trykket på; og enhver sådan kontakt, du opretter, mens du holder en forsamling, ville gøre det.

Senere tilknyttede instruktioner:

4-knap-spil-Brug-en-analog-input/

Dual-Power-til-din-bærbare-Micro-Controller-Proj/

3D-trykt-etui-til-inline-LED-display-konsol-og/

Trin 4: Yderligere muligheder og noter

Yderligere muligheder og noter
Yderligere muligheder og noter

Valgfri lydudgang

Den valgfri lydudgang bruger PB5. Jeg tilsluttede en 5v summer i serie med en 150 Ohm resister for at begrænse dens ellers høje irriterende output. Jeg anbefaler, at du bruger 50-200 Ohm. Man kunne parallelt summeren med en hætte (2-10uf) for at gøre den mindre raspende, eller bruge en 10 mm driver 32 Ohm højttaler brudt ud af et sæt billige stereo ørepropper, i stedet for modstanderen og summeren. Jeg kan lide det, for spil lyde, bedre som jeg har det.

Som standard bruger Attiny-85 PB5 som en nulstilling, effektiv betyder, at lyden ville fungere, men den vil ikke have en dårlig effekt på nogen anden operation. Når du bruger en Nano eller Uno, fungerer lyden (kommer ud af dens D3). For at få lyd med Attiny skal du ændre den interne pin -konfiguration, så softwaren kan bruge PB5 som output. Der er betydelige konsekvenser ved at gøre dette; se venligst disse:

forum.arduino.cc/index.php?topic=178971.0

www.instructables.com/id/Simple-and-cheap-F…

og

Generelt under spillet vil en fejl eller fejl påkalde en kvidren eller kort hindbærlyd. Der spilles en lykønskningsmelodi, når du gennemfører et niveau eller vinder, som ved bordtennis. Jeg synes, at det at have ledsagende lyd virkelig øger til glæde ved at spille.

Alternative knapper til spilcontroller

Til mine børnebørn, der er hårde ved udstyr, lavede jeg holdbare separate knapper, Btn1 og Btn4, for enden af lange blytråde. Se foto. Jeg monterede knapperne i make-sift greb; med en 75Kohm inline med Btn1 og en ~ 37Kohm inline med Btn4. I serie med Btn4 brugte jeg faktisk en 36K, en 33K eller endda muligvis en 39K kunne bruges. Med eksterne stempelknapper i tankerne ville det være en god idé at have et separat sæt hovedstifter til tilslutning af eksterne håndholdte knapper set som Btn1 og Btn4.

Kvalitet strømforsyning nødvendig

Til en strømkilde kan du bruge USB 5v-output fra en pc, tablet, vægoplader, en powerbank eller 3,7 Li batteri direkte.

Jeg fandt ud af, at jeg ved strømforsyning af enheden fra nogle USB-opladere og flere USB-strømbanker ville bemærke, at den flimrede og lejlighedsvis savner adfærd og endda nulstilles. Hvis du oplever dette, kan du finde en strømkilde med bedre regulering, ellers kan det være en fordel at tilføje en stor (100-1000uf) kondensator på tværs +V til jorden.

Test

Jeg har også inkluderet et testprogram til at hjælpe med at validere og fejlsøge din hardware. Koden er et igangværende arbejde og har stort behov for at blive ryddet op. Jeg håber at komme til det, men mener, mens det skal tjene dine behov. Jeg har for nylig kun brugt det med en Nano, der driver skærmen og tastaturenhederne. Du kan bruge næsten enhver knap til at vælge elementer fra menutilstanden. For at afslutte en demo/test igen skal du trykke på de fleste knapper. For at afslutte knaptesten (#4) skal du trykke på FncKey+Btn1 eller holde EscKey (jordforbindelse PB4) nede, eller genbruge strøm.

På grund af forskelle i MCU's interne modstande og modstandstolerancer kan det være nødvendigt at foretage nogle justeringer, så alle enkelt- og dobbeltknappetryk registreres korrekt. For at gøre dette skal du bruge test-4 (for at vælge dette, se beskrivelse af menudrift nedenfor) i testprogrammet. Bemærk, at jeg ikke brugte en ekstern pull-up resister, da jeg har yderligere høvlet anvendelser til PB4-input, som er inkompatible med enhver pull up.

Trin 5: Softwareoversigt

Skitsen LadderGames.ino implementerer fire spil, herunder nogle alternative versioner.

Skitsen kan downloades og køres fra en ATtiny-85, Nano, Uno etc. For at programmere den i en Attiny-chip, se: https://www.instructables.com/id/Program-an-ATtiny… og/eller for at programmere din ATtiny-85-chip:

Skift det interne ur på ATtiny85 til 8MHz, da ydelsen er ønsket til spillet. Henvise:

forum.arduino.cc/index.php?topic=276606.0

Denne skitse bør være bagudkompatibel med de fleste tidligere ATtiny-85 ledede stigeprojekter, uden ændringer, men vil have en begrænset funktionalitet.

Betjening af menuen

Ved opstart er der et sundhedstjek i form af et feje hen over lysdioderne og et sæt bip. Derefter går den i hovedmenutilstand. Hvert sæt lysdioder i en farve lyser i et par sekunder i træk. Et spil vælges ved at trykke på en knap, mens et tilhørende sæt lyser, spil 1: Rød, spil 2: Gul, spil 3: Grøn, spil 4: Blå. I menutilstanden kan der trykkes på Btn2, Btn3, Btn4 for at gå direkte til henholdsvis spil 2, 3, 4. Når et spil er valgt, skal du angive den variation, du ønsker. For hver tilgængelig variant blinker et sæt farvede lysdioder. Bare tryk på en knap på den, du ønsker. Variationerne, "versioner", for hvert spil er yderligere beskrevet nedenfor.

Version et af alle fire spil kan spilles med en enkelt knap. Enten er en tilsluttet mellem PB4 og jord (Btn-0) som i tidligere LED-stigeinstruktioner, eller med en switch, der forbinder en 75k belastning til jorden (Btn-1). Begge disse vil gøre i spil, når instruktionerne taler om et ikke -specifikt knap tryk.

For at afslutte ethvert spil kan du bruge FncKey+Btn1, holde EscKey (aka: Btn0) nede i 1-2 sekunder eller cykle strømmen.

Trin 6: Game Play

Spil 1: Push-It

Dette er en tilpasning af mit 'Push-It' spil fra en af mine tidligere instruerbare

www.instructables.com/id/Play-a-Game-with-a…

Målet med spillet er at skubbe blinktællingen og antallet af tændte LED'er til så mange som muligt. Push-It starter med et antal blink, som derefter gentages. Hvis du trykker på knappen efter den sidste blitz i serien, og når der muligvis ville eksistere en ekstra, lyser den næste LED, og flashtallet stiger med en. Men hvis du 'skubber' før eller efter tidsperioden for en kommende blitz i stedet, reduceres antallet af blink i sættet.

Hver gang det lykkes dig at øge flashtællingen, øges sværhedsgraden, da timingen fremskynder lidt, hvilket gør det sværere og sværere at nå op til højere flashtællinger.

Det aktuelle tælletal gemmes i EEPROM -hukommelsen til genstart på samme niveau senere.

Spil 2: Ping-Pong

Fantastisk (omend det eneste) konkurrence spil for to spillere heri; hvor bolden (enkelt blips af lys) går fra den ene side til den anden, hurtigere og hurtigere, hver gang den bliver 'ramt' tilbage.

Jeg implementerede først dette enkelt lysrække-spil på tværs af frontpanelets knapper på en super-mini-computer i luftfart i 1970'erne.

For at ramme bolden frem og tilbage skal den relevante padle ramme (knappen trykkes) når den er i slutpositionen (sidste LED). Den første side, der savner, taber, og lysene på den vindende side blinker.

Der er to variationer, den ene kræver kun en knap (Btn 0 eller 1), som rammer bolden i hver ende; og en anden version, er for to personer hoved til hoved, hvilket kræver to knapper; knap 1 på venstre side og knap 4 eller 0 på den anden. Brugen af knap 1 & 4 foretrækkes, da de ikke forstyrrer hinanden; hver kan blive ramt for at returnere bolden fra dens ende uanset tilstanden af den anden knap.

Vinderen af et rally er altid serveren til det næste.

Game 3: Shooting Gallery

Skyd alle målene (lysene) for at fuldføre et niveau. På hvert højere niveau er handlingen hurtigere.

Der er to versioner; en hvor stedet er fast og målene bevæger sig og et andet hvor stedet bevæger sig og målene stadig er. I hvert tilfælde slår et hit et mållys ud; og en miss får et mål til at dukke op. Når et mål er i synet, lyser synet lysere, ellers er det svagt.

I version 1 starter synet til venstre (nederst) og scanner til højre. I version 2 er synet fastgjort i midten, mens målet bevæger sig over højre mod venstre. Ved at se på koden er der spøgelsesagtige versioner 3 og 4, som kan aktiveres, men du sætter dit eget velvære på egen risiko.

Spil 4: JumpMan

Ideen er, at du løber gennem et spilniveau, hvor der kommer objekter, som du skal springe over, efterhånden som du skrider frem, kommer de hurtigere. I en anden spilversion er der også objekter over hovedet, du skal dukke under.

I version et er der kun objekter at springe over. For at hoppe skal du trykke på knappen, når objektet kommer til den sidste celle til venstre; som lysner, når dette sker. For at hoppe 2 eller flere på hinanden følgende objekter skal du hoppe (trykke) på den første og holde knappen nede for resten.

I version 2 tilføjes over hoved (blinkende) objekter. De springes ved at 'hoppe under cellen forud for den og slippe, mens den er i slutcellen. Kun en overhead kan blinke ad gangen, så når den ene er passeret, kan du se en anden (ikke blinkende før) bar ned på dig. Der vil aldrig være på hinanden følgende omkostninger, men de kan støde op til et eller flere springobjekter (kampesten).

I spilversion 3 skal du bruge en separat knap til overliggende objekter (Btn-2, 4 eller 0 dit valg); spring kræver derefter Btn-1.

Når du har klaret forbi fire flere objekter, end du ikke klarede, går du videre i niveau; der er et lyd- og visuelt tillykke, derefter en genoptagelse med en højere hastighed. At komme forbi et sæt på hinanden følgende objekter tæller det samme som et enkelt objekt.

Jeg råder dig til at udskrive om spillets driftsregler og genlæse dem, før du spiller et spil, du ikke for nylig har spillet. Ellers kan du frustrere dig selv; tænker på, at spillet ikke fungerer korrekt, når det faktisk er det, men du og spillet har forskellige måder og forventninger. Jeg er selv faldet for denne mere end et par gange.

Trin 7: Opdateringer, flere spil

Image
Image

Jeg lavede et 3D-printet konsolhus til at huse In-Line LED stigen display og knapper.

Jeg har udviklet flere spil, der bruger denne hardware. Tjek dem ud og have det sjovt:

Nye spil fra 'Whack a Mole' til 'Tug of War'

December 2016. Nu, i slutningen af ovenstående link, er der en samlet version af koden inklusive alle 12 spil.

17. februar 2017: Her er det seneste spil til dette projekt, nu med 16 spil (skitse nedenfor). Dette kører på enhver MCU -implementering med 32KBytes flash -programhukommelse. Alt selvom en til 3 eller 4 af de 16 spil kan sættes i en ATtiny. Jeg anbefaler at bruge Nano 3 arduinos. De sidste 4 tilføjede spil er 'Le Mans' racing, 'Spray' hoved -til -hoved spraymalingskonkurrence., 'PIG' basketball -skydning, 'BiFunc' et quiz -spil med binær operation.

Med større og mere forskelligartet spil af disse spil er forbedringer af deres spil-evner muliggjort nydelse for alle spillere på niveau. Jeg synes, der er meget plads til forbedringer i Le Mans -racerløb via banelayoutdesign og spiltiming.

Jeg har skrevet op omkring 10 flere aktiviteter/spil/funktioner, hvoraf nogle håber at gøre tilgængelig omkring efteråret 2017.

Disse spil med én linje kan også ændres til en 2 -linjes 2x16 LCD -skærm, med en linje med spilobjekter og en anden til noget tekst. Jeg har gjort lidt af dette, men da jeg bakkes op om projekter, så vidt jeg kan se, ved jeg ikke, hvornår eller om jeg ville få en runde til det. Så hvis nogen er motiveret til at vedtage og optimere disse spil til en 2x16 LCD, må du dele med mig og andre.

Udover de 4 nye spil her i Menu_16Games.ino, har jeg lukket mit projekt og har oprettet relaterede instruktioner: Inline LED -spilkonsolkasse og driver dit bærbare MCU -projekt

Jeg håber mange tager sig tid og… Nyd disse spil.

Gruppespil: 1– Rød 2- Gul 3- Grøn 4- Blå

1 rød PushIt PingPong ShootEmUp JumpMan 2 Yel QuickDraw Tug_a_War Chicken Hot_Hands 3 Grn Le_Mans Spray PIG BiFunc 4 Blu SimonSays Whack_Mole Sea_Hunt Flip_d

2. september 2017: Forbedret arbejdsevne med gamle beskidte støjende eksterne joystick-knapper i hoved-hoved-spil (gruppe 2).

13. december 2017: Forbedret håndtering af knapstop og måleudligning, fikserede mindre problemer. Jeg havde prøvet at bruge en kondensator på den analoge knapindgangslinje, men for at være effektiv resulterede det i langsom måling, der afgjorde falske niveauidentifikationer, eller softwaren ventede så længe at hurtig spilhandling blev kompromitteret.

Apr 2018: Jeg har fundet ud af, at 5/8 "komprimeringskoblinger laver gode kroppe til eksterne stempelknapper. Da mine børn kan lide at bruge et par af disse, tilføjede jeg headerstifter for let at forbinde to af dem (som Btn1 & Btn4).

Bemærk, at jeg oprettede et andet projekt i oktober sidste år, der er bygget på denne instruerbare hardware. Det er i Halloween -ånd og kan være meget sjovt, især for børnene. Instruktérbar: Ghostly-Psyche-Influencer-Devices

Anbefalede: