成人免费无码不卡毛片,亚洲AⅤ无码精品一区二区三区,国产尤物精品视频,久久精品日本亚洲,欧美成人一区三区无码乱码A片,中文字日产幕码一区二区色哟哟,亞洲日韓中文字幕網AV

  • 方案介紹
  • 附件下載
  • 相關推薦
申請入駐 產業(yè)圖譜

重力感應式藍牙 FM 收音機設計(源碼、詳細制作講解、視頻演示)

2016/12/21
12
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

bluepyradio_upload.zip

共2個文件

先說說硬件環(huán)境,使用的是STM32F4DISCO(自帶加速度)+Si4703+LCD5110。軟件設計上,雖然應用的核心功能是收音機了,但是和大部分的應用相似,沒有良好的用戶交互界面,使用體驗是要大打折扣的。所以下面的文字大部分都集中在用戶交互設計上。

首先是控制部分,加速度計可以提供上下左右4個方向的控制,在應用中給音量增減和電臺下上切臺使用。由于敲擊功能沒有實現,因此電臺的開關交給了開發(fā)板上的用戶按鍵。用戶按鍵原計劃使用callback來實現功能,但是測試木有成功啊。不過既然加速度值也是用polling的話,那不如按鍵也一起好了。掃描使用最原始的方式,掃描到以后,延時10ms,然后再判斷是否按下。加速度計在使用時,也存在類似的抖動,因此也使用了相同的邏輯來消抖。同時,通過測試,給定了一個加速度計傾轉的閾值:g=0.3,也就是說當某個方向(不含z)的g大于0.3,表示有用戶動作發(fā)生。

接下來就是顯示界面了。整個5110有6行高度為8的字符可用,每行84個點。應用要顯示的核心內容是電臺頻率和音量,內容不多,因此可以適當放大。最終頻率選擇了12*24的字體,占用3行,又不會把整行撐滿;音量做了以模擬的bar顯示,用豎條|||||||的多少表示音量的打下,占用兩行;這樣還多出一行,用來顯示一個固定字符串“PY FM Radio”。

整體界面如下圖所示:

事先用其他方式確定了若干個本地效果較好的電臺,放到了radiolist中。當發(fā)現有左右手勢的時候,取出radiolist中的下一個電臺頻率值,發(fā)送給Si4703,并更新顯示界面,電臺頻率是繞圈改變的,也就是說到了radiolist的最后一個,下一次就回到了第一個。當發(fā)現有上下手勢時,對volume進行響應的改變,并發(fā)送給Si4703,并更新顯示界面。音量最大15,最小0(表示靜音)。當發(fā)現有用戶按鍵動作時,在開關狀態(tài)之間切換。關閉時,清除屏幕,關閉Si4703;開機時,正常顯示,FM工作。

視頻演示:

說明:

        設計過程中發(fā)現了浮點數運算的精度問題。比如頻率99.6Mhz,在list當中是存成996的,顯示的時候,通過運算channel=str(996/10),將電臺轉為浮點字符串99.6。前期調試的時候,用的電臺較少,沒有問題。后面把所有電臺都加上時,發(fā)現有些電臺,比如890,做了除法運算以后,變成了89.0001,導致顯示行方向溢出。最后通過字符串截取的方式取到自己想要的長度。python似乎沒有printf?

目前還有一些小問題,比如加速度識別的抖動有時候還會出現,音量有時候會有跳變等等。最后通過視頻看下具體效果吧。

詳細的制作講解和main.py見附件內容。

  • bluepyradio_upload.zip
    下載
    描述:其他module和main一并附上
  • 詳細的制作詳見.txt
    下載
    描述:詳細的制作講解,請查看鏈接

相關推薦

鹤峰县| 鹿泉市| 叙永县| 海丰县| 新密市| 云林县| 丹凤县| 泰安市| 彰化县| 莱芜市| 南靖县| 五河县| 沽源县| 三亚市| 区。| 镇坪县| 荥阳市| 安多县| 和田县| 温泉县| 鹰潭市| 武威市| 谷城县| 工布江达县| 海阳市| 红桥区| 白玉县| 岫岩| 且末县| 霍城县| 灵山县| 吐鲁番市| 望谟县| 比如县| 陆川县| 江山市| 玛沁县| 新津县| 九龙县| 乌拉特中旗| 阿鲁科尔沁旗|