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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

和12岁小同志搞创客开发:手撕代码,做一款人体感应灯

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 和12岁小同志搞创客开发:手撕代码,做一款人体感应灯 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1、傳感器原理

2、代碼實踐


機緣巧合在網上認識一位12歲小同志,從零開始系統輔導其創客開發思維和技巧。

項目專欄:https://blog.csdn.net/m0_38106923/category_11097422.html?


本篇博文我們要手寫代碼做一款人體感應燈。要求:當有人經過的時候,LED燈就會自動亮起,人一旦走開,LED自動關閉了。這里用到的傳感器是人體紅外熱釋電運動傳感器,它是一種能檢測人或動物身體發射的紅外線而輸出電信號的傳感器。

1、傳感器原理

早在1938年,有人提出過利用熱釋電效應探測紅外輻射,但并未受到重視,直到六十年代,隨著激光、紅外技術的迅速發展,才又推動了對熱釋電效應的研究和對熱釋電晶體的應用。熱釋電晶體已廣泛用于紅外光譜儀、紅外遙感以及熱輻射探測器,它可以作為紅外激光的一種較理想的探測器。它目標正在被廣泛的應用到各種自動化控制裝置中。

熱釋電效應同壓電效應類似,是指由于溫度的變化而引起晶體表面荷電的現象。熱釋電傳感器是對溫度敏感的傳感器。它由陶瓷氧化物或壓電晶體元件組成,在元件兩個表面做成電極,在傳感器監測范圍內溫度有ΔT的變化時,熱釋電效應會在兩個電極上會產生電荷ΔQ,即在兩電極之間產生一微弱的電壓ΔV。由于它的輸出阻抗極高,在傳感器中有一個場效應管進行阻抗變換。熱釋電效應所產生的電荷ΔQ會被空氣中的離子所結合而消失,即當環境溫度穩定不變時,ΔT=0,則傳感器無輸出。當人體進入檢測區,因人體溫度與環境溫度有差別,產生ΔT,則有ΔT輸出;若人體進入檢測區后不動,則溫度沒有變化,傳感器也沒有輸出了。所以這種傳感器檢測人體或者動物的活動傳感。

由實驗證明,傳感器不加光學透鏡(也稱菲涅爾透鏡),其檢測距離小于2米,而加上光學透鏡后,其檢測距離可大于7米。

2、代碼實踐

整個裝置分為三個部分,輸入,控制與輸出。人體紅外熱釋電運動傳感器為輸入設備,Arduino就是控制設備,LED發光模塊就是輸出設備。

由于人體紅外熱釋電運動傳感器為數字量的傳感器,所以接數字口。LED輸出信號也是數字量,同樣接數字口。

傳感器連線效果如下所示:

實現代碼如下所示:

int sensorPin = 2;             //傳感器連接到數字2
int ledPin =  13;              //LED連接到數字13
int sensorState = 0;           //變量sensorState用于存儲傳感器狀態void setup() {pinMode(ledPin, OUTPUT);         //LED為輸出設備pinMode(sensorPin, INPUT);      //傳感器為輸入設備
}void loop(){sensorState = digitalRead(sensorPin);    //讀取傳感器的值if (sensorState == HIGH) {       //如果為高,LED亮digitalWrite(ledPin, HIGH);  } else {                               //否則,LED滅digitalWrite(ledPin, LOW); }
}

程序開始在setup()中通過pinMode()函數將LED設置為輸出模式,人體紅外熱釋電運動傳感器設置為輸入模式。

有了輸入設備,我要讀取輸入設備的值,才能進行之后的判斷,所以loop函數一開始就是讀取人體紅外熱釋電運動傳感器的值。
讀取數字傳感器狀態的函數是:digitalRead(),函數格式如下所示:

digitalRead(pin)

這個函數是用來讀取數字引腳狀態,高電平還是低電平。人體紅外熱釋電傳感器有人或者動物走動時,讀到高電平,否則讀到低電平。代碼的后半段就是對判斷出來的值來執行相應動作。(HIGH:高電平,代表1,LOW:低電平,代表0) 。

數字傳感器只會讀到兩個值(HIGH和LOW)。

這里要用到新的一個語句:if語句,使用格式如下所示:

(1)
if(表達式){
語句;
}
(2)
if(表達式){
語句;
}else{語句;}
(3)
if(表達式){
語句;
}else if(表達式){語句;}
...
else{語句;}

表達式是指我們的判斷條件,通常為一些關系式或邏輯式,也可是直接表示某—數值。如果if表達式條件為真,則執行if中的語句。表達式條件為假,則跳出if語句。

程序中“==”是比較運算符,用于判斷兩個數值是否相等,記得是“雙等號”而“=”是賦值運算符,把等號右邊的值賦給左邊。常用運算符如下所示:

  • ==(等于)
  • !=(不等于)
  • <(小于)
  • >(大于)
  • <=(小于等于)
  • >=(大于等于)

特別說明下,小于等于和大于等于,<和=之間不能留有空格,否則編譯不通過

當然,除了比較運算符外,程序也可以用的+、一、*、/(加、減、乘、除)這些常用的算術運算符。


拓展學習:和12歲小同志搞創客開發:如何驅動各類型傳感器?

總結

以上是生活随笔為你收集整理的和12岁小同志搞创客开发:手撕代码,做一款人体感应灯的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。