每個(gè)電子工程師都埋藏著一顆游戲的心
在電子森林推文 700個(gè)字節(jié)的代碼在ATtiny10里跑一個(gè)游戲[1] 介紹了一個(gè) 開(kāi)源小游戲RunTiny[2] .
用了:
-
一個(gè)AVR單片機(jī)ATtiny10微控制器(只有6個(gè)腳,Digikey上0.3美元一顆) -
一個(gè)128*32的OLED顯示屏 -
一個(gè)按鍵 -
一個(gè)電池 - 3.3V~4.5V都可以,可以用1S 150mAh的Lipo,乃至一顆CR2032的紐扣電池
小小的單片機(jī)ATtiny10只有6個(gè)腳:
-
1個(gè)電源 -
1個(gè)地 -
1個(gè)Reset -
3個(gè)可用的I/O: -
PB0: 用于連接OLED的I2C的SDA -
PB1: 用于連接OLED的I2C的SCL -
PB2: 按鍵(INT0)
原理圖長(zhǎng)這樣(在面包板上就可以實(shí)現(xiàn),5塊錢(qián)打塊板也可以啊):
代碼也超級(jí)簡(jiǎn)單,為了能夠塞到1KB的Flash存儲(chǔ)器里面,作者做了優(yōu)化,用匯編語(yǔ)言寫(xiě)成,最終的代碼只有778個(gè)字節(jié),不僅實(shí)現(xiàn)了游戲的功能,還能處理微控制器的I/O以及顯示的通信
是不是很酷?在Github上有開(kāi)源的資源。[2]
“到底應(yīng)該是先剪短綠色電線?還是紅色的呢?”,這也許是很多動(dòng)作片中的扮演大英雄的主人公在面對(duì)能夠拯救百萬(wàn)人性命的拆彈時(shí)刻經(jīng)常要說(shuō)的臺(tái)詞。
下面這個(gè)電子游戲就是帶有兩個(gè)倒計(jì)時(shí)七段數(shù)碼管,并且有四種不同顏色電線需要你將其按順序移開(kāi)來(lái)阻止炸彈爆炸的電路原理圖。
原理圖中的器件參數(shù)可以從網(wǎng)絡(luò)上下載相關(guān)的說(shuō)明。[3] 如果使用PCB來(lái)制作相應(yīng)電路可以做到非常小巧精致,不過(guò)在面包板上DIY這個(gè)游戲電路則更有手感。
電路上電后,數(shù)碼管顯示“S1”,此時(shí)需要將四根不同顏色線(紅、藍(lán)、綠、白)接入電路,然后按動(dòng)按鈕”K1”,游戲便開(kāi)始了,數(shù)碼管顯示15秒的倒計(jì)時(shí)。單片機(jī)程序自動(dòng)隨機(jī)設(shè)定四根線移除結(jié)果:觸發(fā)炸彈、加快計(jì)時(shí)速度、解除炸彈以及無(wú)結(jié)果。
電路中16F88單片機(jī)程序 BGame.hex[3] 也可以從網(wǎng)站下載。
下面是一款基于ATTiny3的俄羅斯方塊游戲,它是由 Owen在2011年[4] 開(kāi)發(fā)的電子游戲,被稱(chēng)為T(mén)inyCopter,其中LCD是Nokia3310手機(jī)液晶屏幕。它模擬在Apple-II電腦上一款電腦老游戲,使用空格鍵來(lái)控制直升飛機(jī)起飛來(lái)穿越崎嶇的通道。
為了能夠在1k字節(jié)的FLASH, 64字節(jié)RAM中實(shí)現(xiàn)這款小游戲,作者使用匯編語(yǔ)言,用盡了單片機(jī)內(nèi)每一位可用的空間。
也許匯編語(yǔ)言是很多程序員的噩夢(mèng),但如果開(kāi)發(fā)時(shí)間充裕,Owen愿意永遠(yuǎn)使用匯編語(yǔ)言。它可以讓程序員把單片機(jī)按倒在地上使勁的摩擦,榨出所有可用的資源。
如果前面的單片機(jī)電子游戲機(jī)只能在微小液晶顯示器上玩,不太過(guò)癮,那么下面這款基于ATMEGA328的8位單片機(jī)的 Hackvision[5] 則可以直接利用它的IO口來(lái)產(chǎn)生NTSC(或者PAL)電視信號(hào)來(lái)驅(qū)動(dòng)大屏幕電視機(jī)來(lái)顯示游戲畫(huà)面。有兩條IO口組成的2bitAD所產(chǎn)生的音效也很神奇。
向Arduino一樣,這款電路設(shè)計(jì)中的單片機(jī)可以讓你通過(guò)它的BootLoader將你自己開(kāi)發(fā)的程序進(jìn)行上載。利用單片機(jī)額外的外設(shè)資源可以增加更多的游戲控制桿。
基于這款硬件可以玩太空入侵者,乒乓球或者小行星等游戲。
這款Hackvision相關(guān)的 硬件開(kāi)發(fā)和軟件編程[6] 可以在網(wǎng)上找到相應(yīng)的開(kāi)發(fā)資源和編程指導(dǎo)資料。
參考資料
700個(gè)字節(jié)的代碼在ATtiny10里跑一個(gè)游戲: https://mp.weixin.qq.com/s/gcqykDVyC8Vx_yztekMNSQ
[2]開(kāi)源小游戲RunTiny: https://github.com/ridoluc/RunTiny
[3]原理圖中的器件參數(shù)可以從網(wǎng)絡(luò)上下載相關(guān)的說(shuō)明。: https://www.electronics-lab.com/project/bomb-game/
[4]Owen在2011年: http://hackedgadgets.com/category/game-hacks/page/7/
[5]Hackvision: https://nootropicdesign.com/hackvision/
[6]硬件開(kāi)發(fā)和軟件編程: https://easyeda.com/tomatos/hackvision
卓老大 想問(wèn)下您 16屆比賽會(huì)如期舉辦嗎?
回復(fù):當(dāng)然。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!