0 前言
大家好!我叫樂創物聯,我主要是做工業自動化方面和物聯網方面的。了解熟悉工業自動化領域的,也開發過物聯網相關的產品。我的初衷是做工業物聯網的,但這個系統太過於龐大,後續也會自主去學習一下。所以就先做小的系統,例如構建一整套智能家居系統,從硬體到軟體全系列。下面就開始這套智能家居系統是如何在物聯網基礎上構建。在這裡你可以0開始,然後到1質變,僅僅需要一起跟我學樂創物聯物聯網架構的學習。
回顧一下上節樂創物聯物聯網架構之硬體層中間件Arduino語言,從C語言基礎(數據類型、常量、變量、運算符、控制語句),Arduino的結構,然後Arduino的功能,最後Arduino的語言庫文件講解。本節就來講感知層下硬體層中間件Arduino數字量。感知層是物聯網最基礎的部分,就像人的五官一樣去感受世界。
1 Arduino 數字量
1)數字 I/O
pinMode(pin, mode) 數字IO口輸入輸出模式定義函數,pin表示為0~13, mode表示為INPUT或OUTPUT。digitalWrite(pin, value) 數字IO口輸出電平定義函數,pin表示為0~13,value表示為HIGH或LOW。比如定義HIGH可以驅動LED。int digitalRead(pin) 數字IO口讀輸入電平函數,pin表示為0~13,value表示為HIGH或LOW。比如可以讀數字傳感器。
2)時間函數
unsigned long millis() 返回時間函數(單位ms),該函數是指,當程序運行就開始計時並返回記錄的參數,該參數溢出大概需要50天時間。delay(ms) 延時函數(單位ms)。delayMicroseconds(us) 延時函數(單位us)。
3)串口收發函數
Serial.begin(speed) 串口定義波特率函數,speed表示波特率,如9600,19200等。int Serial.available() 判斷緩衝器狀態。int Serial.read() 讀串口並返回收到參數。Serial.flush() 清空緩衝器。Serial.print(data) 串口輸出數據。Serial.println(data) 串口輸出數據並帶回車符。
2 Blink例子
void setup() { // 初始化 名叫LED_BUILTIN引腳為輸出pinMode(LED_BUILTIN, OUTPUT);}// 主程序void loop() {digitalWrite(LED_BUILTIN, HIGH); // 高電平,打開燈delay(1000); // 延時1秒digitalWrite(LED_BUILTIN, LOW); // 低電平,關閉燈delay(1000); //延時1秒}
3 按鈕控制LED例子
int buttonPin = 2; // 按鍵的管腳定義int ledPin = 9; // LED燈管腳定義int buttonState = 0; // 存儲按鍵狀態值void setup() {pinMode(ledPin, OUTPUT); //設置LED管腳輸出模式pinMode(buttonPin, INPUT_PULLUP); //設置按鍵管腳上拉輸入模式Serial.begin(9600);}void loop() {buttonState = digitalRead(buttonPin); //讀取按鍵返回狀態值Serial.println(buttonState);if (buttonState == LOW) { // 若按鍵被按下delay(80); //等待跳過按鍵抖動的不穩定過程if (buttonState == LOW) // 若按鍵被按下{digitalWrite(ledPin, HIGH); // 點亮LED燈}}else {digitalWrite(ledPin, LOW); // 熄滅LED燈}}
按鍵消抖通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由於機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,為了不產生這種現象而作的措施就是按鍵消抖。
抖動時間的長短由按鍵的機械特性決定,一般為5ms~10ms。這是一個很重要的時間參數,在很多場合都要用到。常用軟體方法去抖,即檢測出鍵閉合後執行一個延時程序,5ms~10ms的延時,讓前沿抖動消失後再一次檢測鍵的狀態,如果仍保持閉合狀態電平,則確認為真正有鍵按下。當檢測到按鍵釋放後,也要給5ms~10ms的延時,待後沿抖動消失後才能轉入該鍵的處理程序。
4 結論
這些都是經過實踐檢驗的,本來想等開專欄,放專欄裡的,現在不掙錢,交個朋友!跟我一起入門物聯網吧!