Paano Gumawa ng Raspberry Pi Pico Reaction Game Gamit ang PicoZero

Raspberry Pi Pico Reaction Game Gamit ang PicoZero

Makatarungang sabihin na ang Raspberry Pi Pico ay nakagambala sa merkado ng microcontroller noong unang bahagi ng 2021. Ang $4 na board ay may higit na pagkakatulad sa isang Arduino kaysa sa isang Raspberry Pi, ngunit ang Pico ay napatunayang isang mas may kakayahang hayop.

Gamit ang Raspberry Pi Pico, maaari naming gawing kumikislap ang mga LED, bumuo ng mga robot at kahit na magpatakbo ng Doom. Ngunit para sa mga bago sa programming, microcontrollers at electronics mayroong ilang mga hadlang sa pagpasok na kailangang masira.

Ang MicroPython ay isang mahusay na wika para sa Raspberry Pi Pico, (pinahusay lamang ng CircuitPython sa aming mapagpakumbabang opinyon) ngunit sa mga hindi pa nakakaalam maaari itong mabilis na maging “sopas ng salita”. Ang pag-abstract ng code, ginagawa itong mas simple upang maunawaan ang kailangan natin at sa kabutihang-palad, mukhang ang PicoZero ang solusyon.

Kinukuha ng PicoZero ang isang pahina mula sa aklat ng GPIO Zero dahil ito ay isang baguhan na friendly na Python library para sa mga karaniwang electronics. Ang GPIO Zero, na ginawa at pinananatili ng dating empleyado ng Raspberry Pi na si Ben Nuttall at Canonical software engineer na si Dave Jones ay lumikha ng seismic shift para sa mga mag-aaral. Pinasimple at inihalimbawa nito kung paano maaaring makipag-ugnayan ang mga user sa mga karaniwang electronics gamit ang Python sa Raspberry Pi. Ang PicoZero mula sa Raspberry Pi Foundation ay sumusunod sa parehong mga prinsipyo at habang nasa beta pa ito, kailangan lang naming bumuo ng isang proyekto gamit ito.

Ipakikilala ng aming proyekto ang mga pangunahing input at output ng PicoZero module sa pamamagitan ng isang larong reaksyon, na idinisenyo upang subukan ang mga reflexes ng dalawang manlalaro kumpara sa isang napakalakas na buzzer.

Para sa Proyektong Ito Kakailanganin Mo

Raspberry Pi Pico2 x Mga push button1 x DC buzzer1 x 10K Ohm Resistor (Brown-Black-Orange-Gold)8 x Male to male jumper wiresMalalaking breadboardModelling clay / Play-Doh

Wiring Ang Laro

(Credit ng larawan: Tom’s Hardware)

Ang paggawa ng hardware para sa proyektong ito ay simple, kung gagawin natin ito nang sunud-sunod. Mayroon kaming dalawang input, ang aming mga pindutan na ginagamit ng mga manlalaro. Ang tanging output ay isang buzzer. Kadalasan ang buzzer ay direktang ikokonekta sa GPIO ngunit sa aming mga pagsubok nalaman namin na ito ay masyadong tahimik. Upang makayanan ito, gumamit kami ng isang NPN transistor (2n 2222) na mahalagang isang switch na kinokontrol ng elektroniko. Sa pamamagitan ng pagkonekta sa gitnang pin (Base) sa GPIO ng Pico sa pamamagitan ng 10K Ohm resistor maaari nating i-trigger ang switch upang isara, at paganahin ang GND pin ng buzzer na kumonekta sa GND ng Raspberry Pi Pico.

1. Ikonekta ang 3V3(Out) at GND pin ng Pico sa + at – (ayon sa pagkakabanggit) na mga riles ng breadboard. Gagawin nitong 3V3 (3.3V) at GND ang lahat ng pin sa bawat isa sa mga riles na ito.

(Credit ng larawan: Tom’s Hardware)

2. Ibaluktot nang bahagya ang gitnang pin ng NPN transistor at ilagay ito sa breadboard na nakaharap ang flat ng chip.

(Credit ng larawan: Tom’s Hardware)

3. Gamit ang 10K Ohm resistor, ikonekta ang GPIO16 ng Pico sa gitnang pin ng NPN transistor. Ito ang Base pin, na ginagamit upang kontrolin ang estado ng transistor.

(Credit ng larawan: Tom’s Hardware)

4. Ikonekta ang GND mula sa – rail papunta sa Collector pin (kanang binti sa diagram) ng NPN transistor.

(Credit ng larawan: Tom’s Hardware)

5. Ikonekta ang negatibong paa ng buzzer (itim na kawad) sa Emitter pin (kaliwang binti sa diagram) ng NPN transistor. Ikonekta ang positibong paa ng buzzer (pulang kawad) sa + rail ng breadboard. Naka-wire na kami ngayon ng bukas na switch. Kapag ang NPN transistor ay hindi na-trigger, ang koneksyon ay nasira.

Kapag nagpadala kami ng signal sa Base pin, pinapasara namin ang circuit na nagpatunog ng buzzer. Tandaan na ang isang blob ng Play-Doh o modeling clay ay maaaring gamitin upang bahagyang takpan ang buzzer habang binabawasan ang volume sa mas kaunting mga antas ng pagbutas sa tainga.

(Credit ng larawan: Tom’s Hardware)

6. Ipasok ang button para sa player one at kawad ang isang paa sa GPIO19 at ang isa sa – riles.

(Credit ng larawan: Tom’s Hardware)

7. Idagdag ang button para sa player two, pagkonekta ng isang binti sa GPIO20 at ang isa sa – riles.

(Credit ng larawan: Tom’s Hardware)

Pag-install ng PicoZero sa iyong Raspberry Pi Pico

Ang PicoZero ay isang MicroPython module na nag-abstract sa mga kumplikado ng electronics at programming para sa mga bago sa mga paksa. Gagamitin namin ang Thonny Python editor, na inirerekomenda ng Raspberry Pi bilang default na editor.

1. I-install (o i-update sa) ang pinakabagong editor ng thonny Python para sa iyong operating system.

2. Ikonekta ang iyong Raspberry Pi Pico at simulan ang Thonny. Dapat awtomatikong makita ni Thonny ang Pico at kumonekta na handa nang gamitin. Ang iyong Raspberry Pi Pico ay dapat na tumatakbo sa MicroPython, kung hindi sundin ang mga tagubilin sa aming Paano I-set Up at Programa ang gabay ng Raspberry Pi Pico.

3. Buksan a web browser sa PicoZero source at kopyahin ang picozero.py code.

4. I-paste ang code sa isang blangkong dokumento.

5. I-save ang code, sa Raspberry Pi Pico bilang picozero.py

Ang Project Code

Ang code para sa proyekto ay napaka-simple salamat sa abstraction ng PicoZero. Ang layunin ng proyekto ay lumikha ng isang laro ng reaksyon. Ang buzzer ay magbi-beep ng countdown para sa mga manlalaro, pagkatapos ay i-pause ng random na oras sa pagitan ng lima at sampung segundo bago tumunog muli. Ang pinakamabilis na manlalaro na pumindot sa kanilang button ang siyang mananalo sa laro, at i-off ang nakakainis na buzzer.

1. Gumawa ng bagong blangkong file sa Thonny.

2. Mula sa PicoZero module i-import ang mga klase ng Button at Buzzer. Ang dalawang klase na ito ay ginagamit upang makipag-ugnayan sa mga pisikal na pindutan at buzzer.

mula sa picozero import Button, Buzzer

3. Mag-import ng dalawa pang module. Ginagamit ang oras upang kontrolin ang pagkaantala sa aming code; ang sleep function ay nagdaragdag ng isang pause. Ang Random ay nagbibigay-daan sa paggamit ng mga klase at function para sa random na pagbuo ng numero, random na pagpipilian.

mula sa oras na pag-import ng pagtulog ay pag-import ng random

4. Gumawa ng object, buzzer, na mag-iimbak ng GPIO pin na konektado sa transistor na kumokontrol sa aming button.

buzzer = Buzzer(16)

5. Gumawa ng dalawa pang bagay, p1 at p2 na mag-iimbak ng GPIO pin kung saan konektado ang bawat button.

p1 = Pindutan(19) p2 = Pindutan(20)

6. Gumamit ng for loop para i-beep ang buzzer ng tatlong beses, isang countdown na magsasaad na nagsimula na ang laro. Ang maikling 0.1 na tulog ay magiging dahilan upang tumunog ang buzzer nang panandalian, ang pag-off ng buzzer sa loob ng 0.9 na segundo ay magbibigay sa amin ng isang regular na countdown ng “heart beat”.

para sa i in range(3): buzzer.beep() sleep(0.1) buzzer.off() sleep(0.9)

7. Lumikha ng bagay, oras, na mag-iimbak ng random na piniling float number sa pagitan ng 5 at 10 segundo, pagkatapos gamitin ang value na iyon para i-pause ang laro. This is the moment of anticipation, mabilis bang tumunog ang buzzer o maghihintay pa ba tayo ng buong 10 segundo? Ito ang random na katangian ng laro ng reaksyon.

oras = random.uniform(5, 10) pagtulog(oras)

8. I-on ang buzzer. Tutunog ang buzzer hanggang sa pinindot ng isang player ang kanilang button.

buzzer.on()

9. Lumikha ng isang habang True loop upang patakbuhin ang code ng laro. Patuloy nitong tatakbo ang code na tumitingin kung sinong player ang pinindot ang kanilang button.

habang Tama:

10. Suriin kung pinindot ang button ng player 1. Kung mayroon ito, ang isang for loop ay magpi-print ng “Green Wins” ng limang beses sa Python Shell. Pagkatapos ay nasira ang loop, na humihinto sa pagtakbo ng code.

kung p1.is_pressed: para sa i in range(5): print(“Green Wins”) break

11. Gawin ang parehong check para sa button ng player 2. Ang pagkakaiba lang ay ang for loop print na “Yellow Wins”.

kung p2.is_pressed: para sa i in range(5): print(“Yellow Wins”) break

12. I-off ang buzzer, tinatapos ang laro.

buzzer.off()

13. I-save ang code bilang reaction.py sa Raspberry Pi Pico.

14. I-click ang Run para simulan ang laro. Kapag kumpleto na ang laro, mag-click sa Run para simulan muli ang laro, at hamunin ang katunggali sa isang rematch!

Kumpletuhin ang Listahan ng Code

mula sa picozero import Button, Buzzer mula sa oras na import sleep import random buzzer = Buzzer(16) p1 = Button(19) p2 = Button(20) para sa i in range(3): buzzer.beep() sleep(0.1) buzzer.off () sleep(0.9) time = random.uniform(5, 10) sleep(time) buzzer.on() while True: if p1.is_pressed: for i in range(5): print(“Green Wins”) break kung p2.is_pressed: para sa i in range(5): print(“Yellow Wins”) break buzzer.off()

Click to rate this post!
[Total: 0 Average: 0]