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