Innholdsfortegnelse:

In-Line LED-skjerm Arduino-spill: 7 trinn (med bilder)
In-Line LED-skjerm Arduino-spill: 7 trinn (med bilder)

Video: In-Line LED-skjerm Arduino-spill: 7 trinn (med bilder)

Video: In-Line LED-skjerm Arduino-spill: 7 trinn (med bilder)
Video: LDmicro 14: ЖК-дисплей I2C и часы реального времени DS3231 (программирование лестничной схемы ПЛК микроконтроллера с помощью LDmicro) 2024, Juli
Anonim
Image
Image
De viktigste komponentene
De viktigste komponentene

aka LED Ladder Display Game System.

En Attiny-85 utstyrt med maskinvare og programvare for å spille actionfylte "videospill", på en innebygd LED-skjerm.

Den har en multiplexert 12 LED stige -skjerm, og støtter opptil 6 knappinnganger og en valgfri lydutgang.

Den er fullpakket med 4 ferdighetsspill, med flere vanskelighetsgrader og noen variasjoner (oppdatert til 16 spill, når den brukes med en ATMega MCU).

[Video]

Trinn 1: Viktige komponenter

Jeg bygde prosjektet mitt modulært (to separate samlinger). En hovedskjerm-underenhet; som kan brukes alene. Og en underinnstilling for knappinngang. På den måten kan jeg bruke knappen eller skjermenheten igjen i et annet prosjekt. Dette gir også fleksible monteringsalternativer.

Jeg tok også ut kontrollinjen til en pin-header for LED-stigen, slik at jeg kunne bruke en Arduino Nano (eller en Uno), for å utvikle programvare for den, så vel som å bruke den i andre prosjekter. En Digispark vil ikke fungere på grunn av de andre komponentene på kretskortet.

Jeg valgte å bruke de samme pin -oppgavene for LED -stigen som i tidligere instruksjoner for å gjøre det enkelt for de som allerede har en slik maskinvareimplementering å bruke programvaren i denne instruerbare, selv om jeg ikke fant oppgavene som er gjort for den klareste logikken i programvaren.

De to linjene mellom modulene er PB4 og bakken. Ettersom alt som er på flerknappsammenstillingen er motstander og brytere, så det er ikke polaritetsavhengig, og det er ikke viktig å reversere tilkoblingen.

Med støtte fra flere knapper kan et større utvalg av spill (eller applikasjoner) implementeres. To av spillene i denne instruksjonsfilen spilles best med to knapper. De fire hovedknappene kan brukes til å få direkte tilgang til et tilknyttet spill. Snart vil jeg implementere et spill som er avhengig av bruk av alle fire hovedknappene.

Dette prosjektet bruker opptil seks knapper. Fire hoved BTN 1-4, Disse knappene kan oppdages individuelt, selv når to av dem trykkes samtidig. De to andre er spesielle knapper, først er det tilsvarende enkeltknappen i tidligere prosjekter som gjør en hard forbindelse mellom PB4 -inngangen til bakken, jeg kaller dette BTN0 eller ESC, da denne bryteren alltid kan oppdages og vil blokkere deteksjon av noen av de andre. Den andre spesialtasten er funksjonstasten. Hvis den trykkes når BTN 0-4 trykkes, kan den registreres og brukes til å endre funksjonalitet.

I denne ferdighetsspillskissen bruker jeg:

  • FncKey+Btn1 gå tilbake til menymodus
  • FncKey+Btn2 forhånds vanskelighetsgrad (hvis det er høyest, gå tilbake til laveste)
  • FncKey+Btn4 øyeblikkelig pause (trykk på hvilken som helst tast for å fjerne pausen)
  • FncKey + Btn 0 eller 3 er udefinerte.

Trinn 2: Deleliste

Deleliste
Deleliste

Nødvendige deler

  • LED, rød, gul, grønn og blå som disse
  • PCB -plater lignende ting du må kjøpe et større brett, og kutte det til ønsket størrelse.
  • pin dip socket lignende varer
  • Attiny-85 chip
  • motstandere
  • knappebrytere brukt: 12x12x8mm og 6x6x6mm PCB Momentary Tactile Push Buttons

anbefalt:

  • summer 5v, aktiv type
  • en Popsicle -pinne
  • 2,54 mm pin header strip
  • 30 ga wire og wire-wrap verktøy https://www.ebay.com/itm/351798901037 lenken ovenfor er til wire som er mer som 36 ga. Jeg skulle ønske jeg visste om en slik avtale for ekte 30 ga. metalltråd

Trinn 3: Høydepunkter i konstruksjonen

Høydepunkter i konstruksjonen
Høydepunkter i konstruksjonen
Høydepunkter i konstruksjonen
Høydepunkter i konstruksjonen
Høydepunkter i konstruksjonen
Høydepunkter i konstruksjonen
Høydepunkter i konstruksjonen
Høydepunkter i konstruksjonen

På hovedkortet har jeg elektrisk det samme som andre tidligere LED-stige-prosjekter, som du kanskje vil referere til for ytterligere grunnleggende konstruksjonsanvisninger

Jeg bruker imidlertid ikke en utvendig opptrekksmotstand på den analoge inngangen A2 (PB4), jeg bruker også røde, gule, grønne og blå lysdioder, i stedet for alle en farge, noe som er ønskelig for noen av spillene jeg laget for denne maskinvaren.

Her er I/O -oppgavene som forventet av de vedlagte programvareskissene:

Prosjekt MCU AT-85 Uno/Nano

Navn navn pin# brd navn --------- ---- ---- --------- Rød L1-3 PB3 2 D-11 Yel L4-6 PB0 5 D-8 Grønn 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 store forskjellen er at jeg har to knapper koblet til PB4. Den første går direkte fra PB4 til bakken, men uten ekstern pull -up resister (jeg kaller dette BTN0). Jeg har også en knappbryter (som jeg kaller BTN1) koblet til en 75Kohm i serie til bakken. Dette hovedkortet kan brukes uten monteringskortet "Button", men med noen begrenset funksjonalitet.

De nåværende begrensende motstandene som går til settene med LED, bør velges basert på lysstyrken til de forskjellige fargeglassene du bruker og hvor lyse du vil ha dem. Jeg endte opp med 91 ohm for det røde settet, 75 gule, 430 grønne og 150 ohm for blå. Disse verdiene kan virke lave, men husk at lysdiodene er multiplekset (vanligvis <100% av tiden)

Jeg brukte 3 mm lysdioder og skilte dem litt fra hverandre. Jeg hadde beina på LED -en over en Popsicle -pinne. På denne måten stod de alle opp like mye og fremfor alle andre komponenter. Jeg har til hensikt på et tidspunkt å montere enheten med bare lysdiodene som stikker ut gjennom en ramme.

Jeg valgte å vikle led-sammenkoblingene. Uten et spesielt kretskort er dette lettere å gjøre enn lodding på trange steder med mange sammenkoblinger; har ikke en tendens til å produsere shorts og er lettere å koble til igjen ved feil. Med alle strømmer i og rundt mikrokontrolleren i milliampene er 30 ga ledning tilstrekkelig.

Knapper og relaterte motstandere:

Jeg utviklet en unik konfigurasjon (slags en dobbel Y) av motstandere og knapper, slik at programvaren kunne se individuelle og doble knappetrykk (teoretisk sett kan enhver kombinasjon av disse fire knappene identifiseres). Jeg prøvde flere konfigurasjoner med en mengde resister -verdier i et regneark på jakt etter den beste konfigurasjonen, og simulerte dem deretter i programvare med å prøve alle mulige resister -kombinasjoner for å finne settet (som jeg bruker) som ville gi maksimal minimumsforskjell av analoge avlesninger mellom alle enkelt- og doble knappetrykk. Jeg ordnet dem slik at spesielt Btn1, Btn4 og Btn1+4 var forskjellige.

Se diagram over knappnettverket ovenfor.

Du må dekke til alle ledninger som kobles til PB4 (og muligens bytte kontakter og motstandere) med elektrisk tape, varmt lim eller noe annet som ikke leder i det hele tatt, ettersom bare en mega-ohm-motstand vil kaste bort evnen til bestemme hvilke brytere som trykkes; og enhver slik kontakt du tar mens du holder en forsamling, ville gjøre det.

Senere tilknyttede instrukser:

4-knappers-spill-bruk-en-analog-inngang/

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

3D-trykt-etui-for-innebygd-LED-display-konsoll-og/

Trinn 4: Ytterligere alternativer og notater

Ytterligere alternativer og notater
Ytterligere alternativer og notater

Valgfri lydutgang

Den valgfrie lydutgangen bruker PB5. Jeg koblet til en 5v summer, i serie med en 150 Ohm resistor for å begrense den ellers høye, irriterende effekten. Jeg anbefaler at du bruker 50-200 Ohm. Man kan parallelt summeren med en hette (2-10uf) for å gjøre den mindre raspende, eller bruke en 10 mm driver på 32 Ohm høyttaler brutt ut av et sett med billige stereo ørepropper, i stedet for motstanderen og summeren. Jeg liker det, for spilllyder, bedre som jeg har det.

Som standard bruker Attiny-85 PB5 som tilbakestilling, effektivt betyr at lyden fungerer, men den vil ikke ha en dårlig effekt på andre operasjoner. Når du bruker en Nano eller Uno, vil lyden fungere (kommer ut fra D3). For å få lyd med Attiny må du endre den interne pin -konfigurasjonen slik at programvaren kan bruke PB5 som utgang. Det er betydelig forgrening i å gjøre dette; vennligst referer til disse:

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

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

og

Vanligvis under spillet vil en feil eller feil påkalle en kvitring eller kort bringebærlyd. Det spilles en gratulasjonsmelodi når du fullfører et nivå eller vinner, som på bordtennis. Jeg finner ut at det å ha medfølgende lyd virkelig øker til glede over spillet.

Alternative knapper for spillkontroller

For mine barnebarn, som er tøffe på utstyr, laget jeg holdbare separate knapper, Btn1 og Btn4, på enden av lange ledninger. Se bilde. Jeg monterte knappene i make-sift grep; med en 75Kohm inline med Btn1, og en ~ 37Kohm inline med Btn4. I serie med Btn4 brukte jeg faktisk 36K, 33K eller muligens 39K. Med tanke på eksterne stempelknapper, vil det være en god idé å ha et eget sett med toppnål, for tilkobling av eksterne håndholdte knapper sett på som Btn1 og Btn4.

Kvalitet strømforsyning nødvendig

For en strømkilde kan du bruke USB 5v-utgangen fra en PC, nettbrett, vegglader, en powerbank eller et 3,7 Li-batteri direkte.

Jeg fant ut at når jeg drev enheten fra noen USB-ladere og flere USB-strømbanker, ville jeg legge merke til at den flimrer og av og til savner atferd og til og med tilbakestiller. Hvis du opplever dette, kan du finne en strømkilde med bedre regulering, ellers kan det være nyttig å legge til en stor (100-1000uf) kondensator på tvers +V til bakken.

Testing

Jeg har også inkludert et testprogram for å validere og feilsøke maskinvaren din. Koden er under arbeid, og har stort behov for å bli ryddet opp. Jeg håper å komme til det, men mener mens det skal tjene dine behov. Jeg har nylig bare brukt den med en Nano som driver skjermen og tastaturenhetene. Du kan bruke nesten hvilken som helst knapp for å velge elementer fra menymodusen. For å avslutte en demo/test igjen, trykker du på nesten hvilken som helst knapp. For å gå ut av knappen (#4) trykker du på FncKey+Btn1 eller holder inne EscKey (jording PB4), eller resirkulerer strømmen.

På grunn av forskjeller i MCU interne motstander og motstandstoleranser kan det hende du må gjøre noen justeringer slik at alle enkelt- og doble knappetrykk oppdages riktig. For å gjøre dette, bruk test-4 (for å velge dette, se beskrivelse av menyoperasjon nedenfor) i testprogrammet. Vær oppmerksom på at jeg ikke brukte en ekstern pull-up resister da jeg har ytterligere høvlet bruk for PB4-inngangen som er inkompatibel med noen pull up.

Trinn 5: Programvareoversikt

Skissen LadderGames.ino implementerer fire spill inkludert noen alternative versjoner.

Skissen kan lastes ned og kjøres fra en ATtiny-85, Nano, Uno etc. For å programmere den til en Attiny-brikke, se: https://www.instructables.com/id/Program-an-ATtiny… og/eller for å programmere ATtiny-85-brikken din:

Endre den interne klokken til ATtiny85 til 8MHz, ettersom ytelsen er ønsket for spillet. Henvise:

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

Denne skissen skal være bakoverkompatibel med de fleste tidligere ATtiny-85 ledede stigeprosjekter, uten endring, men vil ha en begrenset funksjonalitet.

Menyoperasjon

Ved oppstart er det en helsesjekk i form av et fei over lysdiodene og et sett med pip. Deretter går den til hovedmenymodus. Hvert sett med LED -er i én farge lyser i et par sekunder etter hverandre. Et spill velges ved å trykke på en knapp mens et tilhørende sett lyser, spill 1: rødt, spill 2: gult, spill 3: grønt, spill 4: blått. I menymodus kan Btn2, Btn3, Btn4 trykkes for å gå direkte til henholdsvis spill 2, 3, 4. Når et spill er valgt, må du angi variasjonen du ønsker. For hver tilgjengelig variant blinker et sett med fargede lysdioder. Bare trykk på en knapp på den du vil ha. Variasjonene, "versjoner", for hvert spill er beskrevet ytterligere nedenfor.

Versjon ett av alle fire spillene kan spilles med en enkelt knapp. Enten er en kablet mellom PB4 og bakken (Btn-0) som i tidligere LED-stigeinstrukserbare, eller med en bryter som kobler en 75k belastning til bakken (Btn-1). Begge disse vil gjøre i spill når instruksjonene snakker om et ikke -spesifikt knappetrykk.

For å avslutte et spill kan du bruke FncKey+Btn1, holde EscKey (aka: Btn0) nede i 1-2 sekunder eller slå på strømmen.

Trinn 6: Game Play

Spill 1: Push-It

Dette er en tilpasning av mitt Push-It-spill fra en av mine tidligere instrukser

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

Målet med spillet er å skyve blinktellingen og antall lysdioder til så mange som mulig. Push-It starter med et antall blink, som deretter vil gjenta seg. Hvis du trykker på knappen etter den siste blitsen i serien, og når det kan eksistere en ekstra, vil den neste LED -lampen lyse og blitsantallet øke med en. Men hvis du 'skyver' før eller etter tidsperioden for en blivende blits i stedet, reduseres antallet blink i settet.

Hver gang du klarer å øke blitsantallet, øker vanskelighetsgraden ettersom timingen øker litt, noe som gjør det vanskeligere og vanskeligere å komme opp til høyere blitsantall.

Gjeldende telletall lagres i EEPROM -minne for å starte på nytt på samme nivå senere.

Spill 2: Ping-Pong

Flott (om enn det eneste) konkurransespill for to spillere her; der ballen (enkelt lysglimt) går fra den ene siden til den andre, raskere og raskere, hver gang den blir 'truffet' tilbake.

Jeg implementerte først denne enkle lysraden på tvers av knappene på frontpanelet på en superminimaskin i luftfart på 1970-tallet.

For å slå ballen frem og tilbake må den riktige padlen slå (knappen trykkes) når den er i sluttposisjon (siste LED). Den første siden som går glipp taper, og lysene på den vinnende siden blinker.

Det er to varianter, den ene krever bare en knapp (Btn 0 eller 1), som vil treffe ballen i hver ende; og en andre versjon, er for to personer hode mot hode, som krever to knapper; knapp 1 på venstre side og knapp 4 eller 0 på den andre. Bruken av knapp 1 og 4 foretrekkes, da de ikke vil forstyrre hverandre; hver kan bli slått for å returnere ballen fra slutten uansett tilstanden til den andre knappen.

Vinneren av et rally er alltid serveren for den neste.

Spill 3: Shooting Gallery

Skyte alle målene (lysene) for å fullføre et nivå. På hvert høyere nivå er handlingen raskere.

Det er to versjoner; en der stedet er fikset og målene beveger seg og et annet der stedet beveger seg og målene er stille. I hvert tilfelle slår et treff et mållys ut; og en glipp får et mål til å dukke opp. Når et mål er i sikte lyser synet lysere, ellers er det svakt.

I versjon en begynner synet til venstre (nederst) og skanner til høyre. I versjon 2 er siktet festet i midten mens målet beveger seg over høyre til venstre. Ved å se på koden er det spøkelsesaktige versjoner 3 og 4 som kan aktiveres, men du setter din egen velvære på egen risiko.

Spill 4: JumpMan

Tanken er at du løper gjennom et spillnivå hvor det kommer objekter som du må hoppe over, etter hvert som du kommer videre kommer de raskere. I en annen spillversjon er det også over-head-objekter du må dukke under.

I versjon en er det bare objekter å hoppe over. For å hoppe må du trykke på knappen når objektet kommer til den siste cellen til venstre; som lyser opp når dette skjer. For å hoppe 2 eller flere påfølgende objekter må du hoppe (trykke) på den første og holde inne knappen for resten.

I versjon 2 blir det lagt til objekter med overhode (blinkende). De hoppes ved å 'hoppe under cellen før den og slippe den mens den er i sluttcellen. Bare en overhead kan blinke om gangen, så når en har passert kan du se en annen (ikke blinkende før) bar ned på deg. Det vil aldri være sammenhengende omkostninger, men de kan ligge ved siden av ett eller flere hoppobjekter (kampesten).

I spillversjon 3 må du, gå til, bruke en egen knapp for overheadobjektene (Btn-2, 4 eller 0 ditt valg); hopp krever deretter Btn-1.

Når du har klart forbi fire flere objekt (r) enn du ikke klarte, går du videre i nivå; det er en lyd og visuell gratulasjon, deretter en gjenopptakelse med en høyere hastighet. Å komme seg gjennom et sett med påfølgende objekter teller det samme som et enkelt objekt.

Jeg anbefaler deg å skrive ut om spillets driftsregler og lese dem før du spiller et spill du ikke har spilt nylig. Ellers kan du frustrere deg selv; tenker at spillet ikke fungerer som det skal, men du og spillet har forskjellige måter og forventninger. Selv har jeg lurt på dette mer enn et par ganger.

Trinn 7: Oppdateringer, flere spill

Image
Image

Jeg laget et 3D-trykt konsollveske for å inneholde In-Line LED-stige-display og knapper.

Jeg har utviklet flere spill som bruker denne maskinvaren. Sjekk dem ut og ha det gøy:

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

Des. 2016. Nå, på slutten av lenken ovenfor, er det en enhetlig versjon av koden som inkluderer alle de 12 spillene.

17. februar 2017: Her er det siste spillet for dette prosjektet, nå med 16 spill (skisse nedenfor). Dette vil kjøre på alle MCU -implementeringer med 32 KByte flash -programminne. Alt om en til 3 eller 4 av de 16 spillene kan settes inn i en ATtiny. Jeg anbefaler å bruke Nano 3 arduinos. De siste 4 kampene som er lagt til er 'Le Mans' racing, 'Spray' hode mot hode spraymalingskonkurranse., 'PIG' basketballskyteskyting, 'BiFunc' et quiz -spill med binær operasjon.

Med større og mer variert spill av disse spillene er forbedringer av deres spilleevner mulig for alle spillere på alle nivåer. Jeg tror det er mye rom for forbedring i Le Mans -racing via banelayoutdesign og spilletid.

Jeg har skrevet omtrent 10 flere aktiviteter/spill/funksjoner, noen av dem håper jeg å gjøre tilgjengelig rundt høsten 2017.

Disse spillene med én linje kan også endres for en 2 -linjers 2x16 LCD -skjerm, med en linje med spillobjekter og en annen for litt tekst. Jeg har gjort litt av dette, men ettersom jeg støttes av prosjekter så langt jeg kan se, vet jeg ikke når eller om jeg skulle få en runde. Så hvis noen er motivert til å adoptere og optimalisere disse spillene for en 2x16 LCD, vennligst del med meg og andre.

I tillegg til de fire nye spillene her i Menu_16Games.ino, har jeg lagt ved prosjektet mitt og har laget relaterte instrukser: Inline LED -spillkonsollkasse og driver det bærbare MCU -prosjektet

Jeg håper mange tar seg tid og… NYT disse spillene.

Gruppespill: 1– Rød 2- Gul 3- Grønn 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 arbeidsevne med gamle skitne støyende eksterne joystick-knapper, i hode-hode-spill (gruppe 2).

13. desember 2017: Forbedret håndtering av knappestopp og måling av avregning, fikset mindre problemer. Jeg hadde prøvd å bruke en kondensator på knappens analoge inngangslinje, men for å være effektiv resulterte det i en langsom måling og produserte falske nivåidentifikasjoner eller programvaren ventet så lenge at rask spillhandling ble kompromittert.

Apr 2018: Jeg har funnet ut at 5/8 komprimeringskoblinger gjør flotte kropper for eksterne stempelknapper. Siden barna mine liker å bruke et par av disse, la jeg til toppnål for å enkelt koble to av dem (som Btn1 og Btn4).

Vær oppmerksom på at jeg opprettet et annet prosjekt, i oktober i fjor, som er bygget på denne instruerbare maskinvaren. Det er i Halloween -ånd og kan være mye moro, spesielt for barna. Instruerbar: Ghostly-Psyche-Influencer-Devices

Anbefalt: