打地鼠的邏輯
??打地鼠的邏輯很簡單:我點亮某個LED,然后開始計時。如果在規定的時間內按下了LED對應的按鍵,那么加分,點亮下一個LED。按錯按鍵,或者規定時間內沒有按下,則減命,點亮下一個LED。
??那么如何點亮某個LED?如何檢測按鍵是否按下呢?
??我選擇了一款帶LED的按鍵。大小是12mm乘12mm,用手指按大小正好,手感也不錯,就是有一點,真貴。
??淘寶就1塊錢了,我找的中發配單就更貴了。并且其實吧,,,,,燈和按鍵完全是分開的!兩個器件,湊到一塊了而已。
??我把按鍵做成了一個集成庫的封裝。原理圖就是這個樣子:
??SLED接到單片機的引腳上,只要單片機引腳給低電平,就能點亮LED。不同顏色的燈限流電阻值大小不一樣,根據亮度稍微試一下就行。
??SKEY也接到了單片機上,由于STM32可以設置為內部上拉輸入,所以不需要外接上拉電阻。按鍵按下去以后,SKEY接到GND上。也就是沒按下按鍵的時候,SKEY是高電平,按下按鍵以后,SKEY是低電平。
供電設計
??電腦的USB口就是5V供電,所以生活中很容易得到5V的電源,我用microUSB來供電。就是以前的安卓充電頭,不是快充那種。
??除此之外,預留了插針P3,也可以改造為電池供電,4.5V,6V都可以工作。供電芯片是LDO,電源的質量比較有保障。
??為了方便調試,也可以用Jlink OB供電和下載程序。板子預留了SWD下載方式,相對于JLink V8,OB便宜多了。并且的Jlink OB還送了一根microUSB線。
??為了避免馬大哈接錯電源正負極,燒壞板子,電源部分用F1和D4的配合做了防反接設計。如果VCC_IN和GND接反了,那么D4導通,大電流通過保險絲,保險絲瞬間斷開,保護電路。保險絲同志是不是因此犧牲了?并不,我們用的是自恢復保險絲,在通過高電流時并不是燒壞,而是變為“高阻態”,等故障排除以后,重新變為“低阻態”。在接線正常的情況下,D4反向截止,相當于斷路。
??D5是個TVS管,用于防靜電,它有個特點,在它感受到兩側收到反向瞬態高能量沖擊時,可以很塊變為低阻抗,吸收高達數千瓦的浪涌功率,使兩極間的電壓箝位于一個預定值,有效地保護電子線路中的精密元器件,免受各種浪涌脈沖的損壞。 簡單來說,就是它兩端的電壓不能超過這個預設值。而人體帶的靜電通常超過幾百伏特,擊穿小小的掌機輕而易舉,所以,要加防護。再加上我這霹靂貝貝的體質,曾經玩無人機的時候,第一次觸摸無人機就把主控芯片擊穿了,累積擊穿的器件估計超過1000塊了,所以來個大只的TVS管,SMB封裝,妥妥的。
屏幕顯示設計
??考慮到顯示分數的需求,選用了一款0.96寸的OLED屏幕。這個屏幕應用很廣泛,某寶上有很多,買來模塊,通過杜邦線連接就能用。
??而我把OLED畫到PCB上了,因為對于我來說,可能畫個PCB比接線還省事。實際上在企業里,幾乎沒有人用開發板,也沒人用杜邦線跳來跳去接線。
??至于具體的電路設計——太多了,我去網上找了幾個方案,綜合了一下,把IIC與SPI兩種接口都保留了,圖紙如下。
??不過,,,后來發現屏幕可能太小了,0.96寸打個俄羅斯方塊都有點費勁。以后要是升級的話,可以考慮1.44寸,還能全彩。話說,屏幕哪有夠用的時候,做手機的那幫人想做個全面屏,劉海屏,水滴屏,都快瘋了。
蜂鳴器的設計
??用過蜂鳴器的同學可能都會有一個疑問,到底選用有源蜂鳴器,還是無源蜂鳴器?
??這里的源指的不是電源,而是震蕩源。有源蜂鳴器內部有震蕩源,通電就會叫,控制起來很簡單,也貴一些。無源蜂鳴器沒有內部震蕩源,便宜一些,不能通電就叫。
??那么無源蜂鳴器怎么工作?寫程序來控制引腳的電平變化周期,看似用起來復雜一點,其實能玩的花樣就多得多了,頻率可控,也就是音調可控,音調可控,那就唱歌唄。聽說,只要采集人聲,分析人聲的頻率,然后以極快的速度發送給蜂鳴器,蜂鳴器就可以模擬人聲了。潛力無限啊。我們當然要選無源的蜂鳴器了。
??以后讓代碼來播放背景音樂。也可以把掌機作為點唱機,按下某個按鍵,就播放某個音樂。雖然是簡陋的電子音,但是,可以展現工科生的浪漫?。?p>??蜂鳴器算是大功率器件了,引腳不能直接驅動,要借助三極管。R22是個下拉電阻,可以讓蜂鳴器在默認狀態下不要發出聲音。BEEP輸出高電平時,三極管導通,蜂鳴器發出聲音。但是由于是無源蜂鳴器,只能響一聲;需要BEEP輸出低電平,然后再輸出高電平,才可以繼續發出聲響。
??其實無源蜂鳴器沒有正負極,引腳的狀態不用太在意。
??說到有源和無源了,晶振也分有源和無源。一般情況下,沒有特殊要求的晶振,用的都是無源的。
??整體電路設計大概就是這樣,基本上就是最小系統板+OLED+帶燈按鍵。
上一篇:STM32掌機教程3,工程模板與帶燈按鍵測試
下一篇:從自定義的庫函數到STM32官方標準庫
推薦閱讀
史海拾趣