Arduino 筆記 – Lab8 使用光敏电阻控制LED开关-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 39545|回复: 11

Arduino 筆記 – Lab8 使用光敏电阻控制LED开关

[复制链接]
发表于 2013-4-10 00:45 | 显示全部楼层 |阅读模式
實驗目的
利用光敏電阻做一個 LED 的自動開關,在光線不足時,自動打開 LED 燈,反之,光線充足時便關掉 LED 燈。
材料
  • 麵包板 x 1
  • Arduino 主板 x 1
  • 光敏電阻(photocell) x 1
  • 220 ohm 電阻 x 1
  • 10k ohm 電阻 x 1
  • 單心線 x N
接線
  • 光敏電阻一支腳接到 5V,另一支腳串接一顆 10k 電阻接到 analog pin 2
  • LED 接到 pin9 和 GND,長腳(陽極)串接一顆 220 ohm 電阻到 pin9,短腳(陰極)直接接到 GND
電路圖
程式碼
[mw_shl_code=cpp,true]// LAB8 - 讀取光敏電阻 (v1)

int photocellPin = 2; // 光敏電阻 (photocell) 接在 anallog pin 2
int photocellVal = 0; // photocell variable

void setup() {
  Serial.begin(9600);
}

void loop() {
  // 讀取光敏電阻並輸出到 Serial Port
  photocellVal = analogRead(photocellPin);
  Serial.println(photocellVal);  
  delay(100);      
}[/mw_shl_code]

假如一切順利的話,如下圖,打開 Serial Monitor 會看到 COM Port 不斷收到一串數據,那便是光敏電阻的讀值,試著用手去遮住光線,應該會看到電阻值跟著變小,代表光敏電阻的運作是正常的。
實驗二(Photocellv2.pde):加上 LED 的開關控制,在光線不足時,自動打開 LED 燈,反之,光線充足時便關掉 LED 燈
[mw_shl_code=cpp,true]// LAB8 - 讀取光敏電阻 (v2)

int photocellPin = 2; // 光敏電阻 (photocell) 接在 anallog pin 2
int photocellVal = 0; // photocell variable
int minLight = 200;   // 最小光線門檻值
int ledPin = 9;
int ledState = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // 讀取光敏電阻並輸出到 Serial Port
  photocellVal = analogRead(photocellPin);
  Serial.println(photocellVal);   
  
  // 光線不足時打開 LED
  if (photocellVal < minLight && ledState == 0) {
    digitalWrite(ledPin, HIGH); // turn on LED
    ledState = 1;
  }
  
  // 光線充足時關掉 LED
  if (photocellVal > minLight && ledState == 1) {
    digitalWrite(ledPin, LOW); // turn off LED
    ledState = 0;
  }  
  
  delay(100);      
}[/mw_shl_code]
发表于 2014-10-2 16:34 | 显示全部楼层
为什么每次我都看不到图片?
发表于 2014-2-27 16:44 | 显示全部楼层
xcy910617 发表于 2014-1-22 04:14
请教下楼主如果有多个LED灯,比如三个,如何做到根据光线的程度来控制三个LED灯,程度一:1号灯亮,程度二 ...

使用if对photocellVal进行比较然后分类

像是
[mw_shl_code=cpp,true]if (photocellVal<=100)
{
  //.....
}
else if (photocellVal <=300)
{
  //....
}
else
{
  //....
}[/mw_shl_code]
 发表于 2013-4-10 11:11
Array[tthread=zuojianzhong_hua, 孤叶寒冰]http://app.qlogo.cn/mbloghead/7b58ea60f2555b0d94f2[/tthread]
发表于 2013-6-24 11:18 | 显示全部楼层
来晚了,板凳!
发表于 2013-7-18 20:11 | 显示全部楼层
刚实验了一下,实现功能 赞一个
发表于 2014-1-22 04:14 | 显示全部楼层
请教下楼主如果有多个LED灯,比如三个,如何做到根据光线的程度来控制三个LED灯,程度一:1号灯亮,程度二:1,2号灯亮,程度三:1,2,3号灯都亮
发表于 2014-6-14 09:45 | 显示全部楼层
{:soso_e181:}{:soso_e181:}{:soso_e181:}{:soso_e181:}{:soso_e181:}{:soso_e181:}{:soso_e181:}
发表于 2017-1-31 23:39 | 显示全部楼层
成功,但是 anallog pin 2定义为A2
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 01:22 , Processed in 0.175261 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表