Inhoudsopgave:

Bare Arduino testen, met spelsoftware met behulp van capacitieve invoer en LED - Ajarnpa
Bare Arduino testen, met spelsoftware met behulp van capacitieve invoer en LED - Ajarnpa

Video: Bare Arduino testen, met spelsoftware met behulp van capacitieve invoer en LED - Ajarnpa

Video: Bare Arduino testen, met spelsoftware met behulp van capacitieve invoer en LED - Ajarnpa
Video: Массимо Банци: Как Arduino пробуждает воображение 2024, Juli-
Anonim
Test kale Arduino, met spelsoftware met capacitieve invoer en LED
Test kale Arduino, met spelsoftware met capacitieve invoer en LED
Test kale Arduino, met spelsoftware met capacitieve invoer en LED
Test kale Arduino, met spelsoftware met capacitieve invoer en LED

"Push-It" Interactief spel met een kale Arduino-kaart, geen externe onderdelen of bedrading nodig (maakt gebruik van een capacitieve 'touch'-ingang). Hierboven weergegeven, laat zien dat het op twee verschillende borden draait.

Push-It heeft twee doelen.

  1. Om snel te demonstreren/verifiëren dat uw Arduino-bord werkt en dat u correct bent ingesteld om er een nieuwe codeschets naar te downloaden. U zult kunnen zien dat het invoer en uitvoer uitvoert (detectie digitaal invoerniveau, uitvoer naar de ingebouwde LED); bewaar en herstel een waarde uit het niet-vluchtige EEPROM-geheugen. Allemaal zonder kabels of apparaten aan te sluiten.
  2. Zorg voor een vermakelijk en uitdagend spel in interactie met een Arduino-bord.

Deze instructable gaat ervan uit dat je al een Arduino IDE hebt geïnstalleerd en op zijn minst minimaal bekend bent met het gebruik ervan. Zo niet, dan verwijs ik je naar deze links:

Aan de slag met Arduino

Ondersteuning voor Digispark (met bootloader) toevoegen aan bestaande Arduino 1.6.x IDE

Push-It werkt met vrijwel elk Arduino-bord, b.v. een Nano-, Uno- of DigiSpark Attiny85-bord. Ik heb het getest met een Nano 3.1 en een DigiSpark. Als ik in de tekst verwijs naar de namen/nummers van de pinnen, zullen deze worden gebruikt op het Nano-bord (in tegenstelling tot het DigiSpark).

Stap 1: De dingen hebben die je nodig hebt

Dat is gewoon een Arduino of vergelijkbaar bord.

Als je er nog geen hebt, raad ik aan om aan de slag te gaan met een DigiSpark Pro (~ $ 12), of een Nano 3.0 van eBay voor ~ $ 3 (maar je hebt een extra week of twee om te wachten tot het uit China komt; en u moet een CH340 USB-stuurprogramma installeren). De DigiSpark ~$10 (niet Pro) is zeer geschikt voor dit single-bit 'video'-spel (deze uitgeklede eenheid, met slechts 6 I/O's, is een beetje lastiger om naar te uploaden)

Links naar de hardware die hierin wordt gebruikt:

Nano V3.0 Atmega328P op eBay

Digispark USB-ontwikkelbord

Stap 2: Haal en download de code

De code ophalen en downloaden
De code ophalen en downloaden

Kopieer de onderstaande code naar een Arduino-schetsbestand (bijv. …/Push_It/Push_It.ino) Ik heb geprobeerd er redelijk goed commentaar op te geven. Ik hoop dat je de code gemakkelijk te begrijpen vindt. De logica om te bepalen wanneer te verhogen, te verlagen en wanneer niet is enigszins ingewikkeld, maar dat gedeelte is ook gespecialiseerde code en is niet van algemeen nut. Voor meer details over het opzetten van een nieuwe 'schets' (codeproject) om te gebruiken met de Arduino IDE zie:

Een nieuwe Arduino-schets maken

Download de 'Push_It'-schets in onze microcontoller volgens de Arduino IDE-instructies voor uw bord.

Stap 3: Spelen

Spelen
Spelen

Het doel van het spel is om de LED (aan boord) zo vaak mogelijk te laten knipperen in een reeks flitsen die vervolgens worden herhaald

Het spel aan het spelen:

Push-It begint met een enkele flits, die zich vervolgens herhaalt. Als u uw vinger in de buurt van de invoerpin aanraakt terwijl de LED brandt, zal de volgende cyclus de LED twee keer knipperen.

Elke keer dat u de pseudo-knop indrukt tijdens de eerste flits van een set flitsen, wordt er een andere flits aan die set toegevoegd. Het maakt over het algemeen niet uit wanneer u uw vinger optilt/verwijdert.

Maar als u voor of na de eerste flits 'drukt', wordt het aantal flitsen in een set verminderd.

Doe je niets meer, dan blijft het aantal flitsen in een set behouden. Verder wordt, wanneer de telling onveranderd blijft gedurende een volledige cyclus, het tellingsgetal opgeslagen in het EEPROM-geheugen.

Elke keer dat je erin slaagt om het aantal flitsen te verhogen, versnelt de timing een beetje, waardoor het steeds moeilijker wordt om een hoog aantal flitsen te bereiken. Als u een fout maakt en het aantal flitsen wordt verminderd, zal er een langere pauze zijn voordat de flits van de volgende cyclus begint. Dit zorgt voor een extra uitdaging, omdat het de kans vergroot dat je het pistool springt. Blijf dus alert.

Als je je apparaat eenmaal op een hoog aantal flitsen hebt gebracht, kun je het naar een vriend brengen (of het op de post doen, waar de DigiSpark goed voor is) waar ze zullen zien hoe hoog het aantal flitsen is dat je hebt bereikt. tot. Ik vond het nogal een uitdaging om het tot meer dan 8 te krijgen. Met een echte knop eraan is het me gelukt om het tot meer dan een dozijn te krijgen. Om terug te keren naar een lagere telling, kunt u er op elk moment voor of na de eerste flits herhaaldelijk op drukken. Ook als u de ingangspin naar aarde springt tijdens het opstarten, wordt de telling teruggezet naar 1.

Merk op dat het originele DigiSpark-bord een vertraging heeft van 10 seconden na het inschakelen, waarna het de 'Push-It'-code begint uit te voeren en het spel te spelen. Het gebruikt deze tijd om te proberen via de USB-pinnen te praten om een mogelijke nieuwe downloadcode-update te ontvangen.

Als het Arduino-bord dat u gebruikt een USB TX-LED heeft, zal deze LED snel kort knipperen wanneer u effectief op de knop hebt gedrukt. Er zal meer significant knipperen van deze LED zijn wanneer de telwaarde in de EEPROM wordt bijgewerkt met een nieuwe waarde. Deze feedback kan je enorm helpen om te weten wanneer of te verzekeren dat je effectief een 'druk op een knop'-gebeurtenis hebt geactiveerd. Mogelijk moet u ervoor zorgen dat u de circuitaarde niet aanraakt (zoals het metaal rond een micro-USB-connector), zodat uw figuur inderdaad ruis veroorzaakt op de open invoerpin. Er zullen extra en enigszins onvoorspelbare uitdagingen zijn vanwege het feit dat de ingangspin zweeft (niet omhoog of omlaag getrokken door een geleidende / resistieve belasting) en de variabele signaalruis die door je vinger komt.

Een blokgolf van 250 Hz wordt uitgevoerd naar een pin naast de ingangspin, wat de zekerheid van een geïnjecteerd ingangssignaal aanzienlijk verbetert wanneer uw vinger beide pinnen bedekt.

Ik heb gemerkt dat de reactie van het DigiSpark-bord redelijk consistent voorspelbaar is voor een klein knijpen van de vingers in de hoek van het bord waar D3-D5 is.

Als ik 'Push-It' speel, doe ik dat graag met het bord aangesloten op een USB 5v mobiel batterijpakket (zie foto's). Deze zijn over het algemeen goedkoop te vinden in bakken naast die van USB AC en 12v auto-adapters; in de meeste elektronica-afdelingen van warenhuizen.

Stap 4: Optionele experimenten met externe componenten

Optionele experimenten met externe componenten
Optionele experimenten met externe componenten

Let op: als je een echte knop toevoegt, is er één regel code die moet worden uitgelicht, zoals vermeld in de code.

Met een luidspreker, één kant naar aarde, als je de andere draad naar D4 aanraakt, hoor je het geluid van een 250 Hz blokgolf. Bij D3 is er een blokgolf van 500 Hz. Als je de speaker aansluit tussen D3 en D4 hoor je een samenstelling van de twee signalen.

Het aansluiten van een LED in plaats van een luidspreker zoals hierboven is erg interessant. U hoeft zich geen zorgen te maken over spanning, stroomniveaus, weerstanden of zelfs polariteit (in het ergste geval licht het niet op, draai het dan gewoon om). Probeer allereerst met de negatieve (kathode) draad verbonden met aarde en de andere met D3 of D4. Door de blokgolven zal de LED 'half' branden. Verder is er geen weerstand nodig omdat de output van de MicroControllerUnits stroombegrensd is. Ik heb stroommetingen gedaan die resulteerden in 15ma en 20ma voor respectievelijk de Attiny85 en de Atmega328 MCU's. Deze niveaus zijn ongeveer de helft van de huidige beperkte waarde voor deze onderdelen vanwege de 50% duty cycle aard van de aansturende blokgolfsignalen. De uitlezingen van de meter zijn eigenlijk een gemiddelde van de stroom door het geteste circuit.

Interessant is dat als je een brug maakt tussen D3 en D4 met de LED (zie afbeelding hierboven en links), deze in beide richtingen zal oplichten, en met ongeveer ½ van de helderheid zoals het deed met één kant verbonden met aarde. Ik nodig je uit om na te denken waarom.

Aanbevolen: