Close

Změřte si rychlost své reakce

Tester reakčního času

Tento měřič reakční doby je můj první projekt v prostředí Arduino. Mělo to být jen naučné konstrukční cvičení, ale nakonec se z toho stala celkem zábavná hračka.

Nejprve stisknete červené tlačítko. Když se rozsvítí zelené světélko, uvolníte co nejrychleji červené tlačítko, a tester vám zobrazí dobu, kterou vám reakce trvala, v milisekundách. Jednotlivé pokusy se zaznamenávají do EEPROM paměi a na konci hry se vypočítá průměr z deseti nejlepších pokusů. Vaším cílem je samozřejmě zmenšit toto číslo na minimum. Pokud se vám povede snížit čas, LEDky vám na oslavu zablikají.

Tester reakčního času

Prototyp – Tester reakčního času

Hardware je pro tento projekt velmi prostý (Protože jsem softwarový technik, hardwarová jednoduchost byla jednou z podmínek) :)) Máme tu tři LEDky a jednoduché tlačítko. Takové, jaké najdete například u herních automatů. Žlutá LEDka („připrav se!“) začne rychle blikat, signalizuje, aby se hráč připravil. O několik vteřin později (náhodný počet vteřin od 2 do 5), se rozsvítí zelená LEDka („Teď!“) a hráč musí uvolnit tlačítko. Pokud hráč uvolní tlačítko příliš brzy, rozsvítí se červená LEDka, na displeji se zobrazí  „CHEAT“ („podvod“), a hra skončí.

Použitý displej je velmi levný ($ 4 – cca 88 Kč) sedmimístný displej HC4LED. Také byste mohli použít LCD displej, ale protože (většinou) potřebujeme jen 3 nebo 4 ciferná čísla, tenhle nám postačí. Pro displej jsem napsal i knihovnu, se kterou si kdokoli může pohrát.

Displej HC4LED

Displej HC4LED

Použil jsem mikrokontrolér Boarduino od Adafruit. Vybral jsem ho proto, že je levnější a menší než oficiální Arduina. Hotový projekt se vejde do krabičky o délce strany 10 cm.

položka dodavatel
4x4x3″ box Michael’s
Happ herní tlačítko GroovyGameGear.com
DC Boarduino Adafruit
2.1mm 9V konektor napájení – samec Adafruit
2.1mm konektor napájení – samice Radio Shack
LEDky (5 mm) Různé
držáky na LEDky Jameco
rezistory 220 Ohm Různé
rezistor 10K Ohm Různé
HC4LED displej modul Hitt Consulting

Zapojení

  1. S použitím rezistorů (220 Ohm) omezujících proud zapojte tři LEDky z pinů na Arduinu k zemi následujícím způsobem:
    • Pin 10 -> Zelená/Teď
    • Pin 11 -> Žlutá/Připrav se
    • Pin 12 -> Červená/Špatně
  2. Spínač zapojte k pinu číslo 8. Použijte pull-up rezistor 10K Ohm.
  3. Zapojte HC4LED Data, Clock a Blank do Arduina takto:
    • Pin 4 -> HC4LED „Data“ pin 6 (nejvíce vlevo, viz  datasheet)
    • Pin 5 -> HC4LED „Clock“ pin 5 (druhý zleva)
    • Pin 7 -> HC4LED „Blank“ pin 3 (čtvrtý zleva)
  4. Propojte zem HC4LED a piny 1 a 2 k příslušným výstupům na Arduinu/Boarduinu.
Prototyp na nepájivém kontaktním poli

Prototyp na nepájivém kontaktním poli

Do malé krabičky vyvrtejte tři asi 6 milimetrové dírky pro LEDky, jeden otvor s průměrem 3,5 cm pro tlačítko a obdélníkový otvor 1,5 cm x  4,8 cm na displej. Na straně krabičky vytvořte otvor o průměru asi 1 cm pro napájecí konektor. Zapojte konektor k napájení Arduina.

Krabička

Krabička

Software tohoto projektu využívá knihovnu HC4LED library. Základní přehled hlavního programu je zde:

  • (Setup) Pokud je tlačítko stisknuté při zapnutí, vymaž všechna skóre uložená v EEPROM.
  • (Loop) Pokud tlačítko není stisknuté, zobraz deset nejvyšších skóre uložených v EEPROM. Pokud poslední hráč skóroval nejlépe, opakovaně zablikej zelenou a žlutou LEDkou. Pokud byl poslední hráč diskvalifikován, protože uvolnil tlačítko příliš brzy, výstražně zablikej červenou LEDkou.
  • (Loop) Jakmile hráč stiskne a uvolní tlačítko, začni hru. Opakuj desetkrát.
    • Blikej žlutou LEDkou, dokud uživatel nestiskne tlačítko.
    • Urči náhodný počet milisekund mezi 2000 a 5000 a začni počítat čas.
    • Když čas vyprší, zhasni žlutou LEDku a rozsviť zelenou.
    • Když hráč  uvolní tlačítko, zapiš reakční dobu.
    • Na konci hry ohlas, jestli se hráč dostal do 10 nejlepších výsledků a ulož jeho skóre.

Bylo zábavné tuhle věcičku sestrojit, a mým dětem se také líbí. Dokonce jich několik stavím pro své přátele. Je zajímavé pozorovat rozdíly ve výsledcích různých lidí. Protože celý život hraji playstation hry, nepřekvapuje mě, že mám nejlepší průměrné výsledky (od přibližně 1500 ms až k 1600 ms). Ale docela mě překvapilo, že moje jedenáctiletá dcera (která skóruje průměrně 1700 ms) pokaždé v playstationu porazí svého desetiletého bratra (který skóruje kolem 2400 ms). Proč tomu tak je? Je to rozdílem v pohlaví? Nebo věkový rozdíl 18 měsíců? Nebo snad tím, že děvčata dospívají rychleji než chlapci? Blíží se období školních vědeckých projektů a já myslím, že tahle moje malá krabička může pomoct s řadou zajímavých výzkumných projektů.

Autor: Mikal Hart

Přeloženo z https://playground.arduino.cc/ComponentLib/ReactionTimeTester a mírně upraveno.

 

Alena Suchá
Latest posts by Alena Suchá (see all)

Napsat komentář