Innehållsförteckning:

In-Line LED-skärm Arduino-spel: 7 steg (med bilder)
In-Line LED-skärm Arduino-spel: 7 steg (med bilder)

Video: In-Line LED-skärm Arduino-spel: 7 steg (med bilder)

Video: In-Line LED-skärm Arduino-spel: 7 steg (med bilder)
Video: How to make a LED digital counter using 7- Segment Display 2024, Juli
Anonim
Image
Image
Stora komponenter
Stora komponenter

aka LED Ladder Display Game System.

En Attiny-85 utrustad med hårdvara och programvara för att spela actionfyllda "videospel" på en in-line LED-display.

Den har en multiplex 12 LED -skärm med stege och stöder upp till 6 knappar och en valfri ljudutgång.

Den är fullpackad med 4 skicklighetsspel, med flera svårighetsgrader och några variationer (uppdaterad till 16 spel när den används med en ATMega MCU).

[Video]

Steg 1: Huvudkomponenter

Jag byggde mitt projekt modulärt (två separata sammansättningar). En huvudsaklig Display-underenhet; som kan användas självständigt. Och en knappinmatningsundermontering. På så sätt kan jag använda knappen eller bildskärmsenheten igen i ett annat projekt. Detta möjliggör också flexibla monteringsalternativ.

Jag tog också ut styrledningen till en pin-header för LED-stegen så att jag kunde använda en Arduino Nano (eller en Uno), för att utveckla programvara för den samt använda den i andra projekt. En Digispark fungerar inte på grund av de andra komponenterna på kretskortet.

Jag valde att använda samma pin -tilldelningar för LED -stegen som i tidigare instruktioner för att göra det enkelt för dem som redan har en sådan hårdvaruimplementering att använda programvaran i denna instruerbara, även om jag inte hittade de uppdrag som gjorts för den tydligaste logiken i mjukvaran.

De två linjerna mellan modulerna är PB4 och mark. Eftersom allt som finns på flerknappsaggregatet är motstånd och omkopplare så är det inte polaritetsberoende, och omvänd anslutning spelar ingen roll.

Med stöd av fler knappar kan en större variation av spel (eller applikationer) implementeras. Två av spelen i denna instruerbara spelas bäst med två knappar. De fyra huvudknapparna kan användas för att direkt komma åt ett associerat spel. Snart kommer jag att implementera ett spel som beror på att alla fyra huvudknapparna används.

Detta projekt använder upp till sex knappar. Fyra huvudsakliga BTN 1-4, Dessa knappar kan identifieras individuellt även när två av dem trycks samtidigt. De andra två är speciella knappar, först är motsvarigheten till den enda knappen i tidigare projekt som gör en hård anslutning mellan PB4 -ingången till jord, jag kallar detta BTN0 eller ESC eftersom den här omkopplaren alltid kan detekteras och kommer att blockera detektering av någon av de andra. Den andra specialknappen är funktionsknappen. Om den trycks in när BTN 0-4 trycks in kan den avkännas och användas för att ändra funktionalitet.

I denna färdighetsspelskiss använder jag:

  • FncKey+Btn1 återgå till menyläge
  • FncKey+Btn2 avancerar svårighetsgrad (om den är som högst går du tillbaka till lägsta)
  • FncKey+Btn4 omedelbar paus (tryck på valfri knapp för att avbryta pausen)
  • FncKey + Btn 0 eller 3 är odefinierade.

Steg 2: Dellista

Reservdelar
Reservdelar

Obligatoriska delar

  • Lysdioder, rött, gult, grönt och blått så här
  • PCB -kort liknande föremål du kan behöva köpa en större bräda och klippa den till önskad storlek.
  • pin dip socket liknande föremål
  • Attiny-85-chip
  • motståndare
  • knappar som används: 12x12x8mm och 6x6x6mm PCB Momentary Tactile Push Buttons

rekommenderad:

  • summer 5v, aktiv typ
  • en Popsicle stick
  • 2,54 mm stifthuvudremsa
  • 30 ga tråd och trådlindningsverktyg https://www.ebay.com/itm/351798901037 ovanstående länk är till tråd som liknar 36 ga. Jag önskar att jag visste om en sådan affär för riktiga 30 ga. tråd

Steg 3: Konstruktionens höjdpunkter

Konstruktionens höjdpunkter
Konstruktionens höjdpunkter
Konstruktionens höjdpunkter
Konstruktionens höjdpunkter
Konstruktionens höjdpunkter
Konstruktionens höjdpunkter
Konstruktionens höjdpunkter
Konstruktionens höjdpunkter

På huvudkortet har jag elektriskt samma som andra tidigare LED-stege-projekt, som du kanske vill hänvisa till för ytterligare grundläggande konstruktionsanvisningar

Jag använder dock inte en yttre pull -up -resistor på den analoga ingången A2 (PB4), jag använder också röda, gula, gröna och blåa lysdioder istället för alla en färg, vilket är önskvärt för några av de spel jag skapade för denna hårdvara.

Här är I/O -uppdragen som förväntat av de bifogade programskisserna:

Projekt MCU AT-85 Uno/Nano

Namn namn pin# brd namn --------- ---- ---- --------- 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 Ljud PB5 1 D-3

Den enda signifikanta skillnaden är att jag har två knappar kopplade till PB4. Den första går direkt från PB4 till marken men utan extern pull -up -resistor (jag kallar detta BTN0). Jag har också en knappomkopplare (som jag kallar BTN1) ansluten till en 75Kohm i serie till jord. Detta moderkort kan användas utan monteringsbordet "Button", men med viss begränsad funktionalitet.

De nuvarande begränsande motstånden som går till uppsättningarna LED bör väljas baserat på ljusstyrkan hos de olika färg -lysdioder du använder och hur ljusa du vill ha dem. Jag slutade med 91 ohm för det röda setet, 75 gula, 430 gröna och 150 ohm för blått. Dessa värden kan verka låga, men kom ihåg att lysdioderna är multiplexerade (vanligtvis mycket mindre än 100% av tiden)

Jag använde 3 mm lysdioder och skiljde dem åt lite. Jag hade benen på LED -plattan över en Popsicle -pinne. På så sätt stod de alla upp lika mycket och framför allt andra komponenter. Jag tänker någon gång montera enheten med bara lysdioderna som sticker ut genom en ram.

Jag valde att trådlinda de ledda sammankopplingarna. Utan ett speciellt kretskort är detta lättare att göra än att lödas på trånga platser med många sammankopplingar; tenderar inte att producera shorts och är lättare att koppla om vid ett misstag. Med alla strömmar i och runt mikrokontrollen i milliampsen är 30 ga tråd tillräckligt.

Knappar och relaterade motståndare:

Jag utarbetade en unik konfiguration (typ ett dubbel Y) av motstånd och knappar, så att programvaran kunde urskilja individuella och dubbla knapptryckningar (teoretiskt sett kan alla kombinationer av dessa fyra knappar identifieras). Jag försökte flera konfigurationer med en mängd motståndsvärden i ett kalkylblad för att leta efter den bästa konfigurationen och simulerade dem sedan i mjukvara med att prova alla möjliga resisterkombinationer för att hitta uppsättningen (som jag använder) som skulle ge maximala minimiskillnaden av analoga avläsningar mellan alla enkla och dubbla knapptryckningar. Jag ordnade dem så att särskilt Btn1, Btn4 och Btn1+4 var distinkta.

Se Diagram över knappnätverket ovan.

Du måste täcka över alla ledningar som sammankopplar till PB4 (och eventuellt byta kontakter och motstånd) med eltejp, varmt lim eller något annat som inte alls leder, eftersom ett bara megohm-motstånd kommer att slänga möjligheten att bestämma vilka omkopplare som trycks in; och alla sådana kontakter du tar när du håller en sammankomst skulle göra det.

Senare associerade instruktioner:

4-knappars-spel-med-en-analog-ingång/

Dual-Power-for-Your-Portable-Micro-Controller-Proj/

3D-tryckt-fodral-för-in-LED-display-konsol-och/

Steg 4: Ytterligare alternativ och anteckningar

Ytterligare alternativ och anteckningar
Ytterligare alternativ och anteckningar

Valfri ljudutgång

Den valfria ljudutmatningen använder PB5. Jag anslöt en 5v summer, i serie med en 150 Ohm resistor för att begränsa dess annars högljudda irriterande effekt. Jag rekommenderar att du använder 50-200 Ohm. Man kan parallellisera summern med en kåpa (2-10uf) för att göra den mindre raspig, eller använda en 10 mm högtalare 32 Ohm högtalare utbruten ur en uppsättning billiga stereo-öronproppar, istället för resistorn och summern. Jag gillar det, för spelljud, bättre som jag har det.

Som standard använder Attiny-85 PB5 som återställning, effektivt innebär att ljudet fungerar men det kommer inte att ha någon dålig effekt på någon annan operation. När du använder en Nano eller Uno fungerar ljudet (kommer ut från D3). För att få ljud med Attiny måste du ändra den interna stiftkonfigurationen så att programvaran kan använda PB5 som utgång. Det finns betydande konsekvenser i att göra detta; hänvisa till dessa:

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

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

och

I allmänhet kommer ett misstag eller misslyckande att orsaka ett kvittrande eller kort hallonljud. Det spelas en gratulationsmelodi när du slutför en nivå eller vinner, som på pingis. Jag tycker att medföljande ljud verkligen ökar till spelglädje.

Alternativa knappar för spelkontroller

För mina barnbarn, som är grova på utrustning, gjorde jag hållbara separata knappar, Btn1 och Btn4, på slutet av långa ledningar. Kolla bilden. Jag monterade knapparna i make-sift grepp; med en 75Kohm inline med Btn1 och en ~ 37Kohm inline med Btn4. I serie med Btn4 använde jag faktiskt 36K, 33K eller till och med 39K. Med externa kolvknappar i åtanke, skulle det vara en bra idé att ha en separat uppsättning rubrikstift för anslutning av externa handhållna knappar som Btn1 och Btn4.

Strömförsörjning av hög kvalitet behövs

För en strömkälla kan du använda USB 5v-utgången från en PC, surfplatta, väggladdare, en powerbank eller 3,7 Li-batteri direkt.

Jag upptäckte att när jag drev enheten från några USB-laddare och flera USB-powerbankar skulle jag märka att det flimrar och ibland missar beteende och till och med återställs. Om du upplever detta kan du hitta en strömkälla med bättre reglering, annars kan det vara bra att lägga till en stor (100-1000uf) kondensator över +V till marken.

Testning

Jag har också inkluderat ett testprogram för att validera och felsöka din maskinvara. Koden är under pågående arbete och är i stort behov av att städas. Jag hoppas kunna komma till det, men menar medan det borde tillgodose dina behov. Jag har nyligen bara använt den med en Nano som driver bildskärmen och tangentbordsenheterna. Du kan använda nästan vilken knapp som helst för att välja objekt från menyläget. För att avsluta en demo/test igen, tryck på nästan vilken knapp som helst. För att avsluta knapptestet (#4), tryck på FncKey+Btn1 eller håll ned EscKey (jordning PB4), eller återanvänd ström.

På grund av skillnader i MCU interna motstånd och motståndstoleranser kan du behöva göra några justeringar så att alla enkla och dubbla knapptryckningar detekteras korrekt. För att göra detta, använd test-4 (för att välja detta, se beskrivningen av menyoperationen nedan) i testprogrammet. Observera att jag inte använde en extern pull-up resister eftersom jag har ytterligare hyvlade användningar för PB4-ingången som är inkompatibla med någon pull up.

Steg 5: Programöversikt

Skissen LadderGames.ino genomför fyra spel inklusive några alternativa versioner.

Skissen kan laddas ner och köras från en ATtiny-85, Nano, Uno etc. För att programmera den till ett Attiny-chip, se: https://www.instructables.com/id/Program-an-ATtiny… och/eller för att programmera ditt ATtiny-85-chip:

Ändra den interna klockan på ATtiny85 till 8MHz, eftersom prestanda önskas för spelet. Hänvisa:

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

Denna skiss bör vara bakåtkompatibel med de flesta tidigare ATtiny-85 ledda stege-projekt, utan förändring, men kommer att ha viss begränsad funktionalitet.

Menyoperation

Vid uppstart sker en hälsokontroll i form av ett svep över lysdioderna och en uppsättning pip. Sedan går det till huvudmenyläget. Varje uppsättning lysdioder med en färg tänds i ett par sekunder i följd. Ett spel väljs genom att trycka på en knapp medan en tillhörande uppsättning lyser, spel 1: Röd, spel 2: Gul, spel 3: Grönt, spel 4: Blått. I menyläget kan du trycka på Btn2, Btn3, Btn4 för att gå direkt till spel 2, 3, 4. När ett spel har valts ut måste du ange vilken variant du vill ha. För varje tillgänglig variant kommer en uppsättning färgade lysdioder att blinka. Tryck bara på en knapp på den du vill ha. Variationerna, "versioner", för varje spel beskrivs vidare nedan.

Version ett av alla fyra spelen kan spelas med en enda knapp. Antingen kopplas en mellan PB4 och jord (Btn-0) som i tidigare LED-stegeinstruktioner, eller med en omkopplare som ansluter en 75k belastning till marken (Btn-1). Endera av dessa kommer att göra i spel när instruktionerna talar om en icke -specifik knapptryckning.

För att avsluta alla spel kan du använda FncKey+Btn1, håll EscKey (aka: Btn0) intryckt i 1-2 sekunder eller slå på strömmen.

Steg 6: Game Play

Spel 1: Push-It

Detta är en anpassning av mitt "Push-It" -spel från en av mina tidigare instruerbara

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

Målet med spelet är att skjuta blinkningen och antalet tända lysdioder till så många som möjligt. Push-It startar med ett antal blinkningar, som sedan upprepas. Om du trycker på knappen efter den sista blixten i serien och när ytterligare en potentiellt skulle kunna existera tänds nästa lysdiod och blixtantalet ökar med en. Men om du "trycker" före eller efter tidsperioden för en blivande ytterligare blixt istället kommer antalet blinkningar i uppsättningen att minska.

Varje gång du lyckas öka blixträkningen ökar svårighetsgraden eftersom timingen påskyndar lite, vilket gör det svårare och svårare att komma upp till högre blixtantal.

Det aktuella räkningsnumret lagras i EEPROM -minne för omstart på samma nivå senare.

Spel 2: Pingis

Bra (om än det enda) tävlingsspel för två spelare här; där bollen (enstaka ljus) går från ena sidan till den andra, snabbare och snabbare, varje gång den får "träff" tillbaka.

Jag implementerade först denna enda rad med ljusspel över knapparna på frontpanelens knappar på en super-minidator i rymden på 1970-talet.

För att slå bollen fram och tillbaka måste den lämpliga paddeln slå (knappen tryckt) när den är i slutläget (sista lysdioden). Den första sidan som missar förlorar och lamporna på den vinnande sidan blinkar.

Det finns två varianter, en som bara kräver en knapp (Btn 0 eller 1), som kommer att träffa bollen i vardera änden; och en andra version, är för två personer huvud mot huvud, vilket kräver två knappar; knapp 1 på vänster sida och knapp 4 eller 0 på den andra. Användningen av knapp 1 & 4 är att föredra, eftersom de inte kommer att störa varandra; var och en kan träffas för att återföra bollen från dess ände oavsett tillståndet för den andra knappen.

Vinnaren av ett rally är alltid servern för nästa.

Spel 3: Shooting Gallery

Skjut alla mål (lampor) för att slutföra en nivå. I varje högre nivå är handlingen snabbare.

Det finns två versioner; en där platsen är fixerad och målen rör sig och en annan där webbplatsen rör sig och målen är stilla. I varje fall slår en träff ett målljus; och en miss får ett mål att dyka upp. När ett mål är i sikte lyser sikten ljusare, annars är det svagt.

I version ett börjar sikten till vänster (botten) och skannar till höger. I version 2 är sikten fixerad i mitten medan målet rör sig över höger till vänster. Genom att titta på koden finns det spöklika versioner 3 & 4 som kan aktiveras, men du sätter ditt eget välbefinnande på egen risk.

Spel 4: JumpMan

Tanken är att du kör igenom en spelnivå där objekt kommer längs som du måste hoppa över, när du går framåt kommer de snabbare. I en annan spelversion finns det också över-head-objekt du måste duka under.

I version ett finns det bara objekt att hoppa över. För att hoppa måste du trycka på knappen när objektet kommer till den sista cellen till vänster; som ljusnar när detta inträffar. För att hoppa 2 eller flera på varandra följande objekt måste du hoppa (tryck) på det första och hålla knappen intryckt för resten.

I version 2 tillkommer överhuvud (blinkande) objekt. De hoppas genom att 'hoppa under cellen före den och släppa medan den är i slutcellen. Endast en overhead kan blinka åt gången, så när en har passerat kan du se en annan (inte blinkande innan) bar ner på dig. Det kommer aldrig att finnas på varandra följande omkostnader men de kan ligga intill ett eller flera hopp (stenblockstyp) objekt.

I spelversion 3 måste du, gå till, använda en separat knapp för de överliggande objekten (Btn-2, 4 eller 0 ditt val); hopp kräver då Btn-1.

När du har lyckats förbi fyra objekt mer än du misslyckades med, går du vidare i nivå; det finns ett ljud och visuellt grattis, sedan en återupptagning med en högre hastighet. Att komma förbi en uppsättning på varandra följande objekt räknas samma som ett enskilt objekt.

Jag råder dig att skriva ut om spelens driftsregler och läsa om dem innan du spelar ett spel som du inte nyligen har spelat. Annars kan du frustrera dig själv; tänker att spelet inte fungerar som det ska, men du och spelet har olika sätt och förväntningar. Jag har själv fallit böjda för detta mer än ett par gånger.

Steg 7: Uppdateringar, fler spel

Image
Image

Jag gjorde ett 3D-tryckt konsolfodral för att hysa In-Line LED-stegen och knapparna.

Jag har utvecklat fler spel som använder denna hårdvara. Kolla in dem och ha kul:

Nya spel från 'Whack a Mole' till 'Tug of War'

December 2016. Nu, i slutet av ovanstående länk, finns det en enhetlig version av koden inklusive alla 12 spel.

17 februari 2017: Här är den senaste speluppsättningen för detta projekt, nu med 16 spel (skiss nedan). Detta körs på alla MCU -implementeringar med 32KBytes flashminne. Allt om en till 3 eller 4 av de 16 spelen kan sättas in i en ATtiny. Jag rekommenderar att du använder Nano 3 arduinos. De senaste 4 matcherna som läggs till är "Le Mans" -tävling, "Spray" -sprutningstävling. Spridmålningstävling "PIG", basketskytte, "BiFunc", ett frågespel för binär operation.

Med ett större och mer varierat spel av dessa spel är förbättringar av deras spelförmågor möjliga för alla nivåspelare. Jag tror att det finns mycket utrymme för förbättringar i Le Mans -tävlingar via banlayoutdesign och speltiming.

Jag har, skrivit upp, ytterligare tio aktiviteter/spel/funktioner, varav några hoppas jag göra tillgängliga under hösten 2017.

Även dessa enradsspel kan modifieras för en 2 -radig 2x16 LCD -skärm, med en rad spelobjekt och en annan för lite text. Jag har gjort lite av det här, men eftersom jag är backad med projekt så långt jag kan se, vet jag inte när eller om jag skulle få en runda till det. Så om någon är motiverad att anta och optimera dessa spel för en 2x16 LCD, vänligen dela med mig och andra.

Förutom de fyra nya spelen här i Menu_16Games.ino har jag bifogat mitt projekt och skapat relaterade instruktioner: Inline LED -spelkonsolfodral och drivning av ditt bärbara MCU -projekt

Jag hoppas att många tar sig tid och… NJUT av dessa spel.

Gruppspel: 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: Förbättrad arbetsförmåga med gamla smutsiga bullriga externa joystick-knappar, i head-head spel (grupp 2).

13 december 2017: Förbättrad hantering av knappstopp och mätningssättning, fixade mindre problem. Jag hade försökt använda en kondensator på knappens analoga ingångsledning, men för att vara effektiv resulterade det i långsam mätning och producerade falska nivåidentifieringar eller programvaran väntade så länge att snabba spelåtgärder äventyrades.

Apr 2018: Jag har upptäckt att 5/8 kompressionskopplare gör stora kroppar för externa kolvknappar. Eftersom mina barn gillar att använda ett par av dessa, lade jag till huvudstiften för att enkelt ansluta två av dem (som Btn1 och Btn4).

Observera att jag skapade ett annat projekt, i oktober förra året, som är byggt på den här instruerbara maskinvaran. Det är i Halloween -anda och kan vara väldigt roligt, särskilt för barnen. Instruerbar: Ghostly-Psyche-Influced-Devices

Rekommenderad: