利用arduino nano开发板配合oled、温度传感器、光照传感器、湿度传感器设计一个花盆
利用arduino nano開發板配合oled、溫度傳感器、光照傳感器、濕度傳感器設計一個花盆
完整項目地址:
https://github.com/linxinloningg/arduino_chip_core.git
前言:
本示例采用的開發板:arduino nano;
? oled:0.96英寸oled(iic接口);
? 溫度傳感器:ds18b20;
? 濕度傳感器:
? 光照傳感器:
示例將不分析代碼的如何編寫,只分析編寫思路,因為我也只是才學了一天arduino就寫這個程序,很多代碼都是沿用之前51單片機中的代碼,只不過51單片機采用的是位帶操作,換到arduino就要采用相關語句才能操作其中的io口。
iic配置:
由于oled是采用iic接口通信的,萬年不變定律,iic相關操作函數貼上:
起始信號:void I2cStart(void);
終止信號:void I2cStop(void);
發送字節數據函數:unsigned char I2cSendByte(unsigned char dat);
oled配置:
有了iic操作函數,接著根據oled命令表封裝相關操作函數,不知道oled操作命令的可以翻我之前的文章,在oled配置那里有詳細介紹,搬過來用即可
oled寫命令函數:void oled_Write_cmd(unsigned char cmd);
oled寫數據函數:void oled_Write_data(unsigned char dat);
oled清屏函數:void oled_clear(void);
oled初始化函數:void oled_initial(void);
oled顯示函數,這個函數是確定將要顯示的位置,以及數據采樣的格式:void oled_put_char_16x16(unsigned char x,unsigned char y,unsigned char t);
//設置顯示坐標函數,t為0時,字符為8x16t為1時,字符為16x16
然后通過oled_Write_data(),將采樣到的字符數據寫入即可顯示。
ds18b20配置(在之前文章也有講過ds18b20如何驅動及運用):
根據ds18b20操作手冊:
檢測是否有ds18b20:unsigned char DS18B20_Check(void);
ds18b20初始化:void DS18B20_Init(void);
復位信號:void Rest_sign(void);
讀一位數據:unsigned char DS18B20_Read_Bit(void);
讀一字節數據:unsigned char DS18B20_Read_Byte(void);
寫一字節數據:void DS18B20_Write_Byte(unsigned char dat);
開始信號:void DS18B20_Start(void);
獲取溫度函數:void get_Temperature(void);
光照、土壤濕度傳感器配置:
光照和土壤濕度傳感器類似,都有DO和AO;
DO是當測量值高于設定的閾值時會輸出高電平,可以通過nano的模擬輸入引腳或者數字輸入輸出引腳捕獲,設定的閾值是通過旋轉傳感器上的電位計設定的,順時針旋轉會變大,反之變小。
AO是通過測量值的大小轉而輸出不同的電壓,nano模擬輸入(ADC)的采樣精度是01024,所以當我們采樣AO上的電壓時將會顯示01024之間某個值value,通過用value/1024*100,即可得到光照和土壤濕潤的程度,我只能說是程度,而不是真正的光照強度和土壤濕度,因為光照強度和土壤濕度的計算相對復雜,我并不知道只有一個電壓值怎樣才能換算出。
DO判斷,看是否超過閾值:void scan_DO(void);
獲取光照程度:void get_Light_level(void);值存放在全局變量Light_level,調用即可。
獲取濕潤程度:void get_Humidity_level(void);值存放在全局Humidity_level,調用即可。
setup()和loop():
最后附上效果圖,和源碼地址:
總結
以上是生活随笔為你收集整理的利用arduino nano开发板配合oled、温度传感器、光照传感器、湿度传感器设计一个花盆的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从“月饼现象”谈吉利转型
- 下一篇: 大数据在营销中的应用