久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: [資料分享] 人人都可以DIY的Arduino UNO智能燈(三) [打印本頁]

作者: z3512641347    時(shí)間: 2017-6-23 10:34
標(biāo)題: [資料分享] 人人都可以DIY的Arduino UNO智能燈(三)
本文出自機(jī)智云論壇,版權(quán)所有@bigfanofloT,轉(zhuǎn)載請注明出處
前面說到了設(shè)備聯(lián)網(wǎng),接下來是進(jìn)行MCU端的開發(fā)。本節(jié)詳細(xì)的描述了如何使用下載的MCU工程,如何根據(jù)自動(dòng)生成的代碼提示去填充用戶業(yè)務(wù)相關(guān)的代碼。

關(guān)于MCU代碼自動(dòng)生成的原理:
借助MCU代碼自動(dòng)生成工具,自動(dòng)生成的代碼已經(jīng)根據(jù)用戶定義的產(chǎn)品數(shù)據(jù)點(diǎn)信息,并針對STM32esp8266等平臺(tái),生成了對應(yīng)的機(jī)智云串口協(xié)議層代碼,用戶只需要調(diào)用相應(yīng)的API接口或添加相應(yīng)的邏輯處理即可。代碼框架如下圖所示:




其原理是:自動(dòng)生成的代碼實(shí)現(xiàn)了機(jī)智云通信協(xié)議的解析與封包、傳感器數(shù)據(jù)與通信數(shù)據(jù)的轉(zhuǎn)換邏輯,并封裝成了簡單的API,且提供了多種平臺(tái)的實(shí)例代碼。當(dāng)設(shè)備收到云端或APP端的數(shù)據(jù)后,程序會(huì)將數(shù)據(jù)轉(zhuǎn)換成對應(yīng)的事件并通知到應(yīng)用層,開發(fā)者只需要在對應(yīng)的事件處理邏輯中添加傳感器的控制函數(shù),就可以完成產(chǎn)品的開發(fā)。


五、MCU端編程

Step1解壓下載的工程,找到Gizwits文件夾,把它復(fù)制/移動(dòng)到arduinoIDE安裝目錄下的libraries文件夾下。例如我的是D:\Arduino\libraries


Step2:接下來找到工程目錄下的examples文件夾,里面有2個(gè)文件夾networkConfigsimpleTry,進(jìn)去后有同名的Arduino文件,后綴名為.ino。


使用ArduinoIDE打開這2個(gè)文件:


simpleTry.ino是本次項(xiàng)目工程,里面有程序框架,以及告知了用戶在哪里填充接入機(jī)智云的代碼;networkConfig.ino是配置入網(wǎng)的例程,因?yàn)槌R姷闹悄苡布a(chǎn)品是沒有鍵盤和顯示屏的,因此需要一種技術(shù)來讓它獲取路由器的SSID和密碼,首選是通過手機(jī)APP輔助。這里簡單的介紹一下方法,通過一個(gè)按鍵來觸發(fā)設(shè)備進(jìn)入配網(wǎng)模式,然后手機(jī)APP把SSID和密碼廣播給設(shè)備,原理如下圖:


這里需要說明的是,機(jī)智云開發(fā)的配網(wǎng)方案有2種,取名為AirLink和SoftAP,設(shè)備第一次聯(lián)網(wǎng)是要進(jìn)行配置的,以后它就記住了這個(gè)路由器的SSID和密碼,無需配置,除非更改了SSID、密碼等情況發(fā)生,就需要重新進(jìn)行配網(wǎng)操作。


Step3WS2812B是一個(gè)集控制電路與發(fā)光電路于一體的智能外控LED光源。其外型與一個(gè)5050LED燈珠相同,每個(gè)元件即為一個(gè)像素點(diǎn),只需占用MCU一個(gè)IO即可驅(qū)動(dòng)。我們先安裝WS2812B型RGBLED的驅(qū)動(dòng)庫Adafruit_NeoPixel,下載地址為https://github.com/adafruit/Adafruit_NeoPixel,這個(gè)庫的使用說明可以參考https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library

把它解壓后拷貝到ArduinoIDE安裝目錄的\libraries文件夾下,例如我的目錄是D:\Arduino\libraries


先不用急著添加應(yīng)用代碼,先在simpleTry.ino中添加一下硬件模塊底層驅(qū)動(dòng)的測試代碼(可下載高清大圖查看):


RGB LED測試OK的話是這樣子的效果:


Step4我們把networkConfig.ino中的部分代碼(按鍵驅(qū)動(dòng)等,處理配網(wǎng)問題)拷貝到本次項(xiàng)目的工程simpleTry.ino中,注意凡是串口打印調(diào)試的都要注釋掉,因?yàn)槲覀兊腁rduino UNO R3只有一個(gè)串口,要用來和WiFi模塊通信。然后需要根據(jù)注釋填充數(shù)據(jù)點(diǎn)代碼,1是手機(jī)端APP控制RGB LED亮滅,2是手機(jī)端APP單獨(dú)控制RGB LED的RGB顏色值,3是手機(jī)端APP一鍵控制RGB LED的組合顏色值,具體的接口都給出了詳細(xì)的注釋,我們直接填充就可以啦~

如下圖(下載高清大圖放大查看效果更好哦~),左邊為我們在開發(fā)者中心下載的工程文件simpleTry.ino,右邊為修改好后的,作為一個(gè)對比,可以清晰的知道需要添加的用戶代碼。


第30~149行藍(lán)色方框?yàn)榕c按鍵觸發(fā)配網(wǎng)有關(guān)的代碼。
第168~191行為WIFI狀態(tài)處理有關(guān)代碼,定義了2個(gè)按鍵key1、key2分別來觸發(fā)不同的配網(wǎng)方式,板載黃色LED連接到了管腳13,我們把它作為配網(wǎng)操作過程的狀態(tài)提示,本次采用的方式是:通過手機(jī)APP輔助,長按key2 5秒后板載LED亮起,WIFI模塊連接路由器成功后則熄滅,關(guān)于這些按鍵和WIFI狀態(tài)處理的代碼是從networkConfig.ino拷貝來的。
第11~16行代碼定義RGB LED使用的管腳和個(gè)數(shù)以及創(chuàng)建了piexls對象;
第20~28行是自己利用Adafruit_NeoPixel類方法編寫的一個(gè)能夠控制所有RGB LED的函數(shù);
第154~162行初始化了RGB LED、板載LED、按鍵。

一個(gè)重要問題是,很多人會(huì)問,我生成了MCU工程后,要到哪里添加代碼呢?怎么修改呢?

第195~231行,黃色方框注釋內(nèi)容就是自動(dòng)生成的,用于幫助用戶填充業(yè)務(wù)代碼。
第232~256行代碼基本就是黃色方框代碼的拷貝,這就是我們在云端創(chuàng)建的用于描述產(chǎn)品功能的數(shù)據(jù)點(diǎn)在MCU代碼里的表達(dá)方式,因?yàn)閷τ诳刂芁ED,需要保持顏色變量值不被銷毀,所以我們把定義的數(shù)據(jù)點(diǎn)相關(guān)5個(gè)變量加了static關(guān)鍵字使之成為靜態(tài)變量,當(dāng)然你也可以直接把它們放到函數(shù)外面作為全局變量。
第258~266行實(shí)現(xiàn)的是開啟/關(guān)閉紅色燈的功能。
第268~274行實(shí)現(xiàn)的是設(shè)定LED組合顏色的功能。
第276行實(shí)現(xiàn)的是設(shè)定LED紅色值、設(shè)定LED綠色值、設(shè)定LED藍(lán)色值的功能。

Step5:至此MCU端代碼修改完畢,編譯并燒錄代碼到Arduino UNO板卡;




作者: 123123123自行車    時(shí)間: 2018-6-6 09:40
高清大圖哪里下載啊...




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美一级黑人aaaaaaa做受 | 午夜小视频在线播放 | 国产大学生情侣呻吟视频 | 日韩精品在线观看一区二区三区 | 九九九精品视频 | 黄色日本片 | 日韩精品成人网 | 国产福利资源 | 精品免费国产一区二区三区四区介绍 | 欧美极品一区二区 | jlzzjlzz欧美大全 | 国产黄色在线观看 | 一区二区三区四区在线视频 | 中文字幕在线一区二区三区 | 亚洲精品视频免费观看 | 成人av观看| 精品视频导航 | 国产一区二区三区在线视频 | 国产乱码精品一区二区三区五月婷 | 精品久久久久久 | 伊人精品 | 国产精品二区三区 | 美女国内精品自产拍在线播放 | 日日日操 | 亚洲福利在线视频 | 噜久寡妇噜噜久久寡妇 | 久在线 | 亚洲精品一区二区另类图片 | 欧美日韩综合精品 | 国产激情一区二区三区 | 日本精品久久久久久久 | 黄色小视频入口 | 成人在线视频观看 | 久草免费视| 99热国产免费 | 日本精品一区二区三区在线观看视频 | 欧美视频在线看 | 欧美日韩亚洲在线 | 国产在线精品一区二区 | 色就干 | 国产精品一区二区三区在线 |