日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用arduino nano开发板配合oled、温度传感器、光照传感器、湿度传感器设计一个花盆

發(fā)布時間:2024/3/26 编程问答 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用arduino nano开发板配合oled、温度传感器、光照传感器、湿度传感器设计一个花盆 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

利用arduino nano開發(fā)板配合oled、溫度傳感器、光照傳感器、濕度傳感器設(shè)計一個花盆

完整項目地址:
https://github.com/linxinloningg/arduino_chip_core.git

前言:

本示例采用的開發(fā)板:arduino nano;

? oled:0.96英寸oled(iic接口);

? 溫度傳感器:ds18b20;

? 濕度傳感器:

? 光照傳感器:

示例將不分析代碼的如何編寫,只分析編寫思路,因為我也只是才學了一天arduino就寫這個程序,很多代碼都是沿用之前51單片機中的代碼,只不過51單片機采用的是位帶操作,換到arduino就要采用相關(guān)語句才能操作其中的io口。

iic配置:

由于oled是采用iic接口通信的,萬年不變定律,iic相關(guān)操作函數(shù)貼上:

起始信號:void I2cStart(void);

終止信號:void I2cStop(void);

發(fā)送字節(jié)數(shù)據(jù)函數(shù):unsigned char I2cSendByte(unsigned char dat);

oled配置:

有了iic操作函數(shù),接著根據(jù)oled命令表封裝相關(guān)操作函數(shù),不知道oled操作命令的可以翻我之前的文章,在oled配置那里有詳細介紹,搬過來用即可

oled寫命令函數(shù):void oled_Write_cmd(unsigned char cmd);

oled寫數(shù)據(jù)函數(shù):void oled_Write_data(unsigned char dat);

oled清屏函數(shù):void oled_clear(void);

oled初始化函數(shù):void oled_initial(void);

oled顯示函數(shù),這個函數(shù)是確定將要顯示的位置,以及數(shù)據(jù)采樣的格式:void oled_put_char_16x16(unsigned char x,unsigned char y,unsigned char t);
//設(shè)置顯示坐標函數(shù),t為0時,字符為8x16t為1時,字符為16x16

然后通過oled_Write_data(),將采樣到的字符數(shù)據(jù)寫入即可顯示。

ds18b20配置(在之前文章也有講過ds18b20如何驅(qū)動及運用):

根據(jù)ds18b20操作手冊:

檢測是否有ds18b20:unsigned char DS18B20_Check(void);

ds18b20初始化:void DS18B20_Init(void);

復(fù)位信號:void Rest_sign(void);

讀一位數(shù)據(jù):unsigned char DS18B20_Read_Bit(void);

讀一字節(jié)數(shù)據(jù):unsigned char DS18B20_Read_Byte(void);

寫一字節(jié)數(shù)據(jù):void DS18B20_Write_Byte(unsigned char dat);

開始信號:void DS18B20_Start(void);

獲取溫度函數(shù):void get_Temperature(void);

光照、土壤濕度傳感器配置:

光照和土壤濕度傳感器類似,都有DO和AO;

DO是當測量值高于設(shè)定的閾值時會輸出高電平,可以通過nano的模擬輸入引腳或者數(shù)字輸入輸出引腳捕獲,設(shè)定的閾值是通過旋轉(zhuǎn)傳感器上的電位計設(shè)定的,順時針旋轉(zhuǎn)會變大,反之變小。

AO是通過測量值的大小轉(zhuǎn)而輸出不同的電壓,nano模擬輸入(ADC)的采樣精度是01024,所以當我們采樣AO上的電壓時將會顯示01024之間某個值value,通過用value/1024*100,即可得到光照和土壤濕潤的程度,我只能說是程度,而不是真正的光照強度和土壤濕度,因為光照強度和土壤濕度的計算相對復(fù)雜,我并不知道只有一個電壓值怎樣才能換算出。

DO判斷,看是否超過閾值:void scan_DO(void);

獲取光照程度:void get_Light_level(void);值存放在全局變量Light_level,調(diào)用即可。

獲取濕潤程度:void get_Humidity_level(void);值存放在全局Humidity_level,調(diào)用即可。

setup()和loop():

最后附上效果圖,和源碼地址:

總結(jié)

以上是生活随笔為你收集整理的利用arduino nano开发板配合oled、温度传感器、光照传感器、湿度传感器设计一个花盆的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。