Arduino 第十六章:pir紅外人體傳感器練習

Arduino 第十六章:PIR 傳感器練習

一、引言

在 Arduino 的眾多有趣項目中,傳感器的應用是非常重要的一部分。今天我們要學習的主角是 PIR(被動紅外)傳感器。PIR 傳感器能夠檢測人體發出的紅外線,常用于安防系統、自動照明等場景。通過本次練習,我們將深入了解 PIR 傳感器與 Arduino 的結合使用,學會如何讀取傳感器數據并根據數據做出相應的反應。

二、所需材料

  1. Arduino 開發板:推薦使用 Arduino Uno,它是初學者常用且功能豐富的開發板。
  2. PIR 傳感器:常見的如 HC-SR501 型號,這是一款比較容易獲取且價格實惠的 PIR 傳感器。
  3. 杜邦線:若干,用于連接 Arduino 開發板和 PIR 傳感器。
  4. LED 燈:一個,用于直觀顯示 PIR 傳感器的檢測結果。
  5. 面包板:方便進行電路連接和布線。

三、PIR 傳感器介紹

PIR 傳感器的工作原理基于人體發出的紅外線。當有人進入傳感器的檢測范圍時,人體發出的紅外線會使傳感器內部的熱釋電元件產生變化,從而輸出一個電信號。一般來說,PIR 傳感器有三個引腳:VCC(電源正極)、GND(接地)和 OUT(信號輸出)。

以 HC-SR501 為例,它還具有一些可調節的參數,比如檢測靈敏度和延遲時間。通過調節傳感器上的電位器,可以改變這些參數以適應不同的使用場景。

四、硬件連接

  1. 將 PIR 傳感器的 VCC 引腳通過杜邦線連接到 Arduino 開發板的 5V 引腳,為傳感器提供電源。
  2. 把 PIR 傳感器的 GND 引腳連接到 Arduino 開發板的 GND 引腳,實現接地。
  3. 將 PIR 傳感器的 OUT 引腳連接到 Arduino 開發板的一個數字引腳上,比如數字引腳 2。這樣,傳感器的輸出信號就可以被 Arduino 讀取。
  4. 把 LED 燈的正極通過一個限流電阻(例如 220 歐姆)連接到 Arduino 開發板的數字引腳 13,負極連接到 GND 引腳。限流電阻的作用是防止電流過大損壞 LED 燈。
    在這里插入圖片描述

五、代碼編寫

打開 Arduino IDE,新建一個項目,輸入以下代碼:

const int pirPin = 5; // 定義 PIR 傳感器連接的引腳為數字引腳 5
const int ledPin = 4; // 定義 LED 燈連接的引腳為數字引腳 4
int pirState = LOW; // 初始化 PIR 傳感器狀態為低電平
int val = 0; // 用于存儲讀取到的 PIR 傳感器的值void setup() {pinMode(pirPin, INPUT); // 將 PIR 傳感器引腳設置為輸入模式pinMode(ledPin, OUTPUT); // 將 LED 燈引腳設置為輸出模式Serial.begin(9600); // 初始化串口通信,波特率為 9600
}void loop() {val = digitalRead(pirPin); // 讀取 PIR 傳感器的值if (val == HIGH && pirState == LOW) {// 如果檢測到高電平且之前狀態為低電平,說明有人進入檢測范圍pirState = HIGH;digitalWrite(ledPin, HIGH); // 點亮 LED 燈Serial.println("Motion detected!"); // 通過串口打印檢測到運動的信息} else if (val == LOW && pirState == HIGH) {// 如果檢測到低電平且之前狀態為高電平,說明人離開檢測范圍pirState = LOW;digitalWrite(ledPin, LOW); // 熄滅 LED 燈Serial.println("Motion stopped!"); // 通過串口打印運動停止的信息}delay(100); // 延遲 100 毫秒,避免頻繁檢測
}

六、代碼解釋

  1. 變量定義
    • const int pirPin = 5;:定義 PIR 傳感器連接的引腳為數字引腳 2。
    • const int ledPin = 4;:定義 LED 燈連接的引腳為數字引腳 13。
    • int pirState = LOW;:初始化 PIR 傳感器的狀態為低電平,用于記錄傳感器的當前狀態。
    • int val = 0;:用于存儲從 PIR 傳感器讀取到的值。
  2. setup()函數
    • pinMode(pirPin, INPUT);:將 PIR 傳感器連接的引腳設置為輸入模式,以便讀取傳感器的信號。
    • pinMode(ledPin, OUTPUT);:將 LED 燈連接的引腳設置為輸出模式,用于控制 LED 燈的亮滅。
    • Serial.begin(9600);:初始化串口通信,設置波特率為 9600,方便通過串口打印信息。
  3. loop()函數
    • val = digitalRead(pirPin);:讀取 PIR 傳感器的值,并將其存儲在變量 val 中。
    • if (val == HIGH && pirState == LOW):當讀取到的傳感器值為高電平且之前傳感器狀態為低電平時,說明有人進入了檢測范圍。此時將傳感器狀態更新為高電平(pirState = HIGH;),點亮 LED 燈(digitalWrite(ledPin, HIGH);),并通過串口打印檢測到運動的信息(Serial.println("Motion detected!");)。
    • else if (val == LOW && pirState == HIGH):當讀取到的傳感器值為低電平且之前傳感器狀態為高電平時,說明人離開了檢測范圍。此時將傳感器狀態更新為低電平(pirState = LOW;),熄滅 LED 燈(digitalWrite(ledPin, LOW);),并通過串口打印運動停止的信息(Serial.println("Motion stopped!");)。
    • delay(100);:添加一個 100 毫秒的延遲,避免頻繁檢測,減少資源消耗。

七、測試與調試

  1. 將編寫好的代碼上傳到 Arduino 開發板。
  2. 確保 PIR 傳感器和 LED 燈的連接正確,并且 PIR 傳感器的檢測范圍沒有被遮擋。
  3. 打開 Arduino IDE 的串口監視器,設置波特率為 9600。
  4. 當有人進入 PIR 傳感器的檢測范圍時,LED 燈應該點亮,并且串口監視器會顯示“Motion detected!”的信息;當人離開檢測范圍時,LED 燈熄滅,串口監視器會顯示“Motion stopped!”的信息。
  5. 如果程序沒有按照預期運行,可以檢查硬件連接是否正確,代碼是否存在語法錯誤,或者嘗試調整 PIR 傳感器的靈敏度和延遲時間。

八、拓展應用

  1. 安防報警系統:將 PIR 傳感器與蜂鳴器結合,當檢測到有人進入時,不僅點亮 LED 燈,還讓蜂鳴器發出警報聲,實現簡單的安防報警功能。
  2. 自動照明系統:在一些需要自動控制照明的場景中,如走廊、衛生間等,當 PIR 傳感器檢測到有人時,自動打開燈光,人離開后一段時間自動關閉燈光,達到節能的目的。
  3. 智能家居控制:將 PIR 傳感器的檢測結果與其他智能家居設備(如智能插座、智能窗簾等)集成,實現更智能化的家居控制,比如當檢測到有人進入房間時,自動打開空調和窗簾。

通過本次對 PIR 傳感器的練習,相信你已經對它的工作原理和在 Arduino 中的應用有了更深入的了解。希望你能夠發揮創意,利用 PIR 傳感器開發出更多有趣和實用的項目。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70360.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70360.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70360.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CV -- YOLOv8 圖像分割(GPU環境)

目錄 參考視頻: 標注 JSON轉為TXT 訓練 驗證 參考視頻: 使用 Yolov8 自定義數據集進行圖像分割_嗶哩嗶哩_bilibili 標注 數據集: 我使用的是一些蘋果數據集,可以在我的csdn資源中下載: https://download.csdn.net/do…

深入理解 lua_KFunction 和 lua_CFunction

在 Lua C API 中,lua_KFunction 和 lua_CFunction 是兩個核心概念,尤其在處理協程和 C 函數擴展時扮演著至關重要的角色。lua_CFunction 作為一種 C 函數類型,允許開發者將 C 函數注冊到 Lua 環境中,使得這些 C 函數可以在 Lua 腳本中被調用,進而實現 Lua 的功能擴展。而 …

基于微信小程序的電影院訂票選座系統的設計與實現,SSM+Vue+畢業論文+開題報告+任務書+指導搭建視頻

本系統包含用戶、管理員兩個角色。 用戶角色:注冊登錄、查看首頁電影信息推薦、查看電影詳情并進行收藏預定、查看電影資訊、在線客服、管理個人訂單等。 管理員角色:登錄后臺、管理電影類型、管理放映廳信息、管理電影信息、管理用戶信息、管理訂單等。…

【Linux網絡編程】應用層協議HTTP(請求方法,狀態碼,重定向,cookie,session)

🎁個人主頁:我們的五年 🔍系列專欄:Linux網絡編程 🌷追光的人,終會萬丈光芒 🎉歡迎大家點贊👍評論📝收藏?文章 ? Linux網絡編程筆記: https://blog.cs…

Vue3 打造 Windows 桌面個性高效組件工具

軟件介紹 Widgets 這款基于 Vue3 構建的開源 Windows 桌面小部件工具超實用。 其多樣化組件庫涵蓋超 20 種,從倒計時、打工進度等實用工具,到抖音熱榜等實時資訊組件應有盡有,各組件獨立運行,滿足多場景需求。 高度自定義布局支持…

Tailwind CSS 和 UnoCSS簡單比較

一、Tailwind CSS 和 UnoCSS簡介 Tailwind CSS 和 UnoCSS 都是流行的原子化 CSS 框架,它們有很多相似之處,但也存在一些明顯的區別,以下從多個方面對它們進行比較: 1. 基本概念和原理 Tailwind CSS 是最早提出并推動原子化 CSS…

什么是語料清洗、預訓練、指令微調、強化學習、內容安全; 什么是megatron,deepspeed,vllm推理加速框架

什么是語料清洗、預訓練、指令微調、強化學習、內容安全 目錄 什么是語料清洗、預訓練、指令微調、強化學習、內容安全語料清洗預訓練指令微調強化學習內容安全什么是megatron,deepspeed,vllm推理加速框架語料清洗 語料清洗是對原始文本數據進行處理的過程,旨在去除數據中的…

C++(23):lambda可以省略()

C越來越多的使用了lambda&#xff0c;C23也進一步的放寬了對lambda的限制&#xff0c;這一次&#xff0c;如果lambda沒有參數列表&#xff0c;那么可以直接省略掉()&#xff1a; #include <iostream> using namespace std;void func() {auto f []{cout<<"in…

自制操作系統分享第四天

今天要做什么&#xff1f; &#xff08;1&#xff09;分享 我們上面已經說過INT 0x13這種指令&#xff08;調用BIOS的INT指令&#xff09;&#xff0c;我們知道這是調用BIOS的0x13函數&#xff0c;但還不明白它到底是干什么用的&#xff1a; AH 0x02;# 讀盤 AH 0x03;# 寫…

DeepSeek預測25考研分數線

25考研分數馬上要出了。 目前&#xff0c;多所大學已經陸續給出了分數查分時間&#xff0c;綜合往年情況來看&#xff0c;每年的查分時間一般集中在2月底。 等待出成績的日子&#xff0c;學子們的心情是萬分焦急&#xff0c;小編用最近爆火的“活人感”十足的DeepSeek幫大家預…

Android 動態加入Activity 時 manifest 注冊報錯解決。使用manifestPlaceholders 占位

需求如下&#xff1a; 項目 測試demo 有多個渠道&#xff0c;部分渠道包含支付功能&#xff0c;在主測試代碼外&#xff0c;需要一個單獨 Activity 調用測試代碼。 MainActivityPayActivity渠道A包含不包含渠道B包含包含 因為支付功能需要引入對應的 moudule&#xff0c;因此…

FRRouting配置與OSPF介紹,配置,命令,bfd算法:

文章目錄 1、frrouting的配置&#xff1a;2、ospf2.1、檢測和維護鄰居關系2.2、ospfDR和BDR2.3、odpf鄰居表2.4、ospf常用命令2.5、bfd配置 1、frrouting的配置&#xff1a; sudo service zebra start sudo service ospfd start telnet localhost 2604 en configure termina…

Perplexity 開源DeepSeek-R1 模型新版本 R1-1776

引言 在人工智能領域&#xff0c;模型的更新迭代如同科技界的時尚潮流&#xff0c;不斷推陳出新。今天&#xff0c;我們要介紹的是Perplexity AI開源的新版推理模型——DeepSeek-R1 1776。這個版本不僅繼承了前代的強大性能&#xff0c;還在公正性和準確性上進行了顯著提升。那…

關系中出現這10個信號,離分手就不遠了(愛情友情都適用)

親密關系的隱形裂痕 在一個陽光明媚卻略顯蕭瑟的午后&#xff0c;咖啡杯里的咖啡已經涼透。小李盯著手機屏幕&#xff0c;那些曾經熱烈的對話記錄現在看起來如此陌生&#xff0c;仿佛隔著一層薄薄的霧。她終于意識到&#xff0c;這段關系已經悄然走向盡頭。 親密關系是一場精心…

馬斯克Grok3使用入口和訂閱教程(白嫖150刀API額度)

文章目錄 馬斯克Grok3使用入口和訂閱教程(白嫖150刀API額度)前言介紹如何訂閱X上Premium服務國內訂閱X的Premium教程 白嫖教程小結 馬斯克Grok3使用入口和訂閱教程(白嫖150刀API額度) 前言介紹 重點&#xff1a;Grok 3僅對X上的Premium用戶開放。你需要訂閱X的Premium服務才能…

相機開發調中廣角和焦距有什么不一樣

在相機中,調整廣角和調整焦距是兩個不同的概念,它們的作用和實現方式也不同。以下是兩者的詳細對比和解釋: 1. 調整廣角 定義 廣角是指相機的視野范圍(Field of View, FOV)。調整廣角實際上是調整相機的視野范圍。更廣的視野意味著可以捕捉到更多的場景內容(更寬的畫面)…

讓大模型幫我設計crnn網絡及可運行demo,gpt4o豆包qwendeepseek-r1

prompt 使用 crnn 提取圖像特征&#xff0c;給出圖像好壞的二分類結果&#xff0c;寫清楚代碼備注&#xff0c;注釋清楚向量維度大小&#xff0c;并給出一個可運行的 demo1、GPT-4o 以下是一個使用 CRNN&#xff08;Convolutional Recurrent Neural Network&#xff09;提取圖…

DeepBI助力跨境電商打破流量壟斷:AI驅動的亞馬遜廣告投放新打法

#亞馬遜廣告優化# 親愛的亞馬遜跨境電商賣家們&#xff0c;是否曾因亞馬遜的廣告打法不清晰&#xff0c;或是糾結于亞馬遜廣告費用過高&#xff0c;或是為亞馬遜電商廣告怎么投放合適的問題而苦惱&#xff1f;在競爭激烈的亞馬遜市場中&#xff0c;廣告投放效果平平&#xff0…

前端基礎入門:HTML、CSS 和 JavaScript

在現代網頁開發中,前端技術扮演著至關重要的角色。無論是個人網站、企業官網,還是復雜的 Web 應用程序,前端開發的基礎技術 HTML、CSS 和 JavaScript 都是每個開發者必須掌握的核心技能。本文將詳細介紹這三者的基本概念及其應用 一、HTML——網頁的骨架 HTML(HyperText …

單元測試junit5

一、idea 安裝自動化生成插件jcode5 安裝可能不成功&#xff0c;嘗試多次安裝&#xff1b; 安裝成功后&#xff0c;重啟idea&#xff0c;再次確認安裝是否成功&#xff1b; 二、在需要生成單元測試代碼的模塊的pom中引入依賴 ......<parent><groupId>org.springf…