★本系列文章已集結成冊,和系列文不同的是:
- 本書使用大量的圖解來說明LED系列、多種感測器等原理。
- 補足系列文程式碼的解說,增加逐行程式碼的詳細解說!
- 全彩的書籍,用圖解的方式,讓讀者來理解Johnny-Five各種API的功能與效果,讓你不會只讀文字看到想睡覺而學不起來。
歡迎大家做出自己想要的玩具,為了樂趣而學習,讓學習變成你的樂趣!ヽ(・×・´)ゞ
讓Arduino也能用JavaScript創造出屬於自己的作品!★購書連結-天瓏網路書局:
https://www.tenlong.com.tw/products/9789864345328《IoT沒那麼難!新手用 JavaScript 入門做自己的玩具!(iT邦幫忙鐵人賽系列書)》
博客來、金石堂、momo、誠品、PChome、讀冊,均有販售喔!─=≡Σ((( つ•̀ω•́)つ
ISBN:9789864345328
我絕對不會說我玩過暗黑3 (´∩ω∩`)
光 敏 電 阻 ~
謎之音:這...可以幹嘛...
本魯宅:做小夜燈.....不!我們要做中二的小夜燈!(●` 艸 ´)
光敏電阻是一種利用「光電導效應」使電阻值變化的特殊電阻。
光敏電阻和入射光強弱有直接關係,
當光強度增加,則電阻減小;光強度減小,則電阻增大。
光敏電阻內有處於穩定狀態的電子~
但當有光線照射時,穩定狀態的電子受到激發而成為自由電子,自由電子愈多電阻就會越小。
恩....原理了解一下就好~(大誤
相關資料:
維基百科 - 光敏電阻
https://w.wiki/9NQ
由於光的強弱也是連續的類比訊號。
所以我們要把光敏電阻的 pin 腳接到 Arduino 的類比輸入腳(Analog In)。
因為光敏電阻也是電阻的一種,當光照越強,它的電阻也會越小;
依照歐姆定律來說,
電阻也會越小,就表示流過的電流就會越大,而導致Arduino板子燒毀...
使用前需要加上一顆限流電阻。
水管的大小不會變 (沒看過水管會忽大忽小吧XD)
水龍頭提供阻力,決定了水流量的大小,
水龍頭開越大代表阻力越小,水流出來的量越多!
假設你突然把水龍頭全開,這時沒有水龍頭控制水量,水一定會用噴的流出來...
當你的洗臉盆裝滿水承受不住那麼大的水量時,水就會溢出來淹的到處都是!
在電子電路上也是一樣,
電阻變小電流就會上升,如果IC負載不了就爆了...
而限流電阻的腳色就像是在水龍頭上加裝節水開關,開多大的水都會限制一定的水流量~
所以我們必須在使用之前加上一顆限流電阻的原因就是這樣啦!
希望這樣講解讓大家比較能了解一點(* ˙∀˙)~♥
歐姆定律 公式
V = I*R當電壓不變時,電流和電阻成反比;
電阻越小,電流愈大
不好意思....字很醜很久沒寫字了.....Orz
※假設電壓固定 5V
※假設初始電阻值 R = 330Ω
則初始狀態
I = 5V / 330Ω → I = 0.015A (安培) → I = 15mA (毫安培)
結果:
初始狀態的電流是 15mA (毫安培)
=> 光照變強,電阻值變小,假設光敏電阻阻值降為 100Ω
I = 5/100Ω → I = 0.050A (安培) → I = 50mA (毫安培)
結果:
被強光照射下的光敏電阻的電流升高為 50mA (毫安培)
引用這篇網誌 - 「 十種錯誤操作而毀壞Arduino的方式 」 寫到
Method #1: 將任一個 I/O Pins 與 GND 連接形成短路
Method #1: Shorting I/O Pins to Ground每個針腳的最大絕對電流值為 40mA 。每個針腳典型內部的電阻只有 25 歐姆,一個接到地面的短路可以允許多達 200mA 的電流流動,這些電流遠遠超過並足以銷毀微控制器的針腳。
由剛剛手算的結果來看,
當阻值變小趨近於0時,其實對 Arduino 的晶片是有燒毀的風險在!
所以我們會加一顆限流電阻來確保電阻值在一定的範圍內,而不會過低。
了解限流電阻的重要性後~來看電路圖(シ_ _)シ
電路圖
介紹完後,我們開始來實作吧~
準備需要的東西有~ヽ(・×・´)ゞ
Johnny Five - photoresistor
http://johnny-five.io/examples/photoresistor/
開始吧!(  ̄□ ̄)/ <( ̄ㄧ ̄ ) <( ̄ㄧ ̄ )
這次的程式比較簡單,用 Johnny-Five 的 Sensor 元件即可,寫法和昨天一模一樣~
var five = require('johnny-five');
var board = new five.Board();
board.on('ready', function() {
// new 一個 Johnny-Five Sensor 物件,宣告為 photoresistor
photoresistor = new five.Sensor({
pin: 'A0',
freq: 1000,
});
photoresistor.on('data', function() {
// 讀取光敏電阻的值
console.log(this.value);
});
});
接下來,一樣 node
執行程式下去~
$ node photoresistor.js
江~江~ σ´∀´)σ
(PS:限流電阻用110Ω的話)
可以看到 0.5 秒偵測一次數值~
一開始的環境光數值大概在 700 ~ 800,我遮住光敏電阻後阻斷光線,數值會標高到900多,光敏電阻接收強光後數值降到200 ~ 400之間。
恩~這個數值好像可以拿來做什麼玩具.....嘿嘿嘿~( ≖◞౪◟≖)
明天我們來玩一個好玩的,敬請期待XD
想到鐵人賽完賽之後,下班回家應該會很空虛吧...
唉~魯宅工程師的生活,往往就是這麼樸實無華,且枯燥~
.
.
.才不會~(其實我已經想好要來玩什麼NS遊戲了XD
本系列的程式碼皆會上傳到 GitHub 上開源
2019ironman-JS-IoT :
https://github.com/tinatyc/2019ironman-JS-IoT
喜歡按個星星吧~乾蝦乾蝦<(_ _)>
團隊系列文:
CSScoke - 金魚都能懂的這個網頁畫面怎麼切 - 金魚都能懂了你還怕學不會嗎
Hina Hina - 陣列大亂鬥
阿斬 - Python 程式交易 30 天新手入門
Clarence - LINE bot 好好玩 30 天玩轉 LINE API
塔塔默 - 用Python開發的網頁不能放到Github上?Lektor說可以!!
Vita Ora - 好 Js 不學嗎 !? JavaScript 入門中的入門。
同步連載於blogger-King 學習前端之人生