01 小游戲 Run Tiny
在電子森林推文?700 個(gè)字節(jié)的代碼在 ATtiny10 里跑一個(gè)游戲[1]?介紹了一個(gè)?開源小游戲 RunTiny[2]?.
用了:
-
一個(gè) AVR 單片機(jī) ATtiny10 微控制器(只有 6 個(gè)腳,Digikey 上 0.3 美元一顆)
-
-
一個(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)
-
?
原理圖長這樣(在面包板上就可以實(shí)現(xiàn),5 塊錢打塊板也可以?。?/p>
代碼也超級簡單,為了能夠塞到 1KB 的 Flash 存儲器里面,作者做了優(yōu)化,用匯編語言寫成,最終的代碼只有 778 個(gè)字節(jié),不僅實(shí)現(xiàn)了游戲的功能,還能處理微控制器的 I/O 以及顯示的通信
?
是不是很酷?在 Github 上有開源的資源。[2]
02 拆彈專家
“到底應(yīng)該是先剪短綠色電線?還是紅色的呢?”,這也許是很多動作片中的扮演大英雄的主人公在面對能夠拯救百萬人性命的拆彈時(shí)刻經(jīng)常要說的臺詞。
?
下面這個(gè)電子游戲就是帶有兩個(gè)倒計(jì)時(shí)七段數(shù)碼管,并且有四種不同顏色電線需要你將其按順序移開來阻止炸彈爆炸的電路原理圖。
原理圖中的器件參數(shù)可以從網(wǎng)絡(luò)上下載相關(guān)的說明。[3]?如果使用 PCB 來制作相應(yīng)電路可以做到非常小巧精致,不過在面包板上 DIY 這個(gè)游戲電路則更有手感。
電路上電后,數(shù)碼管顯示“S1”,此時(shí)需要將四根不同顏色線(紅、藍(lán)、綠、白)接入電路,然后按動按鈕”K1”,游戲便開始了,數(shù)碼管顯示 15 秒的倒計(jì)時(shí)。單片機(jī)程序自動隨機(jī)設(shè)定四根線移除結(jié)果:觸發(fā)炸彈、加快計(jì)時(shí)速度、解除炸彈以及無結(jié)果。
?
電路中 16F88 單片機(jī)程序?BGame.hex[3]?也可以從網(wǎng)站下載。
03 微型直升飛機(jī)
下面是一款基于 ATTiny3 的俄羅斯方塊游戲,它是由?Owen 在 2011 年[4]?開發(fā)的電子游戲,被稱為 TinyCopter,其中 LCD 是 Nokia3310 手機(jī)液晶屏幕。它模擬在 Apple-II 電腦上一款電腦老游戲,使用空格鍵來控制直升飛機(jī)起飛來穿越崎嶇的通道。
?
為了能夠在 1k 字節(jié)的 FLASH, 64 字節(jié) RAM 中實(shí)現(xiàn)這款小游戲,作者使用匯編語言,用盡了單片機(jī)內(nèi)每一位可用的空間。
也許匯編語言是很多程序員的噩夢,但如果開發(fā)時(shí)間充裕,Owen 愿意永遠(yuǎn)使用匯編語言。它可以讓程序員把單片機(jī)按倒在地上使勁的摩擦,榨出所有可用的資源。
04 太空入侵者
如果前面的單片機(jī)電子游戲機(jī)只能在微小液晶顯示器上玩,不太過癮,那么下面這款基于 ATMEGA328 的 8 位單片機(jī)的?Hackvision[5]?則可以直接利用它的 IO 口來產(chǎn)生 NTSC(或者 PAL)電視信號來驅(qū)動大屏幕電視機(jī)來顯示游戲畫面。有兩條 IO 口組成的 2bitAD 所產(chǎn)生的音效也很神奇。
向 Arduino 一樣,這款電路設(shè)計(jì)中的單片機(jī)可以讓你通過它的 BootLoader 將你自己開發(fā)的程序進(jìn)行上載。利用單片機(jī)額外的外設(shè)資源可以增加更多的游戲控制桿。
?
基于這款硬件可以玩太空入侵者,乒乓球或者小行星等游戲。
這款 Hackvision 相關(guān)的?硬件開發(fā)和軟件編程[6]?可以在網(wǎng)上找到相應(yīng)的開發(fā)資源和編程指導(dǎo)資料。
參考資料
[1]700 個(gè)字節(jié)的代碼在 ATtiny10 里跑一個(gè)游戲:?https://mp.weixin.qq.com/s/gcqykDVyC8Vx_yztekMNSQ
[2]開源小游戲 RunTiny:?https://github.com/ridoluc/RunTiny
[3]原理圖中的器件參數(shù)可以從網(wǎng)絡(luò)上下載相關(guān)的說明。:?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