Inhoudsopgave:

Spellen met 4 knoppen met één analoge ingang - Ajarnpa
Spellen met 4 knoppen met één analoge ingang - Ajarnpa

Video: Spellen met 4 knoppen met één analoge ingang - Ajarnpa

Video: Spellen met 4 knoppen met één analoge ingang - Ajarnpa
Video: БОЛИ В ПОЯСНИЦЕ И МЕТАБОЛИЧЕСКИЙ СИНДРОМ 3 день 2024, Juli-
Anonim
Image
Image

Deze instructable richt zich op het gebruik van één analoge ingangslijn voor meerdere knoppen die onafhankelijk van elkaar kunnen worden gedetecteerd.

En om het gebruik van deze knoppen te benadrukken, wordt software meegeleverd om vier verschillende spellen met 4 knoppen te spelen. Alle spellen (8 in totaal) hierin gebruiken een Led-ladderdisplay (zie eerder project: instructables: Single-Line-LED-Display-Games).

U kunt uw eigen 4-knops assemblage gebruiken met andere display-uitgangen, gebruik gewoon de 'scanButtons()'-functie van een van de meegeleverde schetsen. En gebruik die schetsen er bijvoorbeeld voor.

De spellen zijn een behendigheidsspel: Whack-a-Mole, een geheugenspel: Simon Says, logische spellen Sea Hunt en Flip'd een spel voor twee spelers vergelijkbaar met Reveri. Later, in deze instructable, zal ik later ook vier tweepersoonsgames van head-to-head-competitie introduceren.

Stap 1: Optimale knopconfiguratie bepalen

Gewoon enkele weerstanden in serie gebruiken met knoppen die ertussen worden afgetapt, zal werken als u zich nooit zorgen hoeft te maken dat de ene druk op de knop een andere afsluit. In een dergelijke configuratie blokkeert elke knop, wanneer erop wordt gedrukt, alles wat eronder ligt. Zelfs als je maar twee knoppen nodig hebt en je er maar één tegelijk nodig hebt, zoals bij een implementatie van pingpong; het zou een probleem zijn als een speler er niet in slaagt (gewoon te langzaam of kwaadwillig) om zijn vinger van zijn knop te halen voordat de ander de zijne moet raken.

Meerdere knoppen zijn vaak aangesloten op een enkele analoge lijn, elk met hun eigen verschillende weerstandswaarden die naar de ingang gaan. U kunt eenvoudig genoeg onderscheiden welke knop of welk paar wordt ingedrukt wanneer er slechts 2 of 3 knoppen zijn. Maar niet betrouwbaar met meer knoppen of meer dan twee ingedrukt, omdat de combinatie van metingen in het slechtste geval dubbelzinnig te dicht bij elkaar komen te staan.

Hier met wat ik een Double-Y-configuratie van vier knoppen en weerstanden noem, kun je op betrouwbare wijze een enkele, dubbele, zelfs drievoudige of alle vier de knoppen onderscheiden. Het softwarestuurprogramma om dit te doen wordt behandeld in de volgende sectie en de codelijst.

Met de wens om vier knoppen op één analoge ingang te hebben, waar het indrukken van elke knop kan worden gedetecteerd, ongeacht de status van de andere knoppen, heb ik verschillende configuraties in een spreadsheet gemodelleerd. Ik ontdekte dat een dubbele Y-configuratie (bestaande uit 2 sets van drie weerstanden) de beste mogelijkheden gaf. Zie het bedradingsschema hieronder. Ik evalueerde ze op basis van de grootste scheiding van de totale weerstand tussen twee willekeurige combinaties van ingedrukte knoppen. Ik heb verder berekende analoge waarden gemodelleerd. Raadpleeg het onderstaande spreadsheetbestand.

Om de beste waarden te bepalen om in de bovenstaande configuraties te gebruiken, heb ik een simulatie geschreven, die alle mogelijke permutaties van potentiële weerstandswaarden uitputtend heeft uitgeprobeerd, waarbij ik de set vond die het maximale minste verschil produceerde tussen mogelijke leesingangen. Ik heb de code opgegeven die ik heb gebruikt. Dit was een brute force-tool die ik bij elkaar gooide, kreeg wat ik wilde en legde het opzij, dus het was op geen enkele manier geoptimaliseerd. Het is volledig zoals het is, alleen voor historische referentie (Solve_4R.html hieronder).

Hier is de uitvoer voor beoordeling:

R1: 10 R2: 12 R3: 10 R4: 12 R5: 10 R6: 15 minR delta: 3.3658818125

R1: 10 R2: 12 R3: 10 R4: 12 R5: 10 R6: 18 minR delta: 4.9490620031 R1: 10 R2: 12 R3: 10 R4: 12 R5: 18 R6: 10 minR delta: 4.9490620031 R1: 10 R2: 12 R3: 10 R4: 15 R5: 10 R6: 33 minR delta: 5.0576510475 R1: 10 R2: 12 R3: 10 R4: 15 R5: 12 R6: 10 minR delta: 7.104826870 R1: 10 R2: 12 R3: 10 R4: 18 R5: 10 R6: 18 minR delta: 8.1673424912 R1: 10 R2: 12 R3: 10 R4: 18 R5: 15 R6: 22 minR delta: 8.6504939648 R1: 10 R2: 12 R3: 10 R4: 22 R5: 10 R6: 18 minR-delta: 10.1721492515 R1: 10 R2: 12 R3: 10 R4: 22 R5: 10 R6: 22 minR-delta: 10.5040000560 R1: 10 R2: 12 R3: 10 R4: 27 R5: 12 R6: 27 minR-delta: 10.7814361579 R1: 10 R2: 12 R3: 12 R4: 33 R5: 15 R6: 36 minR delta: 10.8827552754 R1: 10 R2: 12 R3: 12 R4: 68 R5: 10 R6: 22 minR delta: 11.4499029683 R1: 10 R2: 12 R3: 12 R4: 68 R5: 10 R6: 27 minR delta: 12.0961591599 R1: 10 R2: 12 R3: 15 R4: 68 R5: 10 R6: 27 minR delta: 12.7992171382 R1: 10 R2: 12 R3: 15 R4: 75 R5: 10 R6: 27 minR delta: 12.7992171382 R1: 10 R2: 12 R3: 15 R4: 82 R5: 10 R6: 27 minR delta: 1 2.7992171382 R1: 10 R2: 12 R3: 15 R4: 91 R5: 10 R6: 27 minR delta: 12.7992171382 R1: 10 R2: 12 R3: 27 R4: 82 R5: 10 R6: 15 minR delta: 12.7992171382 R1: 10 R2: 12 R3: 27 R4: 91 R5: 10 R6: 15 minR delta: 12.7992171382 R1: 10 R2: 12 R3: 27 R4: 100 R5: 10 R6: 15 minR delta: 12.7992171382 R1: 10 R2: 12 R3: 68 R4: 15 R5: 10 R6: 27 minR delta: 12.7992171382 R1: 10 R2: 12 R3: 75 R4: 15 R5: 10 R6: 27 minR delta: 12.7992171382 R1: 10 R2: 12 R3: 82 R4: 15 R5: 10 R6: 27 minR delta: 12.7992171382 R1: 10 R2: 12 R3: 82 R4: 27 R5: 10 R6: 15 minR delta: 12.7992171382 R1: 10 R2: 12 R3: 91 R4: 15 R5: 10 R6: 27 minR delta: 12.7992171382 R1: 10 R2: 12 R3: 91 R4: 27 R5: 10 R6: 15 minR delta: 12.7992171382 R1: 10 R2: 12 R3: 100 R4: 27 R5: 10 R6: 15 minR delta: 12.7992171382 R1: 10 R2: 15 R3: 10 R4: 18 R5: 18 R6: 12 minR delta: 13.2909379968 R1: 10 R2: 15 R3: 10 R4: 22 R5: 12 R6: 10 minR delta: 14.245362837 R1: 10 R2: 15 R3: 10 R4: 39 R5: 18 R6: 27 minR delta: 14.5126340326 R1: 10 R2: 15 R3: 10 R4: 56 R5: 12 R6: 15 minR delta: 15.220571553 R1: 10 R2: 15 R3: 12 R4: 27 R5: 12 R6: 12 minR delta: 18.8228671943 R1: 10 R2: 15 R3: 12 R4: 39 R5: 18 R6: 27 minR delta: 19.236186493 R1: 10 R2: 15 R3: 15 R4: 47 R5: 22 R6: 33 minR delta: 19.5685736556 R1: 10 R2: 15 R3: 22 R4: 56 R5: 22 R6: 27 minR delta: 19.7887024012 R1: 10 R2: 15 R3: 27 R4: 220 R5: 12 R6: 10 minR delta: 21.2533513149 R1: 10 R2: 15 R3: 220 R4: 27 R5: 12 R6: 10 minR delta: 21.2533513149 R1: 10 R2: 18 R3: 22 R4: 68 R5: 33 R6: 39 minR delta: 21.58566448 R1: 10 R2: 18 R3: 27 R4: 75 R5: 33 R6: 36 minR delta: 22.158443806 R1: 10 R2: 18 R3: 27 R4: 82 R5: 33 R6: 36 minR delta: 22.158443806 R1: 10 R2: 18 R3: 27 R4: 82 R5: 33 R6: 39 minR delta: 22.158443806 R1: 10 R2: 18 R3: 33 R4: 75 R5: 27 R6: 18 minR delta: 24.2578084248 R1: 10 R2: 18 R3: 75 R4: 33 R5: 27 R6: 18 minR delta: 24.2578084248 R1: 10 R2: 36 R3: 36 R4: 68 R5: 12 R6: 18 minR delta: 24.380952380 R1: 10 R2: 36 R3: 36 R4: 75 R5: 12 R6: 18 minR delta: 24.380952380 R1: 10 R2: 36 R3: 39 R4: 75 R5: 12 R6: 15 minR delta: 24.380952380 R1: 10 R2: 36 R3: 68 R4: 36 R5: 12 R6: 18 minR delta: 24.380952380 R1: 10 R2: 36 R3: 75 R4: 36 R5: 12 R6: 18 minR delta: 24.380952380 R1: 10 R2: 36 R3: 75 R4: 39 R5: 12 R6: 15 minR delta: 24.380952380 R1: 10 R2: 39 R3: 15 R4: 39 R5: 10 R6: 27 minR delta: 24.4674161824 R1: 10 R2: 39 R3: 22 R4: 47 R5: 10 R6: 22 minR delta: 24.4674161824 R1: 10 R2: 39 R3: 22 R4: 56 R5: 10 R6: 22 minR delta: 24.4674161824 R1: 10 R2: 39 R3: 27 R4: 56 R5: 10 R6: 15 minR delta: 24.4674161824 R1: 10 R2: 39 R3: 39 R4: 15 R5: 10 R6: 27 minR delta: 24.4674161824 R1: 10 R2: 39 R3: 47 R4: 22 R5: 10 R6: 22 minR delta: 24.4674161824 R1: 10 R2: 39 R3: 56 R4: 22 R5: 10 R6: 22 minR delta: 24.4674161824 R1: 10 R2: 39 R3: 56 R4: 27 R5: 10 R6: 15 minR delta: 24.4674161824 R1: 12 R2: 39 R3: 33 R4: 75 R5: 15 R6: 39 minR delta: 24.5467795136 R1: 12 R2: 39 R3: 33 R4: 82 R5: 18 R6: 47 minR delta: 24.789976640 R1: 12 R2: 39 R3: 47 R4: 100 R5: 18 R6: 33 minR delta: 24.789976640 R1: 12 R2: 39 R3: 56 R4: 100 R5: 15 R6: 12 minR delta: 25.3564579616 R1: 12 R2: 39 R3: 100 R4: 56 R5: 15 R6: 12 minR delta: 25.3564579616 R1: 12 R2: 47 R3: 18 R4: 47 R5: 10 R6: 27 minR delta: 27.4996466431 R1: 12 R2: 47 R3: 22 R4: 56 R5: 10 R6: 22 minR delta: 27.4996466431 R1: 12 R2: 47 R3: 27 R4: 56 R5: 10 R6: 18 minR delta: 27.4996466431 R1: 12 R2: 47 R3: 47 R4: 18 R5: 10 R6: 27 minR delta: 27.4996466431 R1: 12 R2: 47 R3: 56 R4: 22 R5: 10 R6: 22 minR delta: 27.4996466431 R1: 12 R2: 47 R3: 56 R4: 27 R5: 10 R6: 18 minR delta: 27.4996466431 R1: 15 R2: 56 R3: 22 R4: 56 R5: 10 R6: 27 minR delta: 29.1605253709 R1: 15 R2: 56 R3: 22 R4: 56 R5: 12 R6: 33 minR delta: 29.811354701 R1: 15 R2: 56 R3: 33 R4: 68 R5: 12 R6: 22 minR delta: 29.811354701 R1: 15 R2: 56 R3: 56 R4: 22 R5: 12 R6: 33 minR delta: 29.811354701 R1: 15 R2: 56 R3: 68 R4: 33 R5: 12 R6: 22 minR delta: 29.811354701 R1: 18 R2: 68 R3: 27 R4: 68 R5: 12 R6: 33 minR delta: 30.7487559507 R1: 18 R2: 68 R3: 33 R4: 68 R5: 12 R6: 27 minR delta: 30.8965517241 R1: 18 R2: 68 R3: 68 R4: 33 R5: 12 R6: 27 minR delta: 30.8965517241 R1: 18 R2: 75 R3: 27 R4: 68 R5: 12 R6: 36 minR delta: 30.9007058823 R1: 18 R2: 75 R3: 47 R4: 91 R5: 12 R6: 10 minR delta: 30.9007058823 R1: 18 R2: 75 R3: 68 R4: 27 R5: 12 R6: 36 minR delta: 30.9007058823 R1: 18 R2: 75 R3: 91 R4: 47 R5: 12 R6: 10 minR delta: 30.9007058823 R1: 22 R2: 82 R3: 36 R4: 82 R5: 15 R6: 39 minR delta: 33.2525545171 R1: 22 R2: 82 R3: 82 R4: 36 R5: 15 R6: 39 minR delta: 33.2525545171 R1: 36 R2: 82 R3: 22 R4: 82 R5: 39 R6: 15 minR delta: 33.2525545171 R1: 36 R2: 82 R3: 82 R4: 22 R5: 39 R6: 15 minR delta: 33.2525545171 R1: 82 R2: 22 R3: 36 R4: 82 R5: 15 R6: 39 minR delta: 33.2525545171 R1: 82 R2: 22 R3: 82 R4: 36 R5: 15 R6: 39 minR delta: 33.2525545171 R1: 82 R2: 36 R3: 22 R4: 82 R5: 39 R6: 15 minR delta: 33.2525545171 R1: 82 R2: 36 R3: 82 R4: 22 R5: 39 R6: 15 minR delta: 33.2525545171 R1: 36 R2: 82 R3: 82 R4: 22 R5: 39 R6: 15 min. R-delta: 33.2525545171

Stap 2: Mijn 4-knops montage

Mijn 4-knops montage
Mijn 4-knops montage

Voor mijn vier knoppen heb ik deze knoppen en een geperforeerde PCB en weerstanden gebruikt zoals aangegeven in het bovenstaande diagram. Hoe u uw vier knoppen fysiek implementeert, is wijd open en aan u en uw projectbehoeften. Zolang het elektrisch is wat in het bovenstaande diagram staat. Zorg ervoor dat uw constructie-montage zodanig is dat u geen contact maakt met de bedrading naar de knoppen, omdat dit de metingen vervormt, wat resulteert in foutief knopgedrag.

Ik heb een toegevoegde kleine knop op mijn bord die ik gebruik als een 'Functie'-toets. Het staat in serie met een weerstand van 2 megohm, die mijn andere ingangsmetingen niet significant verwerpt; hoewel ik het alleen kan detecteren als het alleen wordt ingedrukt. Je kunt het negeren of de code controleren om beter te begrijpen hoe ik het gebruik.

Testschets 'Test_12Leds_6Btns' kan worden gebruikt om de detectie van het indrukken van knoppen door uw MCU en de daadwerkelijke knopmontage te testen. De output is ingesteld om te worden bekeken met een LED-ladder of de seriële monitor. Het kan eenvoudig worden aangepast om te worden weergegeven via welk type display dan ook.

Mogelijk moet u de set referentiewaarden van de code aanpassen waarmee de invoer wordt vergeleken, vanwege mogelijke verschillen in de interne pull-up-weerstand van uw MCU of vanwege toleranties van de weerstanden die u gebruikt. U kunt, als u liever precisieweerstanden gebruikt, hopelijk geen kalibratie-aanpassingen maken. Trouwens, ik heb geen externe pull-up gebruikt, omdat dit zou interfereren met ander gebruik dat ik van plan ben voor een van mijn projecten.

Een van de belangrijkste softwareacties die is ondernomen om ervoor te zorgen dat de bepaling van welke knop(pen) worden ingedrukt niet wordt beïnvloed door het voedingsspanningsniveau (&/of MCU-afwijking), is het schalen van de analoge ingang op basis van de maximale waarde, die op zijn beurt wordt beïnvloed door de voedingsspanning.

De software 'driver' die deze knoppen bedient, is de routine 'scanButtons()'. Het wacht tot de analoge ingangswaarde tot rust is gekomen en brengt de uitlezing vervolgens in een reeks van de vooraf bepaalde waarden; en vertaalt dat naar de overeenkomstige toestanden voor de verzameling knoppen. Deze routine, en de openbare variabelen die hij deelt met de applicatiesoftware, is alles wat nodig is om deze set op dezelfde manier te gebruiken in onafhankelijke knoppen.

Opmerking! De huidige versie van 'scanButtons()' probeert niet alle mogelijke drie knopcombinaties op unieke wijze te identificeren, aangezien dat voor mij niet realistisch was en de vereiste nauwkeurigheid van de code en kalibratie verder zou compliceren.

Stap 3: Gameplay

Ofwel sketch, 'LadderGames4' of 'Head2head' kan worden geladen in en uitgevoerd door vrijwel elke Arduino MCU, maar LadderGames4 moet 'SimonSays' of een van de andere twee games hebben becommentarieerd om te passen in de 8K Bytes van programmaruimte in een Attiny-85. Audio is ook een probleem met een ATtiny-85, zie eerder genoemd project. De code is ingesteld met voorwaardelijke compilatie en het is bekend dat deze werkt met een Nano, Uno en een ATtiny-85.

Bij elk van deze schetsen krijg je na initialisatie het menu te zien, waarbij één kleur tegelijk alle rode… gele… groene… blauwe leds verlicht, overeenkomend met de vier mogelijke spelkeuzes. U drukt ofwel op Btn1 wanneer de gewenste optie brandt, of u drukt op elk moment op Btn2-4 voor games 2-4. De redundante manier om te selecteren is om compatibel te zijn met implementaties en games met zowel twee als vier knoppen. Als er meerdere versies van het spel zijn, moet je rood knipperend selecteren voor ver-1, geel knipperend voor ver-2, enzovoort.

Spellen met 4 knoppen

Een geheugenspel, een oog-handcoördinatiespel en twee strategiespellen.

Simon Says Dit is een herimplementatie van het spel van de vorm waarin ik het had, in deze eerdere projecten:

www.instructables.com/id/Fast-Easy-Simon/

www.instructables.com/id/Improved-Simon-Says-Code/

Het speelt zoals de meeste andere 'Simon Says'-games.

Hier heb ik echter de tweepersoonsversie toegevoegd (wanneer je optie 2 selecteert, geel knipperend), waarbij elke speler op zijn beurt een nieuwe lichtnoot aan de serie toevoegt. De eerste die niet alles correct herhaalt, verliest het spel.

Sla een mol

Gedurende 30 seconden verschijnen er verschillende moedervlekken (rood, geel, grn, blauw) 1, 2 of 3 tegelijk. Je moet ze 'meppen' door op de overeenkomstige knoppen Btn1-4 te drukken. Alleen het indrukken van één knop wordt geaccepteerd, niet gelijktijdig meerdere keren op een knop drukken. Hoe lang een set moedervlekken blijft staan, wordt korter naarmate het spel vordert. Als je alle mollen die zichtbaar zijn, mept, verschijnt er een nieuwe set; zodat je sneller bent, hoe meer mollen je kunt slaan.

Zodra een spel is afgelopen, geeft het display de score weer, waarbij één led wordt verlicht voor elke 10 mollen die zijn geslagen. Aangezien het spel 10 punten scoort voor elke molslag, zouden 5 verlichte leds een standaard Whac-a-Mole-puntenscore van 500+ vertegenwoordigen. Om nog een ronde te spelen, moet je het spel opnieuw selecteren.

Ik gebruik een vinger op elke knop voor snelle actie en hoge scores. Voor een meer juiste uitdaging zou men slechts één vinger van één hand moeten gebruiken, reagerend op het gebruik van één hamer.

Mijn typische score met één vinger is in de 500s, met 4 vingers (één per knop) is het 600+. Mijn hoogste score is 700+. Het gebruik van meerdere vingers is vooral lastig omdat als er een overlap is bij het indrukken van de ene en de andere, de tweede niet door de software wordt geaccepteerd, waardoor u alle knoppen moet loslaten voordat een andere wordt geaccepteerd. Als iemand alle 12 leds aan het licht krijgt, voor een score van 1200+, laat het ons dan weten.

Zeejacht

Er is een onzichtbare onderzeeër die door de diepten beweegt. De oorspronkelijke locatie en richting is willekeurig. Het maakt een beweging langs zijn koers na elke beurt die je neemt. Je moet zijn verblijfplaats voorspellen via sonarrapporten en het met een dieptebom laten zinken. Een sonar dat klinkt zwaait (in beide richtingen) vanaf zijn startlocatie als een zwak licht en wordt helderder (samen met een ping) op de afstand van de sub. Houd er echter rekening mee dat de sub beide kanten op kan en in een onbekende richting beweegt. Een dieptebom explodeert diep onder de plek waar hij wordt gelanceerd. Je hoort een gedempte explosie als er niets is, of is er, anders hoor je de grote explosie van de sub en een felle flits.

Om de cursor te verplaatsen naar de plaats waar u een sonarboei of diepteboost wilt laten vallen, doet u dit met Btn2 & Btn3 voor links & rechts. Button-1 wordt gebruikt om ze te starten.

In versie 1 is elke poging een combinatie van dieptebommen en sonarrapporten; en u kunt er een onbeperkt aantal gebruiken.

In versie 2, Head to head, om de beurt, om te zien wie de onderzeeër tot zinken brengt. Speler 1 gebruikt Btn1 en de tweede speler gebruikt Btn4 om hun dieptebommen te lanceren.

In versie 3 worden dieptebommen en sonarrapporten onafhankelijk gelanceerd door respectievelijk Btn1 en Btn4. Je hebt maar drie dieptebommen tot je beschikking. U kunt alle sonarrapporten krijgen die u wilt. Je verliest als je hem niet krijgt met die aanklachten.

In versie 4 zou de onderzeeër kunnen bewegen met een snelheid van 1-3 spaties per volley, en anders speelt hij als versie 3, maar je krijgt wel 6 dieptebommen.

Geschiedenis: Ik heb het spel 'Zeejacht' voor het eerst gemaakt in de jaren '70. Toen was het invoer- en uitvoerapparaat een teletype. Toen was de zee echter een 2-dimensionaal raster, in tegenstelling tot 1-dimensionaal zoals hier.

OPMERKING: ik heb de beperking van de dieptelading in de code besproken, met het idee dat het voor de meeste mensen al moeilijk genoeg was om te spelen.

Flip'd

Dit spel voor twee spelers lijkt een beetje op Reveri, in die zin dat je alle cellen in jouw kleur probeert te veranderen, maar dit wordt op een andere manier bereikt.

In dit spel voor twee spelers is het de bedoeling van de ene speler om alle lichten uit te doen en de andere om ze allemaal aan te doen. Een speler gebruikt Btn1 om ofwel een groep lichten van de andere speler uit te schakelen of een enkele van zijn "Uitlichten" op te geven (aan te zetten). De andere speler gebruikt Btn4 om ofwel een groep "Uit-lichten" aan te zetten of een enkele van zijn rug uit te schakelen.

Het bord begint met een willekeurige set leds aan. Als de eerste speler aan de beurt is, wordt de led bij de 'cursor', een interessante plaats, snel gedimd of verlicht. Tijdens de beurt van speler #2 is er een lange flits van een led als cursorindicator. Als de verkeerde speler zijn knop indrukt, voor zijn beurt, is er een zeer korte pieptoon. De cursor wordt naar links verplaatst door Btn2 en naar rechts door Btn3. De verliezende speler begint het volgende spel.

De strategie om te bepalen wat er moet worden omgedraaid, kan aanzienlijk zijn.

Stap 4: Head to Head-wedstrijden

Spellen met twee knoppen / twee spelers

In de eerste set van 4 knopspellen vertrouwt alleen 'Whack-a-Mole' echt op volledige onafhankelijkheid van de knopverwerking. Ik heb ook vier onderlinge games geïmplementeerd, die allemaal afhankelijk zijn van onafhankelijke knopdetectie. Deze spellen zijn: Quick Draw, Tug a War, Chicken en Hot Hands (Slapsies).

Quick Draw (Reactietest)

De wedstrijd wordt gestart met een 'Klaar'/rood, 'Set'/geel en een 'Draw!'/groen; vrij willekeurig zijn over wanneer het je het groene licht geeft. De eerste die op hun knop drukt, wint. Als je te snel slaat, word je onteerd met een buzz.

Speler 1 gebruikt Btn1 (links) en speler 2 gebruikt Btn4 (rechts).

Touwtrekken

Begint met een 'Ready', 'Set' … 'GO!'. Er verschijnt een object in het midden, een 'strik' aan een touw. Vervolgens drukken de spelers zo snel en vaak als ze kunnen op hun knoppen. De boog beweegt naar de speler met de meeste slagen. Zodra de boog het ene uiteinde bereikt, is dat de winnaar.

Kip

Deze wedstrijd wordt op dezelfde manier gestart. Na het geluid en de groene flits van 'Go!' de spelers houden hun knoppen ingedrukt, lichtflitsen (hun strijdwagens) beginnen van hen naar de andere te bewegen. De winnaar is degene die zijn knop als laatste loslaat (springt uit hun strijdwagen), net voordat de twee blips tegen elkaar zouden botsen. Als iemand te laat of helemaal niet loslaat, crasht hij en verliest hij. Als beide te laat springen (loslaten) wint niemand.

In het begin zwaaien een paar tegengestelde leds over het scherm, op dit moment als je op Fnc-Btn2 drukt, wordt de spelsnelheid verhoogd. Dit kan een paar keer herhaald worden.

Hete handen

Een digitale versie van het handslapspel (ook bekend als Red-Hands of Slapsies). Om te beginnen, drukken de twee spelers hun knoppen samen in, de ene kant laat los en probeert vervolgens twee keer op zijn knop te drukken voordat de andere kant zijn knop kan loslaten. Vervolgens probeert de andere kant hetzelfde te doen. De speler die aan de beurt is, wordt aan het begin van een ronde aangegeven door het oplichten van de leds aan zijn zijde. Ik vond dat een druk op de knop met slechts één knop te snel en gemakkelijk was, dus ik maakte er twee nodig, wat meer actie en tijd kost, zoals zowel je hand over en boven de anderen moeten draaien als dan neerklappen. TBD: In een tweede versie is het gratis voor iedereen, op elk moment kan elke speler proberen het beste van de ander te krijgen.

Kennisgeving ! Ik raad je aan de spelregels van bovenstaande spellen uit te printen en opnieuw te lezen voordat je een spel speelt dat je niet recentelijk hebt gespeeld. Anders kun je jezelf frustreren; denken dat de game niet goed werkt, terwijl dat wel zo is, maar jij en de game hebben verschillende manieren en verwachtingen. Ik ben er zelf meer dan een paar keer aan ten prooi gevallen.

Met de acht spellen hier en de vier in mijn eerdere project Single-Line-LED-Display-Games, maakt dat software beschikbaar om 12 spellen te spelen met deze hardwarecombinatie met vier knoppen + led-ladder.

Ik heb voor het einde van het jaar nog minstens vier recreatieactiviteiten voor deze (knop-display) hardware.

Stap 5: Optionele 2-spelercontrollers

Optionele controllers voor 2 spelers
Optionele controllers voor 2 spelers
Optionele controllers voor 2 spelers
Optionele controllers voor 2 spelers
Optionele controllers voor 2 spelers
Optionele controllers voor 2 spelers
Optionele controllers voor 2 spelers
Optionele controllers voor 2 spelers

Voor de spellen die slechts twee knoppen nodig hadden, had ik natuurlijk de 4-knops PCB bij die spellen kunnen gebruiken; bij het spelen van deze spellen wordt men echter behoorlijk fysiek. Dus gebruik ik afzonderlijke knopassemblages van het plunjertype, gemaakt van een stuk plastic buis bedekt met een fietshandgreep en een grote knop.

Plunjer type knop onderdelen:

  • 1/2" druppelleiding, sprinklerafstand of PVC (hardwarewinkel)
  • Fietshandvat (Walmart)
  • Grote drukknoppen (eBay)
  • 2 weerstanden

Om de compatibiliteit te behouden heeft de ene knop een 75 ohm weerstand in serie en de andere een 36-39 ohm in serie; zodat de software ze respectievelijk als Btn1 en Btn4 zal zien.

U kunt slangen gebruiken van bijvoorbeeld een afgedankte bezem of wisserhandgreep.

Er zou zelfs een adapter gemaakt kunnen worden waarop je oude joysticks voor gameconsoles zou kunnen aansluiten; laat je vuurknoppen bedraad zijn als Btn1 en Btn4 voor de andere, terwijl je Btn1-4 deelt door naar de navigatieknoppen van de joysticks te gaan.

April 2018: Gebruik nu liever 5/8 compressiekoppelingen als de behuizing voor externe plunjerachtige knoppen. De grote knoppen (met een beetje tape over hun toegevoegde schroefdraad) passen er perfect in en ze passen heel goed in de hand. Zoals mijn kinderen vinden het leuk om een paar hiervan te gebruiken, ik heb een paar sets header-pinnen toegevoegd om gemakkelijk een externe draagbare knop over de Bnt1-contacten en een voor Btn4 te kunnen aansluiten.

Stap 6: Update(s)

update(s)
update(s)

Ik heb een 3D-geprinte consolebehuizing gemaakt om het In-Line LED-ladderdisplay en de knoppen te huisvesten.

Ik heb de 12 games die ik tot nu toe heb gemaakt, voor dit 12 LED-display, gecombineerd tot één schets 'Menu_12Games'. Voor deze software is de hardware van dit project vereist, geïmplementeerd met een 32 KB flash-MCU (bijv. Nano of Uno) en 5 knoppen, 4 main + een FncKey.

Het selectiemenu is nu tweeledig; eerst selecteer je 1 van de 4 groepen games en vervolgens game 1-4 binnen die groep, … zoals hieronder vermeld. In afwachting van de geselecteerde schermen scant u periodiek R-Y-G-B, u drukt op elk moment op Btn1-4 als uw selectie, het maakt niet uit wat er wordt weergegeven wanneer u op uw selectie drukt. Tijdens de 'groep' selectie zijn alle Leds in ieder geval gedeeltelijk verlicht tijdens de RYGB scan. Druk op FncKey-Btn1 om een spel af te sluiten of terug te gaan van 'spel' naar 'groep' selectie.

Ik moet de laatste 4 nog coderen. Ik heb er 3 opgeschreven (inclusief 'LeMans'). Ik heb niet bedacht wat de laatste game zou zijn. Stuur me een bericht met ideeën.

Update 25 januari 17: Voor degenen onder u die graag toegang hebben tot een 3D-printer, bent u misschien geïnteresseerd in de gameconsole-hoes die ik voor mijn apparaat heb gemaakt: https://www.instructables.com/id/3D-Printed-Case- voor-Inline-LED-Display-Console-en/

Update 17 februari 17: Ik heb de laatste 4 games toegevoegd, die nu beschikbaar zijn als "Menu_16Games.ino" onder "Stap 7: Update, meer games" van de Instructable: Single-Line-LED-Display-Games (Menu_12Games.ino is nu ter ziele)

Groepsspel: 1– Rood 2- Geel 3 – Groen 4 – Blauw

1 rode 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

Aanbevolen: