1. 程式人生 > >[入門] Arduino教程 Lesson 10 -- 感光燈

[入門] Arduino教程 Lesson 10 -- 感光燈

這個專案中將介紹一個新元件——光敏電阻。從名字可以看出,這個器件是依賴光作用的。在黑暗的環境中,光敏電阻具有非常高阻值的電阻。光線越強,電阻值反而越低。通過讀取這個電阻值,就可以檢查光線的亮暗了。我們這裡選用的是光敏二極體,光敏二極體其實就是光敏電阻中的一種,只是它還具有正負極性。
我們這次做的這個非常好玩,叫做感光燈。它能隨著光線明暗而選擇是否亮燈。這個光感燈非常適合用做夜晚使用的小夜燈。晚上睡覺的時候,家中燈關掉後,感光燈感覺到周圍環境變暗了,就自動亮起。到了白天,天亮後,感光燈就又恢復到關閉的狀態了。

所需材料
  • 1×  5mm LED燈
  • 1×  220歐電阻
  • 1×  10k電阻
  • 1×  光敏二極體
  • 1×  手電筒(可選)

STEP 1: 硬體連線
LED燈還是和以往一樣的接法。而光敏二極體是有正負極的,和LED一樣,也是遵循長腳(+),短腳(-)的原則。還需注意的與光敏二極體相連的電阻是10k,而不是220Ω。

 

STEP 2:輸入程式碼
完成硬體連線後,開啟Arduino IDE,輸入下面這段程式碼。
  1. int LED = 13;                     //設定LED燈為數字引腳13
  2. int val = 0;                      //設定模擬引腳0讀取光敏二極體的電壓值
  3. void setup(){
  4.       pinMode(LED,OUTPUT);         // LED為輸出模式
  5.       Serial.begin(9600);        // 串列埠波特率設定為9600
  6. }
  7. void loop(){
  8.       val = analogRead(0);         // 讀取電壓值0~1023
  9.       Serial.println(val);         // 串列埠檢視電壓值的變化
  10.       if(val<1000){                // 一旦小於設定的值,LED燈關閉
  11.               digitalWrite(LED,LOW);
  12.       }else{                        // 否則LED亮起
  13.               digitalWrite(LED,HIGH);
  14.       }
  15.       delay(10);                   // 延時10ms
  16. }
複製程式碼 下載完程式碼後,LED燈會亮起,這時,你需要拿一個手電筒照你的光敏二極體(用手機後置攝像頭的閃光燈應該也可以),這時你會發現LED燈神奇般的自動熄滅。但是,一旦你的手電筒移開,LED燈又再次亮起。


STEP 3:程式碼回顧
這段程式碼想必你一定能看的懂了吧?我就簡單說一下,可能不明白的地方。

我們之講LM35溫度感測器的時候,也用到了用模擬口讀值。強調了,模擬量不需要輸入輸出模式。這裡,也是同樣用模擬口用來讀取光敏二極體的模擬值。

一旦有光照射,讀出的模擬值就會減小,這裡設定的上限值是1000。這個值可以按你需要的亮度來選取。選取方法:先把整個裝置放在你想讓LED關閉的一個環境下,然後開啟串列埠,檢視串列埠顯示的值,把這個值替換掉程式碼中的1000。從串列埠讀值,是除錯程式碼一種很好的方法。


STEP 4:硬體回顧
這裡接觸了一種新元件——光敏器件。這類器件都是將光訊號變成電訊號的特殊電子元件。元件內部有特殊的光導材料,外部用塑料或者玻璃封裝。光線照射在這類光導材料上時,光敏器件的電阻值就會迅速變小。光敏元件有很多,光敏電阻,光敏二極體,光敏三極體等等。不過原理是差不多的。我們這裡選用的是光敏二極體。

光敏二極體其實是光敏電阻中的一種。所謂二極體,就是有正負極的,所以在連線的時候也要注意正負極。

光敏電阻在黑暗的環境中,具有非常高阻值的電阻。光線越強,電阻值反而越低。隨著兩端電阻值的減小,電壓也就相應減小(從模擬口讀到的值也就變小,模擬口0~1023的值對應是0~5V的電壓值)。

那電壓為什麼會減小呢?那就要用到我們初中學的物理知識——分壓原理。讓我們看一個典型的分壓電路,看看它是如何工作的。

 

輸入電壓Vin(我們這裡也就是5V),連在兩個電阻上,只測量通過電阻R2的電壓Vout,其電壓將小於輸入電壓。計算R2兩端的Vout電壓公式是:
 

在我們這裡,R1代表的就是10k電阻,R2代表的就是光敏二極體。本來R2在黑暗中,值很大很大,所以Vout也就很大,接近5V。一旦有光線照射的話,R2的值就會迅速減小,所以Vout也就隨之減小了,讀取的電壓值就小。通過上面這個公式可以看出, R1選取不能太小,最好在1k~10k左右,否則比值變化不明顯。

相關推薦

[入門] Arduino教程 Lesson 10 -- 感光

這個專案中將介紹一個新元件——光敏電阻。從名字可以看出,這個器件是依賴光作用的。在黑暗的環境中,光敏電阻具有非常高阻值的電阻。光線越強,電阻值反而越低。通過讀取這個電阻值,就可以檢查光線的亮暗了。我們這裡選用的是光敏二極體,光敏二極體其實就是光敏電阻中的一種,只是它還具有正

[入門] Arduino教程 Lesson 14--自制風扇

這次,我們會做一個小風扇。同時會接觸兩件新元件——繼電器、直流電機。繼電器,我們可以理解為是用較小的電流去控制較大電流的一種“自動開關”。在這裡,繼電器是用來控制電機轉動的。所需材料 1×  5mm LED燈 2×  220歐電阻 1×  按鈕 1×  繼電器 HRS1H-

Arduino教程-10. 內部積體電路(I2C)

Arduino 內部積體電路 通訊介面I2C I2C介面的原意是"Inter IC",只用兩條線來連線其他元件,為了方便同一個電路板上的各個元件相互通訊。 I2C至少有一個主控端(master,通常由微處理器擔任,負責傳送時鐘和地址訊號)和至少一個從端(slave,通常是感測器元件)

Weex入門教程10,vue-router 路由

介紹 用 Vue.js + vue-router 建立單頁應用,是非常簡單的。使用 Vue.js 時,我們就已經把元件組合成一個應用了,當你要把 vue-router 加進來,只需要配置元件和路由對映,然後告訴 vue-router 在哪裡渲染它們。

Arduino教程5:製作流水

目錄前言物品清單硬體連線程式講解思考與嘗試前言    在這一篇文章中我將帶大家做一個簡單而且又有趣好玩的東西——流水燈,在製作的過程中我們將學習如何使用Arduino進行數字輸出(開關LED燈)並瞭解如何通過程式實現多個LED燈有順序的點亮與熄滅。物品清單    arduin

Arduino IDE搭建ESP8266開發環境,檔案下載過慢解決方法 | ESP-01製作WiFi開關教程,改造宿舍

1. Arduino IDE配置ESP8266環境 參考:https://www.jianshu.com/p/cb0274d612b5 首先從 Arduino 官網 下載最新版本的 Arduino IDE 軟體並安裝。 安裝完成以後,進入首選項(Preferences),找到附加開發板管理器地址(Additi

linux學習入門標準教程(2)

linux標準教程Linux系統篇2.1 Linux系統管理經過前兩章的學習,咱們現已可以獨立裝置Linux體系,現已把握了Linux學習的竅門,那接下來,咱們將體系的來了解Linux體系各目錄、權限及常用命令的運用。2.1. 1 Linux目錄初識通過前面的學習,我們已經能夠獨立安裝完一個linux

最全Pycharm教程10)——Pycharm調試器總篇

通過 pro pri order 相關配置 points 信息 發現 blank   最全Pycharm教程(1)——定制外觀   最全Pycharm教程(2)——代碼風格   最全Pycharm教程(3)——代碼的調試、執行   最全Pycharm教程(4)—

Python入門系列教程(二)

字符 小寫 無符號 bsp div width raw_input abc body 字符串 1.字符串輸出 name = ‘xiaoming‘ print("姓名:%s"%name) 2.字符串輸入 userName = raw_input(‘請輸

Python入門系列教程(五)函數

st3 python入門 test print 缺省 .com 教程 技術 log 全局變量 修改全局變量 a=100 def test(): global a a=200 print a 多個返回值 缺省參數 d

MVC 5 + EF6 入門完整教程14 -- 動態生成面包屑導航

maps setting i++ log item 文檔 應該 動態生成 內容 上篇文章我們完成了 動態生成多級菜單 這個實用組件。 本篇文章我們要開發另一個實用組件:面包屑導航。 面包屑導航(BreadcrumbNavigation)這個概念來自童話故事"漢賽爾和格萊特"

MVC5+EF6 入門完整教程

taf bag details 視圖 clu role pre 階段 驗證 前一陣子臨時有事,這篇文章發布間隔比較長,我們先回顧下之前的內容,每篇文章用一句話總結重點。 文章一 MVC核心概念簡介,一個基本MVC項目結構 文章二 通過開發一個最基本的登錄界面,介紹了如何從C

MVC5+EF6 入門完整教程12--靈活控制Action權限

全局 基本功 -1 str 條件 context tac 完整 suse 大家久等了。 本篇專題主要講述MVC中的權限方案。 權限控制是每個系統都必須解決的問題,也是園子裏討論最多的專題之一。 前面的系列文章中我們用到了 SysUser, SysRole, SysUserR

MVC5+EF6 入門完整教程

好的 ring 改變 替換 使用 需要 註釋 mod num 本篇我們針對表格顯示添加一些新功能。 前面我們已經講解過表格顯示數據了,現在我們添加三個常用功能: 對顯示結果進行排序、過濾、分頁。 文章提綱 理論基礎/前置準備 詳細步驟 總結 前置準備 – 應

MVC5+EF6 入門完整教程

crud 新建 用戶角色 tro mic acc where shtml pos 本篇是第一階段的完結篇。 學完這篇後,你應該可以利用MVC進行完整項目的開發了。 本篇主要講述多表關聯數據的更新,以及如何使用原生SQL。 文章提綱 多表關聯數據更新 如何使用原生SQ

全網首創ISE入門教程

加法 表示 cnblogs htm padding 九月 雲服務器 對他 實驗   轉眼間我已經大三了,現在成為了實驗室的負責人,對於下一屆學生的納新重任就交到了我的手上,想采取不同的方法暑假就可能對他們進行一些培訓,所以制作了此教程,說實話,在網上還沒有找到關於ISE的

duilib入門簡明教程 -- VS環境配置(2) (轉)

dem mil 國際 程序設計 界面 環境 消息 商業 href 原文轉自:http://www.cnblogs.com/Alberl/p/3342030.html 既然是入門教程,那當然得基礎點,因為搜索duilib相關資料時,發現有些小夥伴到處都是編譯錯誤,

duilib入門簡明教程 -- 響應按鈕事件(4) (轉)

gif attach yui world lpc handler str and lba 原文轉自 http://www.cnblogs.com/Alberl/p/3343610.html 上一個Hello World的教程裏有一句代碼是這樣的:CControl

HTTP監視器charles入門使用教程分享---http/s packet monitors---ubuntu installation

pro ckey create blog repo -- can cor free APT repository Charles has an APT repository for Debian-based Linux distributions. NB: The

C++入門經典-例4.10-使用static變量實現累加

cpp lose div turn num play ati col one 1:靜態變量static可以分為靜態局部變量和靜態全局變量,靜態局部變量的值在函數調用結束後不消失,靜態全局變量只能在本源文件中使用。 靜態變量屬於靜態存儲方式,它具有以下特點: (1)靜態變量在