INHOUDSOPGAWE:

Toets Bare Arduino, met speletjiesagteware met behulp van kapasitiewe invoer en LED: 4 stappe
Toets Bare Arduino, met speletjiesagteware met behulp van kapasitiewe invoer en LED: 4 stappe

Video: Toets Bare Arduino, met speletjiesagteware met behulp van kapasitiewe invoer en LED: 4 stappe

Video: Toets Bare Arduino, met speletjiesagteware met behulp van kapasitiewe invoer en LED: 4 stappe
Video: Introduction to M5Stack Core2 ESP32 2" Display Development Module -Robojax 2024, Julie
Anonim
Toets Bare Arduino, met speletjiesagteware met behulp van kapasitiewe invoer en LED
Toets Bare Arduino, met speletjiesagteware met behulp van kapasitiewe invoer en LED
Toets Bare Arduino, met speletjiesagteware met behulp van kapasitiewe invoer en LED
Toets Bare Arduino, met speletjiesagteware met behulp van kapasitiewe invoer en LED

'Push-It' interaktiewe spel met 'n kaal Arduino-bord, geen eksterne dele of bedrading nodig nie (gebruik 'n kapasitiewe 'touch' -invoer). Hierbo getoon hoe dit op twee verskillende borde werk.

Push-It het twee doeleindes.

  1. Om vinnig te demonstreer/te verifieer dat u Arduino -bord werk en dat u behoorlik ingestel is om 'n nuwe kodeskets daaraan af te laai. U kan sien dat dit invoer en uitvoer lewer (voel digitale invoervlak, uitvoer na die ingeboude LED); stoor en herstel 'n waarde uit die nie-vlugtige EEPROM-geheue. Alles sonder om drade of toestelle aan te sluit.
  2. Bied 'n vermaaklike en uitdagende spel wat interaksie het met 'n Arduino -bord.

Hierdie instruksies veronderstel dat u reeds 'n Arduino IDE geïnstalleer het en ten minste minimaal vertroud is met die gebruik daarvan. Indien nie, verwys ek u na hierdie skakels:

Aan die gang met Arduino

Voeg Digispark -ondersteuning (met bootloader) by tot die bestaande Arduino 1.6.x IDE

Push-It sal werk met die meeste Arduino-borde, bv. 'n Nano-, Uno- of DigiSpark Attiny85 -bord. Ek het dit getoets met 'n Nano 3.1 en 'n DigiSpark. In die teks as ek na penne se name/nommers verwys, sal dit soos op die Nano -bord gebruik word (in teenstelling met die DigiSpark).

Stap 1: Die dinge wat u benodig

Dit is eenvoudig enige Arduino of vergelykbare bord.

As u nog nie een het nie, beveel ek aan om aan die gang te kom met 'n DigiSpark Pro (~ $ 12), of 'n Nano 3.0 van eBay vir ~ $ 3 (maar u sal nog 'n week of twee moet wag totdat dit uit China kom); en u moet 'n CH340 USB -bestuurder installeer). Die DigiSpark ~ $ 10 (nie -Pro) is baie goed geskik vir hierdie 'bietjie' video -speletjie (hierdie gestroopte eenheid, met slegs 6 I/Os, is 'n bietjie moeiliker om na op te laai)

Skakels na die hardeware wat hierin gebruik word:

Nano V3.0 Atmega328P op eBay

Digispark USB -ontwikkelingsraad

Stap 2: Haal die kode af en laai dit af

Haal en laai die kode af
Haal en laai die kode af

Kopieer die onderstaande kode in 'n arduino -sketslêer (byvoorbeeld …/Push_It/Push_It.ino) Ek het probeer om dit redelik goed te lewer. Ek hoop dat u die kode maklik verstaanbaar vind. Die logika om te bepaal wanneer om te vermeerder, te verminder en wanneer nie, is ietwat ingewikkeld, maar die gedeelte is ook gespesialiseerde kode en is nie van algemene nut nie. Vir meer inligting oor die opstel van 'n nuwe 'skets' (kodeprojek) om saam met die Arduino IDE sien:

Skep 'n nuwe Arduino -skets

Laai die 'Push_It' -skets in ons mikrokontroller volgens die Arduino IDE instruksies vir u bord.

Stap 3: Speel

Speel
Speel

Die doel van die spel is om die LED (aan boord) soveel keer as moontlik te laat flikker in 'n stel flitse wat dan herhaal

Speel die spel:

Push-It begin met 'n enkele flits, wat dan herhaal word. As u u vinger naby die invoerpen raak terwyl die LED aan is, sal die volgende siklus die LED twee keer flikker.

Elke keer as u op die pseudoknoppie druk tydens die eerste flits van 'n stel flitse, word nog 'n flits bygevoeg. Dit maak in die algemeen nie saak wanneer u u vinger lig/verwyder nie.

Maar as u voor of na die eerste flits 'druk', word die aantal flitse in 'n stel verminder.

As u niks meer doen nie, word die aantal flitse in 'n stel gehandhaaf. As die telling vir 'n volle siklus onveranderd bly, word die getalnommer in die EEPROM -geheue gestoor.

Elke keer as u dit regkry om die flitstelling te verhoog, versnel die tydsberekening 'n bietjie, wat dit moeiliker en moeiliker maak om 'n hoë flits te bereik. As u 'n glip maak en die aantal flitse verminder, sal daar 'n langer pouse wees voordat die volgende flits begin. Dit bied 'n ekstra uitdaging, want dit kan die waarskynlikheid verhoog dat u met die geweer spring. Wees dus waaksaam.

Sodra u toestel 'n hoë flitstelling bereik het, kan u dit (of stuur dit, waarvoor die DigiSpark goed is) stuur na 'n vriend, waarna u kan sien hoe hoog u flitsaantall is. aan. Ek vind dit 'n uitdaging om dit tot meer as 8 te kry. Met 'n werklike knoppie daarby het ek dit reggekry tot meer as 'n dosyn. Om terug te keer na 'n laer telling, kan u dit telkens voor of na die eerste flits herhaaldelik druk. As u ook die invoerpen na die grond spring tydens 'n opstart, word die telling teruggestel op 1.

Let daarop dat die oorspronklike DigiSpark-bord 'n vertraging van 10 sekondes het nadat dit aangeskakel is, waarna dit die 'Push-It'-kode sal begin uitvoer en die spel kan speel. Dit gebruik hierdie tyd om deur die USB -penne te probeer praat om 'n moontlike nuwe aflaai -kode -opdatering te ontvang.

As die Arduino -bord wat u gebruik, 'n USB TX -LED bevat, het hierdie LED 'n vinnige flits as u effektief op die knoppie gedruk het. Hierdie LED sal meer betekenisvol flikker as die telwaarde in die EEPROM ooit met 'n nuwe waarde opgedateer word. Hierdie terugvoer kan u baie help om te weet wanneer of om te verseker dat u 'n 'knoppie' -gebeurtenis effektief veroorsaak het. Miskien moet u seker maak dat u nie die stroombaan raak nie (soos die metaal rondom 'n mikro-USB-aansluiting), sodat u figuur inderdaad geraas veroorsaak op die oop invoerpen. Daar sal bykomende en ietwat onvoorspelbare uitdagings wees as gevolg van die feit dat die invoerpen dryf (nie op en af getrek word deur 'n geleidende/weerstandige las nie) en die veranderlike seingeluid wat deur u vinger kom.

'N Vierkante golf van 250Hz word na 'n pen langs die invoerpen geplaas, wat die sekerheid van 'n ingevoerde ingangsein aansienlik verbeter wanneer u vinger albei penne bedek.

Ek het gevind dat die reaksie van die DigiSpark-bord redelik konsekwent voorspelbaar is deur 'n klein druk van die vingers na die hoek van die bord waar D3-D5 is.

As ek 'Push-It' speel, doen ek dit graag met die bord gekoppel aan 'n USB 5v mobiele battery pack (sien foto's). Dit kan oor die algemeen goedkoop gevind word in asblikke langs die van USB AC en 12v motoradapters; in die meeste elektroniese afdelings in winkels.

Stap 4: Opsionele eksperimente met eksterne komponente

Opsionele eksperimente met eksterne komponente
Opsionele eksperimente met eksterne komponente

Let wel: as u 'n regte knoppie aanheg, is daar 'n reël kode wat u moet kommentaar lewer, soos in die kode vermeld.

Met 'n luidspreker aan die een kant na die grond, as u die ander aansluiting na D4 raak, hoor u die geluid van 'n 250 Hz vierkante golf. By D3 is daar 'n 500Hz -vierkantgolf. As u die luidspreker tussen D3 en D4 verbind, hoor u 'n samestelling van die twee seine.

Dit is baie interessant om 'n LED in plaas van 'n luidspreker aan te sluit. U hoef nie bekommerd te wees oor spanning, stroomvlakke, weerstande of selfs polariteit nie (in die ergste geval word dit nie lig nie, draai dit dan net om). Probeer eerstens met die negatiewe (katode) leiding aan die aarde gekoppel en die ander aan D3 of D4. Die LED sal 'half' brand as gevolg van die vierkantige golwe. Verder is geen weerstand nodig nie, aangesien die uitset van die MicroControllerUnits tans beperk is. Ek het huidige metings gemaak wat lei tot 15ma en 20ma vir onderskeidelik die Attiny85 en die Atmega328 MCU's. Hierdie vlakke is ongeveer die helfte van die huidige beperkte waarde vir hierdie dele as gevolg van die 50% -siklus -aard van die drywende vierkantgolfseine. Die meter se lesings is eintlik 'n gemiddelde van die stroom deur die getoetste stroombaan.

Interessant genoeg, as u met die LED tussen D3 en D4 oorbrug (sien prent hierbo en na links), dan brand dit in beide rigtings, en ongeveer ½ helderheid soos met die een kant wat aan die grond gekoppel is. Ek nooi u uit om na te dink hoekom.

Aanbeveel: