哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】基于鴻蒙操作系統(tǒng)的《愛若琉璃》(蜂鳴器版本)

開發(fā)板試用精選 ? 來源:開發(fā)板試用 ? 作者:電子發(fā)燒友論壇 ? 2022-11-04 16:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文來源電子發(fā)燒友社區(qū),作者:juby, 帖子地址:https://bbs.elecfans.com/jishu_2009947_1_1.html


先上效果:《愛若琉璃》(蜂鳴器版本)

前言
經(jīng)過一段時間的分享,基于Hi3861開發(fā)板鴻蒙開發(fā)已經(jīng)完成了下面核心板和OLED板兩個子板的分享了。
我們今天分享紅綠黃燈板上的資源,對應(yīng)原理圖在下面文件中:
HiSpark_WiFi_IoT_SSL_VER.A.pdf
這個紅綠燈板子上有三個LED,分別是紅黃綠三種顏色;
此外還有一個按鍵和一個無源蜂鳴器;
對應(yīng)資源如下表所示:
[td]
板載資源 系統(tǒng)資源
紅燈_RED D10(GPIO10)/UART2_CTS/SPI0_CLK/PWM1_OUT/I2C0_SDA
黃燈_YELLOW A12(GPIO12)/UART2_RXD/SPI0_CS1/ADC0/PWM3_OUT
綠燈_GREEN A11(GPIO11)/UART2_TXD/SPI0_RXD/ADC5/PWM2_OUT
蜂鳴器_BEEP(MLT-8530) A9(GPIO09)/UART2_RTS/SPI0_TXD/ADC4/PWM0_OUT/I2C0_SC
按鍵_SWITCH MOSI(SPI0_TXD)/GPIO08/PWM1_OUT
LED和按鍵的驅(qū)動我們之前已經(jīng)分享過了,請參見下文:HarmonyOS實現(xiàn)點亮LED
基于鴻蒙OS的按鍵驅(qū)動
一個ADC實現(xiàn)多個按鍵檢測
今天我們介紹一下鴻蒙系統(tǒng)下PWM的使用方法。
實現(xiàn)目標1. 蜂鳴器演奏歌曲《愛若琉璃》2. 解決上次《你笑起來真好看》遺留問題,實現(xiàn)點擊蜂鳴器板子上的按鍵,控制音樂播放或停止蜂鳴器原理圖
當BEEP為高電平的時候,三極管MMBT3904導(dǎo)通,蜂鳴器B1有電流流過;當BEEP為低電平的時候,三極管截止,蜂鳴器B1沒有電流流過。
按鍵中斷按鍵初始化
設(shè)置按鍵對應(yīng)GPIO08為輸入、上拉模式的GPIO,并設(shè)置上升沿的中斷函數(shù)為:OnButtonPressed_isr
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_8, WIFI_IOT_IO_FUNC_GPIO_8_GPIO);
GpioSetDir(WIFI_IOT_IO_NAME_GPIO_8, WIFI_IOT_GPIO_DIR_IN);
IoSetPull(WIFI_IOT_IO_NAME_GPIO_8, WIFI_IOT_IO_PULL_UP);
GpioRegisterIsrFunc(WIFI_IOT_IO_NAME_GPIO_8, WIFI_IOT_INT_TYPE_EDGE, WIFI_IOT_GPIO_EDGE_RISE_LEVEL_HIGH, OnButtonPressed_isr, NULL);
按鍵中斷函數(shù)
中斷函數(shù)中主要改變控制音樂播放的一個布爾變量,在真和假之間來回切換。
static void OnButtonPressed_isr(char* arg) {
(void)arg;

printf("[beep_demo.c] OnButtonPressed() rn");

bSongPlaying = !bSongPlaying;
}
PWM脈沖產(chǎn)生PWM初始化hi_pwm_set_clock(PWM_CLK_XTAL); //設(shè)置時鐘源為晶體時鐘;
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_PWM0_OUT);//IO復(fù)用為PWM功能
ret = GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_OUT);//設(shè)置為輸出
if (ret != WIFI_IOT_SUCCESS) {
printf("===== ERROR ======gpio -> GpioSetDir ret:%d rn", ret);
return;
}
hi_pwm_init(HI_PWM_PORT_PWM0);//初始化PWM
BUILD.gn文件
改寫工程中的兩個BUILD.gn文件。
編譯
添加完上面代碼,如果直接編譯的話,會報如下錯誤:
出錯的原因是未開啟PWM功能,開啟PWM功能:
在 vendorhisihi3861hi3861buildconfigusr_config.mk 文件中下圖位置,添加一行代碼:CONFIG_PWM_SUPPORT=y
再編譯就沒有問題了。
測試PWM功能
改變PWM輸出使用如下兩個函數(shù):
hi_u32 hi_pwm_stop(hi_pwm_port port)
hi_u32 hi_pwm_start(hi_pwm_port port, hi_u16 duty, hi_u16 freq)
修改參數(shù)freq可以修改輸出脈沖的頻率,修改參數(shù) duty可以改變占空比。
執(zhí)行hi_pwm_start()函數(shù)開始PWM輸出,執(zhí)行hi_pwm_stop()函數(shù)PWM輸出停止。
測試一hi_pwm_stop(HI_PWM_PORT_PWM0);
hi_pwm_start(HI_PWM_PORT_PWM0, 1, 2); //25ns/25ns
測試一測試二hi_pwm_stop(HI_PWM_PORT_PWM0);
hi_pwm_start(HI_PWM_PORT_PWM0, 3, 10); //75ns/250ns
測試二測試三hi_pwm_stop(HI_PWM_PORT_PWM0);
hi_pwm_start(HI_PWM_PORT_PWM0, 30, 100); //0.75us/2.5us
測試三
由上面的測試,我們可以得出,參數(shù) duty 和 freq 的值,1單位代表25 ns。
實現(xiàn)《愛若琉璃》樂譜
現(xiàn)在我們實現(xiàn)了PWM輸出的控制,接下來就是實現(xiàn)本文的目標了,實現(xiàn)蜂鳴器演奏《愛若琉璃》,蜂鳴器演奏音樂的原理詳見之前網(wǎng)文:
蜂鳴器演奏音樂“你笑起來真好看”
由上面的網(wǎng)文我們知道,要想完成一個樂譜,我們只要確定“音符(音調(diào))”和“節(jié)拍”即可。
音調(diào)表示一個音符響的頻率,節(jié)拍表示一個音符該唱多長的時間。
音符(音調(diào))的確定
一般鋼琴鍵盤有88個按鍵:
鋼琴上88按鍵的頻率如下表所示:
比如中央C音的標準頻率就是261,在上面表格中就是:音名為C4的按鍵。
程序中定義一個音頻的數(shù)組:
因為上面初始化PWM的時候,使用的是外部晶振作為時鐘源hi_pwm_set_clock(PWM_CLK_XTAL);
根據(jù)上面示波器中實測的結(jié)果可以推算出,這個時鐘源為40M。
而輸出的脈沖頻率由這個函數(shù)決定的:hi_u32 hi_pwm_start(hi_pwm_port port, hi_u16 duty, hi_u16 freq)
參數(shù)freq決定了脈沖的頻率,這個參數(shù)是hi_u16類型,那么這個參數(shù)的有效范圍為:2~65535。
所以輸出的脈沖的最低頻率為:40M / 65535 (下面有計算方法) ,即40 * 1000 * 1000 / 65535 = 610.3608758678569?
所以這個Hi3861芯片只能產(chǎn)生頻率610以上的音,即D#5及以上的按鍵音,所以我們選擇C6那組按鍵的音作為主音。所以我們預(yù)定義正常音的C6對應(yīng)數(shù)組的索引為63。#define N_B 63
我們要想讓蜂鳴器發(fā)出某個音只需要讓PWM輸出對應(yīng)頻率的脈沖即可:
網(wǎng)上找個《愛若琉璃》的簡譜,然后按照對應(yīng)關(guān)系創(chuàng)建如下樂譜數(shù)組:
在這里插入圖片描述節(jié)拍的確定
節(jié)拍就是一個音持續(xù)的時間,這里就是PWM脈沖持續(xù)的時間,那么持續(xù)的時間如何確定呢?
播放一個音
音符(音調(diào))和節(jié)拍的計算方法我們上面介紹完了,那么如果我們利用蜂鳴器播放第一個音,應(yīng)該怎么確定呢?
要想播放一個音,就要使用hi_pwm_start()函數(shù)來產(chǎn)生一定頻率的脈沖信號
那頻率是怎么計算出來的呢?也就是下面代碼中delay_time這個變量是怎么計算出來的呢?
delay_time = 40 * 1000 * 1000/((hi_u32)pitch_names_frequency[ai_ruo_liu_li[0]]);
hi_pwm_start(HI_PWM_PORT_PWM0, delay_time / 2, delay_time);
由上面示波器我們得出,hi_pwm_start()函數(shù)的最后一個參數(shù),一個單位長度為25ns(即:1/(40*1000*1000)),所以我們發(fā)送一定頻率的脈沖,其實傳進去的參數(shù)即為單位長度(25ns)的個數(shù),具體推導(dǎo)過程如下:
參數(shù)換算原理
一個音確定完之后,只要將這個音按照節(jié)拍播放即可,然后遍歷完咱們自己轉(zhuǎn)換的樂譜數(shù)組即可完成整首歌曲的播放。
因為在按鍵的中斷函數(shù)中,每按一次,改變一次布爾變量bSongPlaying的真假。
通過布爾變量bSongPlaying的真假,我們可以實現(xiàn)控制音樂播放的開啟或停止。


結(jié)果展示視頻展示請移步B站觀看:
https://www.bilibili.com/video/BV1sa411w7rh#reply3721065146
資料獲取
公眾號留言區(qū)置頂留言獲取本文對應(yīng)工程文件及《愛若琉璃》的簡譜。
ps: 文章首發(fā)于電子發(fā)燒友。
歡迎關(guān)注
程序員小哈帶你玩轉(zhuǎn)嵌入式,微信搜索:嵌入式從0到1,更多干貨等著你。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • wi-fi
    +關(guān)注

    關(guān)注

    15

    文章

    2464

    瀏覽量

    130037
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2157

    瀏覽量

    36294
  • HiSpark
    +關(guān)注

    關(guān)注

    1

    文章

    156

    瀏覽量

    7799
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    技術(shù)資訊 I Wi-Fi 模塊設(shè)計

    本文要點Wi-Fi模塊設(shè)計旨在打造一套緊湊且高效的硬件和軟件解決方案,使設(shè)備能夠通過Wi-Fi網(wǎng)絡(luò)實現(xiàn)通信。Wi-Fi模塊設(shè)計是一個復(fù)雜的過程,要求研發(fā)人員兼具硬件與軟件工程方面的專業(yè)知識
    的頭像 發(fā)表于 02-27 17:12 ?878次閱讀
    技術(shù)資訊 I <b class='flag-5'>Wi-Fi</b> 模塊設(shè)計

    ESP32 Wi-Fi 控制 LED 燈的原理

    在智能家居、物聯(lián)網(wǎng)設(shè)備中,用手機通過Wi-Fi控制燈光、風扇或插座,已經(jīng)非常普遍。而在嵌入式開發(fā)中,ESP32是最常用的Wi-Fi模塊之一。本文將帶你系統(tǒng)理解:ESP32是如何通過Wi-Fi
    的頭像 發(fā)表于 01-09 19:04 ?584次閱讀
    ESP32 <b class='flag-5'>Wi-Fi</b> 控制 LED 燈的原理

    Wi-Fi:無線連接的全球通用語

    與數(shù)據(jù)鏈路層的規(guī)范。 l Wi-Fi聯(lián)盟:成立于1999年的國際組織,負責Wi-Fi商標認證、技術(shù)推廣與互操作性測試。 l 頻段:主要使用2.4GHz與5GHz頻段,部分支持6GHz,不同頻段在覆蓋、穿透
    發(fā)表于 01-07 09:49

    Nordic發(fā)布nRF7002 EBII 開發(fā)板, 支持Wi-Fi 6, 解鎖nRF54L新玩法

    Wi-Fi 6 功能,幫助開發(fā)人員創(chuàng)建高性能、高能效的Wi-Fi 6 物聯(lián)網(wǎng)解決方案。 基于 Nordic 的 nRF7002 Wi-Fi 協(xié)同 IC,nRF7002 EBII幫助 采用
    發(fā)表于 12-10 11:58

    Wi-Fi模塊選型指南 | 低功耗藍牙/Wi-Fi 6模塊推薦 | 物聯(lián)網(wǎng)設(shè)備集成攻略

    物聯(lián)網(wǎng)的快速發(fā)展,Wi-Fi技術(shù)的成熟的情況下,越來越多的場景需要用到Wi-Fi來無線傳輸數(shù)據(jù),尤其是移動設(shè)備中,怎么再設(shè)備中選擇合適的Wi-Fi模塊呢?下面我們來介紹下Wi-Fi模塊
    的頭像 發(fā)表于 12-09 11:27 ?1332次閱讀
    <b class='flag-5'>Wi-Fi</b>模塊選型指南 | 低功耗藍牙/<b class='flag-5'>Wi-Fi</b> 6模塊推薦 | 物聯(lián)網(wǎng)設(shè)備集成攻略

    淺談Wi-Fi 6E與Wi-Fi 7的關(guān)鍵器件——BAW濾波器新技術(shù)

    作者: Qorvo 亞太區(qū)無線連接事業(yè)部高級行銷經(jīng)理林健富 ? 2020年1月,Wi-Fi聯(lián)盟正式宣布開放6GHz頻段(5925MHz-7125MHz),并將其命名為Wi-Fi 6E。2020年4月
    發(fā)表于 09-19 18:29 ?2474次閱讀
    淺談<b class='flag-5'>Wi-Fi</b> 6E與<b class='flag-5'>Wi-Fi</b> 7的關(guān)鍵器件——BAW濾波器新技術(shù)

    解讀Nordic基于SSID的Wi-Fi定位解決方案

    ,與 nRF91 系列蜂窩物聯(lián)網(wǎng)模組配合使用,可實現(xiàn)基于 SSID 的 Wi-Fi 定位。Nordic基于SSID的Wi-Fi定位可以在室內(nèi)和室外、城市和郊區(qū)以極其省電的方式獲取精確的位置信息。這是對全球?qū)Ш叫l(wèi)星系統(tǒng)(GNSS)
    的頭像 發(fā)表于 09-09 17:11 ?4017次閱讀
    解讀Nordic基于SSID的<b class='flag-5'>Wi-Fi</b>定位解決方案

    如何更新 NuMaker IoT 板上的 Wi-Fi 模塊固件?

    更新 NuMaker IoT 板上的 Wi-Fi 模塊固件
    發(fā)表于 09-04 08:28

    基于 SSID 的 Wi-Fi 定位:與其他定位服務(wù)的性能比較

    導(dǎo)航衛(wèi)星系統(tǒng)(GNSS)的重要補充,尤其是在建筑物和密集城區(qū),GNSS 可能會因信號衰減和中斷而失效。 本博文將介紹我們基于 SSID 的 Wi-Fi 定位解決方案的工作原理以及如何開始測試。然后
    發(fā)表于 08-31 21:01

    LitePoint Wi-Fi測試軟件減輕客戶設(shè)計負擔

    Wi-Fi 7于一年多前獲得Wi-Fi聯(lián)盟認證以來,作為最新一代通信技術(shù),Wi-Fi正逐步成為用戶實現(xiàn)無所不在無線連接的新選擇。隨著每一代Wi-Fi信號復(fù)雜性的提升,建議將硬件測試納
    的頭像 發(fā)表于 08-06 15:34 ?1396次閱讀
    LitePoint <b class='flag-5'>Wi-Fi</b>測試軟件減輕客戶設(shè)計負擔

    有沒有什么修復(fù)方法可以確保 AP 模式下的 Wi-Fi 和 BLE 連接同時正常工作?

    我正在使用 CYBSYSKIT DEV 01 套件。我嘗試在 AP 模式下打開 Wi-Fi 并宣傳 BLE。我可以宣傳 SoftAP 和 BLE。但是,我無法從中央設(shè)備連接到 BLE。它可以立即連接并斷開連接。有沒有什么修復(fù)方法可以確保 AP 模式下的
    發(fā)表于 07-17 06:13

    HarmonyOS 5】金融應(yīng)用開發(fā)鴻蒙組件實踐

    原生鴻蒙操作系統(tǒng)星河版,面向開發(fā)者開放申請,余承東宣布鴻蒙生態(tài)設(shè)備數(shù)達 8 億臺;建設(shè)銀行、郵儲銀行等完成鴻蒙原生應(yīng)用 Beta 版本開發(fā)
    的頭像 發(fā)表于 07-11 18:20 ?1136次閱讀
    【<b class='flag-5'>HarmonyOS</b> 5】金融應(yīng)用開發(fā)<b class='flag-5'>鴻蒙</b>組件實踐

    科普|公司的Wi-Fi,為什么這么慢?

    大家在公司上班,經(jīng)常會使用到Wi-Fi。最近這幾年,隨著時代的發(fā)展,高清視頻會議等大帶寬網(wǎng)絡(luò)應(yīng)用越來越普遍。而公司的網(wǎng)絡(luò),卻非常不給力,頻繁卡頓,嚴重影響使用體驗。哪怕IT的同事已經(jīng)把網(wǎng)絡(luò)優(yōu)化得很
    的頭像 發(fā)表于 06-20 06:06 ?1803次閱讀
    科普|公司的<b class='flag-5'>Wi-Fi</b>,為什么這么慢?

    Wi-Fi 8:開啟極高可靠性 (UHR) 連接的新紀元——1

    英國作家狄更斯在《雙城記》的開頭寫道:“這是最好的時代,也是最壞的時代。” 這句話套用在現(xiàn)今Wi-Fi 的市場現(xiàn)狀,何嘗不是驚人的相似? 怎么說呢?Wi-Fi 從被發(fā)明至今已經(jīng)經(jīng)過了20多年的迭代
    發(fā)表于 06-13 11:09

    連接到 WPA3_WPA2_PSK 或 WPA3_SAE Wi-Fi 網(wǎng)絡(luò)時系統(tǒng)掛起,為什么?

    問題:連接到 WPA3_WPA2_PSK 或 WPA3_SAE Wi-Fi 網(wǎng)絡(luò)時系統(tǒng)掛起 我遇到一個問題,當我嘗試連接啟用了CY_WCM_SECURITY_WPA3_WPA2_PSK安全性
    發(fā)表于 06-05 07:23
    十堰市| 抚宁县| 南岸区| 台湾省| 景洪市| 宁乡县| 建宁县| 西城区| 镇巴县| 宣恩县| 慈溪市| 鄯善县| 蓝山县| 伊金霍洛旗| 施甸县| 广丰县| 彩票| 灵山县| 铜山县| 洛川县| 新蔡县| 平陆县| 保康县| 高邑县| 宜阳县| 云林县| 霞浦县| 平安县| 抚顺市| 浦北县| 渭南市| 西丰县| 南平市| 城口县| 前郭尔| 全南县| 屯昌县| 阿图什市| 南通市| 株洲市| 临高县|