01 小游戲 Run Tiny
在電子森林推文?700 個(gè)字節(jié)的代碼在 ATtiny10 里跑一個(gè)游戲[1]?介紹了一個(gè)?開(kāi)源小游戲 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)
-
?
原理圖長(zhǎng)這樣(在面包板上就可以實(shí)現(xiàn),5 塊錢打塊板也可以?。?/p>
▲ 極簡(jiǎn)的電路圖 ▲ 面包板上搭建的電路
代碼也超級(jí)簡(jiǎn)單,為了能夠塞到 1KB 的 Flash 存儲(chǔ)器里面,作者做了優(yōu)化,用匯編語(yǔ)言寫(xiě)成,最終的代碼只有 778 個(gè)字節(jié),不僅實(shí)現(xiàn)了游戲的功能,還能處理微控制器的 I/O 以及顯示的通信
?
是不是很酷?在 Github 上有開(kāi)源的資源。[2]
02 拆彈專家
“到底應(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)站下載。
▲ 視頻游戲控制板電路原理圖
03 微型直升飛機(jī)
下面是一款基于 ATTiny3 的俄羅斯方塊游戲,它是由?Owen 在 2011 年[4]?開(kāi)發(fā)的電子游戲,被稱為 TinyCopter,其中 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ī)按倒在地上使勁的摩擦,榨出所有可用的資源。
04 太空入侵者
如果前面的單片機(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)生的音效也很神奇。
▲ Hackvision 游戲板
向 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)資料。
▲ Hackvision 硬件電路設(shè)計(jì)
參考資料
[1]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