INHOUDSOPGAWE:

In-line LED-skerm Arduino-speletjies: 7 stappe (met foto's)
In-line LED-skerm Arduino-speletjies: 7 stappe (met foto's)

Video: In-line LED-skerm Arduino-speletjies: 7 stappe (met foto's)

Video: In-line LED-skerm Arduino-speletjies: 7 stappe (met foto's)
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Julie
Anonim
Image
Image
Belangrikste komponente
Belangrikste komponente

aka LED Ladder Display Game System.

'N Attiny-85 wat toegerus is met hardeware en sagteware om aksiebelaaide "videospeletjies" op 'n in-line LED-skerm te speel.

Dit het 'n veelvoudige 12 LED -leervertoning en ondersteun tot 6 knoppie -ingange en 'n opsionele klankuitset.

Dit is propvol vier vaardigheidswedstryde, met verskeie moeilikheidsgraad en 'n paar variasies (opgedateer tot 16 speletjies, as dit gebruik word met 'n ATMega MCU).

[Video]

Stap 1: Belangrike komponente

Ek het my projek modulêr gebou (twee afsonderlike samestellings). 'N Hoofskerm-onderstel; wat selfstandig gebruik kan word. En 'n knoppie-invoer-sub-vergadering. Op hierdie manier kan ek die knoppie of die skerms weer in 'n ander projek gebruik. Dit maak ook voorsiening vir buigsame monteeropsies.

Ek het ook die bedieningslyn na 'n speldekop gebring vir die LED-leerversameling, sodat ek 'n Arduino Nano (of 'n Uno) kon gebruik om sagteware daarvoor te ontwikkel en dit in ander projekte te gebruik. 'N Digispark werk nie as gevolg van die ander komponente op die printplaat nie.

Ek het gekies om dieselfde pin -opdragte vir die LED -leer te gebruik as in die vorige instruksies, om dit makliker te maak vir diegene wat al so 'n hardeware -implementering het om die sagteware in hierdie instruksies te gebruik, alhoewel ek nie die opdragte vir die duidelikste logika gevind het nie die sagteware.

Die twee lyne tussen die modules is PB4 en gemaal. Aangesien alles wat op die multi-knoppie is, weerstande en skakelaars is, is dit nie polariteitsafhanklik nie, en die omkeer van die verbinding maak nie saak nie.

Met die ondersteuning van meer knoppies kan 'n groter verskeidenheid speletjies (of toepassings) geïmplementeer word. Twee van die speletjies in hierdie instruksies kan die beste met twee knoppies gespeel word. Die vier hoofknoppies kan gebruik word om direk toegang tot 'n geassosieerde spel te verkry. Binnekort sal ek 'n speletjie implementeer wat afhang van die gebruik van al vier hoofknoppies.

Hierdie projek gebruik tot ses knoppies. Vier belangrikste BTN 1-4, hierdie knoppies kan afsonderlik opgespoor word, selfs as op twee van hulle gelyktydig gedruk word. Die ander twee is spesiale knoppies; eerstens is daar die ekwivalent van die enkele knoppie in vroeëre projekte wat 'n harde verbinding tussen die PB4 -invoer met die grond maak, ek noem dit BTN0 of ESC, aangesien hierdie skakelaar altyd opgespoor kan word en die opsporing sal blokkeer van enige van die ander. Die ander spesiale sleutel is die funksiesleutel, as dit ingedruk word wanneer BTN 0-4 ingedruk word, kan dit waargeneem en gebruik word om funksionaliteit te verander.

In hierdie vaardigheidsspelskets gebruik ek:

  • FncKey+Btn1 keer terug na die spyskaartmodus
  • FncKey+Btn2 styg moeilikheidsgraad (as dit op die hoogste teruggaan na die laagste)
  • FncKey+Btn4 onmiddellike pouse (druk enige sleutel om te onderbreek)
  • FncKey + Btn 0 of 3 is ongedefinieerd.

Stap 2: Onderdele lys

Onderdele lys
Onderdele lys

Vereiste onderdele

  • LED's, rooi, geel, groen en blou soos hierdie
  • PCB -borde soortgelyke items wat u moontlik moet koop, en sny dit in die gewenste grootte.
  • pen dip socket soortgelyke items
  • Attiny-85 chip
  • weerstanders
  • knoppies skakelaars gebruik: 12x12x8mm en 6x6x6mm PCB Momentary Tactile Push Buttons

aanbeveel:

  • gonser 5v, aktiewe tipe
  • 'n Popsicle -stok
  • 2.54 mm penkopstrook
  • 30 ga draad- en draadomhulselhulpmiddel https://www.ebay.com/itm/351798901037 bogenoemde skakel is na draad wat meer as 36 ga is. Ek wens ek het geweet van so 'n ooreenkoms vir regte 30 ga. draad

Stap 3: Hoogtepunte vir konstruksie

Konstruksiehoogtepunte
Konstruksiehoogtepunte
Konstruksiehoogtepunte
Konstruksiehoogtepunte
Konstruksiehoogtepunte
Konstruksiehoogtepunte
Konstruksiehoogtepunte
Konstruksiehoogtepunte

Op die hoofbord het ek dieselfde as ander vorige LED-leerprojekte, waarna u kan verwys vir verdere basiese konstruksierigtings

Ek gebruik egter nie 'n buitekant -weerstand op die analoog ingang A2 (PB4) nie; ek gebruik ook rooi, geel, groen en blou LED's, in plaas van al die een kleur, wat wenslik is vir sommige van die speletjies wat ek vir hierdie hardeware geskep het.

Hier is die I/O -opdragte soos verwag deur die aangehegte sagtewaresketse:

Projek MCU AT-85 Uno/Nano

Name naam pin# brd naam --------- ---- ---- --------- Rooi L1-3 PB3 2 D-11 Yel L4-6 PB0 5 D-8 Groen L7-9 PB1 6 D-9 Blou L10-11 PB2 7 D-10 Ain PB4/A2 3 A-2 Audio PB5 1 D-3

Die belangrikste verskil is dat ek twee knoppies op PB4 het. Die eerste gaan direk van PB4 na die grond, maar sonder 'n eksterne weerstand (ek noem dit BTN0). Ek het ook 'n knoppieskakelaar (wat ek BTN1 noem) gekoppel aan 'n 75Kohm in serie na grond. Hierdie hoofbord kan gebruik word sonder die "Button" monteerbord, maar met 'n beperkte funksionaliteit.

Die huidige beperkende weerstande wat na die stelle LED's gaan, moet gekies word op grond van die helderheid van die verskillende kleur -LED's wat u gebruik en hoe helder u dit wil hê. Ek eindig met 91 ohm vir die rooi stel, 75 geel, 430 groen en 150 ohm vir blou. Hierdie waardes lyk moontlik laag, maar onthou dat die LED's veelvoudig is (gewoonlik minder as 100% van die tyd)

Ek het 3 mm leds gebruik en 'n bietjie van mekaar geskei. Ek het die bene van die LED oor 'n Popsicle -stok gehad. Op hierdie manier het hulle almal ewe veel opgestaan en bo alle ander komponente. Ek is van plan om die eenheid op 'n stadium te monteer met net die LED's wat deur 'n raam steek.

Ek het gekies om die geleide verbindings met draad te draai. Sonder 'n spesiale printplaat is dit makliker om te doen as om op smal plekke met baie onderlinge verbindings te soldeer; is nie geneig om kortbroeke te produseer nie, en is makliker om weer te bedraad in die geval van 'n fout. Met al die strome in en om die mikrobeheerder in die milliampere is 30 ga draad voldoende.

Knoppies en verwante weerstandbieders:

Ek het 'n unieke opset (soort van 'n dubbele Y) van weerstande en knoppies bedink, sodat die sagteware individuele en dubbele knoppies kon onderskei (teoreties kan 'n kombinasie van hierdie vier knoppies geïdentifiseer word). Ek het verskeie konfigurasies probeer met 'n magdom weerstandswaardes in 'n sigblad op soek na die beste konfigurasie, en dit dan gesimuleer in sagteware, en probeer alle moontlike weerstandskombinasies om die stel (wat ek gebruik) te vind, wat die maksimum minimumverskil sou oplewer van analoog lesings tussen enige en dubbel druk op die knoppie. Ek het dit so gerangskik dat Btn1, Btn4 en Btn1+4 veral van mekaar verskil.

Verwys na die diagram van die knoppie -netwerk hierbo.

U moet alle bedrading wat met PB4 verbind word, bedek (en moontlik kontakte en weerstands skakel) met elektriese band, warm gom of iets anders wat glad nie gelei word nie, aangesien 'n blote megahoed-weerstand die vermoë om bepaal watter skakelaar (s) gedruk word; en so 'n kontak wat u maak tydens 'n vergadering, sou dit doen.

Later verwante instruksies:

4-knoppie-speletjies-met-een-analoog-invoer/

Dubbelkrag-vir-u-draagbare-mikro-beheerder-Proj/

3D-gedrukte-tas-vir-in-lyn-LED-vertoning-konsole-en/

Stap 4: Verdere opsies en notas

Verdere opsies en notas
Verdere opsies en notas

Opsionele klankuitset

Die opsionele klankuitset gebruik PB5. Ek het 'n 5v -gonser in serie gekoppel met 'n weerstand van 150 Ohm om die andersins harde, irriterende uitset te beperk. Ek beveel aan dat u 50-200 Ohm gebruik. U kan die gonser parallel met 'n deksel (2-10uf) maak om dit minder raserig te maak, of 'n 32 mm-luidspreker van 10 mm, wat uit 'n stel goedkoop stereo-oordopjes bestaan, in plaas van die weerstand en die zoemer. Ek hou daarvan, vir spelgeluide, beter soos ek dit het.

Die Attiny-85 gebruik standaard PB5 as 'n reset, effektief beteken dat die klank sal werk, maar dit sal geen nadelige uitwerking op enige ander werking hê nie. As u 'n Nano of Uno gebruik, werk die klank (kom uit die D3). Om klank by die Attiny te kry, moet u die interne pin -konfigurasie verander sodat die sagteware PB5 as uitset kan gebruik. Daar is beduidende gevolge hiervan; verwys asseblief na hierdie:

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

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

en

Oor die algemeen veroorsaak 'n fout of mislukking 'n tjirp of kort framboosgeluid tydens spel. Daar word 'n gelukwensende deuntjie gespeel wanneer u 'n vlak voltooi of wen, soos by tafeltennis. Ek vind dat die bygevoegde klank werklik tot speelvreugde toeneem.

Alternatiewe knoppies van die spelbeheerder

Vir my kleinkinders, wat baie toerusting het, het ek duursame afsonderlike knoppies, Btn1 en Btn4, gemaak aan die einde van lang looddrade. Sien foto. Ek het die knoppies in 'n maklike greep gemonteer; met 'n 75Kohm inline met Btn1, en 'n ~ 37Kohm inline met Btn4. In reekse met Btn4 het ek eintlik 'n 36K, 'n 33K of selfs 'n 39K gebruik. Met eksterne plunjerknoppies in gedagte, is dit 'n goeie idee om 'n aparte stel koppenne te hê vir die aansluiting van eksterne handknoppies, gesien as Btn1 en Btn4.

Kwaliteit kragtoevoer benodig

Vir 'n kragbron kan u die USB 5v-uitset van 'n rekenaar, tablet, muurlaaier, 'n kragbank of 3,7 Li-battery direk gebruik.

Ek het agtergekom dat ek, as ek die eenheid van 'n paar USB-laaiers en verskeie USB-kragbanke aanstuur, flikkerende en af en toe misgedrag sou sien en selfs terugstel. As u dit ondervind, kan u 'n kragbron kry met 'n beter regulering, anders kan 'n groot (100-1000uf) kondensator dwars +V op die grond gevoeg word.

Toets

Ek het ook 'n toetsprogram ingesluit om u hardeware te bevestig en te ontfout. Die kode is aan die gang, en dit is baie nodig om skoongemaak te word. Ek hoop om daarby uit te kom, maar bedoel terwyl dit in u behoeftes moet voorsien. Ek het dit onlangs net gebruik met 'n Nano wat die skerm en die sleutelbordkonstruksies bestuur. U kan die meeste knoppies gebruik om items uit die spyskaartmodus te kies. Om weer 'n demo/toets te verlaat, druk die meeste knoppies. Om die knoppie -toets (#4) te verlaat, druk FncKey+Btn1 of hou die EscKey (aarding PB4) ingedruk, of herwin krag.

As gevolg van verskille in MCU interne weerstande en weerstandstoleransies, moet u moontlik 'n paar aanpassings aanbring sodat alle enkele en dubbele knoppies korrek opgespoor kan word. Gebruik test-4 (om dit te kies, verwys na die beskrywing van die menu-werking hieronder) van die toetsprogram. Let daarop dat ek nie 'n eksterne optrede weerstand gebruik het nie, aangesien ek die PB4-invoer verder geskaaf het, wat nie verenigbaar is met enige optrek nie.

Stap 5: Sagteware -oorsig

Die skets LadderGames.ino implementeer vier speletjies, insluitend 'n paar alternatiewe weergawes.

Die skets kan afgelaai en uitgevoer word vanaf 'n ATtiny-85, Nano, Uno ens. Om dit in 'n Attiny-chip te programmeer, sien: https://www.instructables.com/id/Program-an-ATtiny… en/of om te programmeer u ATtiny-85-chip:

Verander die interne klok van die ATtiny85 na 8MHz, aangesien die prestasie van die spel verlang word. Verwys:

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

Hierdie skets moet agteruit versoenbaar wees met die meeste vroeëre ATtiny-85 geleide leerprojekte, sonder verandering, maar het 'n beperkte funksionaliteit.

Spyskaartbediening

By die aanvang is daar 'n gesondheidstoets in die vorm van 'n sweep oor die LED's en 'n stel piep. Dan gaan dit na die hoofkieslysmodus. Elke stel LED's van een kleur brand 'n paar sekondes agtereenvolgens. 'N Spel word gekies deur op 'n knoppie te druk terwyl 'n geassosieerde stel brand, spel 1: rooi, spel 2: geel, spel 3: groen, spel 4: blou. In die spyskaartmodus kan Btn2, Btn3, Btn4 gedruk word om direk na speletjies 2, 3, 4 te gaan. Sodra 'n speletjie gekies is, moet u die variasie wat u wil hê, aandui. Vir elke beskikbare variasie sal 'n stel gekleurde LED's flits. Druk eenvoudig op 'n knoppie op die een wat u wil hê. Die variasies, 'weergawes', vir elke wedstryd word hieronder verder beskryf.

Weergawe een van al vier die speletjies kan met 'n enkele knoppie gespeel word. Óf die een is tussen PB4 en die aarde (Btn-0) bedraad, soos in vorige instruksies van die LED-leer, of met 'n skakelaar wat 'n las van 75k met die grond verbind (Btn-1). Beide hiervan sal in speletjies gedoen word as die instruksies spreek van 'n nie -spesifieke knoppie -druk.

Om 'n speletjie te verlaat, kan u FncKey+Btn1 gebruik, EscKey (oftewel: Btn0) vir 1-2 sekondes ingedruk of die krag skakel.

Stap 6: Game Play

Spel 1: Push-It

Dit is 'n verwerking van my 'Push-It'-spel uit een van my vorige instruksies

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

Die doel van die spel is om die knippertelling en die aantal aangesteekte LED's tot soveel as moontlik te verhoog. Push-It begin met 'n aantal flitse, wat dan herhaal word. As u na die laaste flits in die reeks op die knoppie druk en as daar moontlik 'n ekstra een is, sal die volgende LED brand en die flitstelling sal met een toeneem. Maar as u 'voor' of na die tydsduur van 'n toekomstige ekstra flits 'druk', word die aantal flitse in die stel verminder.

Elke keer as u dit regkry om die flitstelling te verhoog, word die moeilikheidsgraad verhoog namate die tydsberekening 'n bietjie versnel, wat dit moeiliker en moeiliker maak om 'n hoër flitstelling te bereik.

Die huidige telgetal word in die EEPROM -geheue gestoor om later weer op dieselfde vlak te begin.

Spel 2: Ping-Pong

Groot (al is dit die enigste) kompeterende spel met twee spelers hierin; waar die bal (enkele flits lig) vinniger en vinniger van die een kant na die ander gaan, telkens word dit teruggeslaan.

Ek het die eerste ry ligte-speletjie in die sewentigerjare op die voorste knoppies op 'n super-mini-rekenaar op die voorpaneel geïmplementeer.

Om die bal heen en weer te slaan, moet die toepaslike paddle dit druk (knoppie ingedruk) wanneer dit in die eindposisie is (laaste LED). Die eerste kant wat misloop, verloor, en die ligte aan die wenkant flits.

Daar is twee variasies, een wat slegs een knoppie (Btn 0 of 1) benodig, wat die bal aan weerskante sal tref; en 'n tweede weergawe is vir twee persone kop aan kop, wat twee knoppies benodig; knoppie 1 aan die linkerkant en knoppie 4 of 0 aan die ander kant. Die gebruik van knoppie 1 & 4 word verkies, aangesien dit nie met mekaar sal inmeng nie; elkeen kan getref word om die bal van die einde af terug te keer, ongeag die toestand van die ander knoppie.

Die wenner van 'n saamtrek is altyd die bediener vir die volgende.

Spel 3: Skietgalery

Skiet al die teikens (ligte) om 'n vlak te voltooi. In elke hoër vlak is die aksie vinniger.

Daar is twee weergawes; een waar die werf vasgemaak is en die teikens beweeg en 'n ander waar die werf beweeg en die teikens stilstaan. In elke geval slaan 'n treffer 'n teikenlig uit; en 'n gemis veroorsaak dat 'n teiken opduik. As 'n teiken in die gesig is, word die gesig helderder, anders is dit skemer.

In weergawe een begin die gesig links (onder) en regs. In weergawe 2 is die gesig in die middel vasgestel terwyl die teiken regs na links beweeg. Deur na die kode te kyk, is daar spookagtige weergawes 3 en 4 wat geaktiveer kan word, maar u stel u eie gesondheid op eie risiko.

Spel 4: JumpMan

Die idee is dat u deur 'n spelvlak hardloop waar voorwerpe kom waaroor u moet spring, namate u vorder, kom dit vinniger. In 'n ander spelweergawe is daar ook voorwerpe wat u onder die kop moet sak.

In weergawe een is daar slegs voorwerpe om oor te spring. Om te spring, moet u op die knoppie druk wanneer die voorwerp by die laaste sel aan die linkerkant kom; wat verhelder wanneer dit gebeur. Om 2 of meer opeenvolgende voorwerpe te spring, moet u op die eerste spring (druk) en die knoppie vir die res ingedruk hou.

In weergawe 2 word voorwerpe oor die kop (flikker) bygevoeg. Dit word gespring deur 'tydens die sel voor dit te spring en los terwyl dit in die eindsel is. Slegs een oorhoofse kan op 'n slag flits, so sodra een verby is, kan u 'n ander (wat nie voorheen flikker nie) op u sien. Daar sal nooit agtereenvolgende bokoste wees nie, maar dit kan langs een of meer spring (tipe rots) voorwerpe aangrensend wees.

In spelweergawe 3 moet u 'n aparte knoppie vir die oorhoofse voorwerpe gebruik (Btn- 2, 4 of 0 u keuse); spronge vereis dan Btn-1.

As u eers meer as vier voorwerpe (s) reggekry het as wat u misluk het, vorder u in vlak; daar is 'n klank -en visuele gelukwensing, dan 'n hervatting teen 'n hoër snelheid. Om by 'n stel opeenvolgende voorwerpe te kom, tel dieselfde as een individuele voorwerp.

Ek raai u aan om die werksreëls van die speletjies uit te druk en dit weer te lees voordat u 'n speletjie speel wat u nie onlangs gespeel het nie. Andersins kan u uself frustreer; as u dink dat die spel nie behoorlik werk nie, maar u en die spel het verskillende maniere en verwagtinge. Ek self het al meer as 'n paar keer hiervoor neergeval.

Stap 7: Opdaterings, meer speletjies

Image
Image

Ek het 'n 3D-gedrukte konsolehouer gemaak om die In-Line LED-leervertoning en knoppies te huisves.

Ek het meer speletjies bedink wat hierdie hardeware gebruik. Kyk na hulle en geniet dit:

Nuwe speletjies van 'Whack a Mole' tot 'toutrek'

Desember 2016. Nou, aan die einde van die bogenoemde skakel, is daar 'n verenigde weergawe van die kode, insluitend al 12 speletjies.

17 Februarie 2017: Hier is die nuutste speletjie vir hierdie projek, nou met 16 speletjies (skets hieronder). Dit sal uitgevoer word op enige MCU -implementering met 32KBytes aan flash -programgeheue. Alhoewel een tot 3 of 4 van die 16 wedstryde in 'n ATtiny geplaas kan word. Ek beveel aan om die Nano 3 arduinos te gebruik. Die nuutste vier wedstryde wat bygevoeg is, is 'Le Mans' wedrenne, 'Spray' kop -tot -kop spuitverf wedstryd., 'PIG' basketbal hoepel skiet, 'BiFunc' 'n vasvra spel vir binêre operasies.

Met 'n groter en meer uiteenlopende spel van hierdie speletjies, is verbetering van hul speelvermoëns moontlik, plesier vir alle spelers. Ek dink daar is baie ruimte vir verbetering in Le Mans -wedrenne via baanuitlegontwerp en speltyd.

Ek het nog tien aktiwiteite/speletjies/funksies opgestel, waarvan ek hoop om beskikbaar te stel in die herfs van 2017.

Hierdie eenreëlspeletjies kan ook aangepas word vir 'n 2 -reël 2x16 LCD -skerm, met een reël spelvoorwerpe en 'n ander vir teks. Ek het 'n bietjie hiervan gedoen, maar omdat ek so ver as wat ek kan ondersteun met projekte, weet ek nie wanneer en of ek 'n draai daaraan sou kry nie. As iemand dus gemotiveerd is om hierdie speletjies vir 'n 2x16 LCD aan te neem en te optimaliseer, deel dit dan met my en ander.

Behalwe die 4 nuwe speletjies hier in Menu_16Games.ino, het ek my projek ingesluit en verwante instruksies geskep: Inline LED -spelkonsole en die bestuur van u draagbare MCU -projek

Ek hoop dat baie die tyd neem en… GENIET hierdie speletjies.

Groepspel: 1– Rooi 2- Geel 3- Groen 4- Blou

1 rooi 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: Verbeterde werkvermoë met ou vuil raserige eksterne joystick-knoppies, in kop-kop spel (groep 2).

13 Desember 2017: Verbeterde hantering van knoppies en die afrekening van metings, klein probleme opgelos. Ek het probeer om 'n kondensator op die analoog -knoppie van die knoppie te gebruik, maar om effektief te wees, het dit gelei tot 'n stadige meting wat tot 'n valse vlak gelei het, of dat die sagteware so lank gewag het. dat die vinnige spelaksie in die gedrang gekom het.

Apr 2018: Ek het gevind dat kompressiekoppels van 5/8 'n uitstekende liggaam is vir knoppies van die plunjerstyl van buite. Omdat my kinders daarvan hou om 'n paar daarvan te gebruik, het ek kopstukke bygevoeg om twee daarvan maklik aan te sluit (soos Btn1 en Btn4).

Let daarop dat ek verlede Oktober 'n ander projek geskep het wat op die hardeware van hierdie instruksies gebou is. Dit is in die Halloween -gees en kan baie pret wees, veral vir die kinders. Instrueerbaar: spookagtig-psige-beïnvloed-toestelle

Aanbeveel: