用Arduino制作光控LED灯的亮与灭
Arduino 入门到精通 例程2-LED 闪烁

Arduino 入门到精通例程2
2、LED 闪烁实验
LED 小灯实验是比较基础的实验之一,上一个“Hello World!”实验里已经利用到了Arduino 自带的LED,这次我们利用其他I/O 口和外接直插LED 灯来完成这个实验,我们需要的实验器材除了每个实验都必须的Arduino 控制器和USB 下载线以外的
其它器件如下:
红色M5 直插LED*1
220Ω直插电阻*1
面包板*1
面包板跳线*1 扎
下一步我们按照下面的小灯实验原理图链接实物图,这里我们使用数字10 接口。
使用发光二极管LED 时,要连接限流电阻,这里为220Ω电阻,否则电流过大会烧毁发光二极管。
小灯实验原理图
实物图
按照上图链接好电路后,就可以开始编写程序了,我们还是让LED 小灯闪烁,点亮1 秒熄灭1 秒。
这个程序很简单与Arduino 自带的例程里的Blink 相似只是将13 数字接口换做10 数字接口。
参考程序如下:
int ledPin = 10; //定义数字10 接口
void setup()
{
pinMode(ledPin, OUTPUT);//定义小灯接口为输出接口
}
void loop()
{
digitalWrite(ledPin, HIGH); //点亮小灯
delay(1000); //延时1 秒
digitalWrite(ledPin, LOW); //熄灭小灯
delay(1000); // 延时1 秒
}
下载完程序就可以看到我们的10 口外接小灯在闪烁了,这样我们的小灯闪烁实验
就完成了。
arduino oled 亮度

arduino oled 亮度标题:Arduino OLED亮度调节方式详解引言:OLED(Organic Light Emitting Diode)技术作为一种新兴的显示技术,具备自发光、超薄、快速响应等优点,并且在Arduino开发领域内得到了广泛的应用。
在使用Arduino开发板控制OLED显示屏时,如何合理地调节亮度是一个常见的问题。
本文将会一步一步地详细回答关于Arduino OLED亮度调节的问题。
第一步:了解Arduino OLED显示屏的亮度控制原理在了解如何调节Arduino OLED显示屏的亮度之前,我们首先需要了解OLED 显示屏的亮度控制原理。
OLED显示屏的亮度主要由两个因素决定:电流和时间。
电流的大小决定了OLED发光元素的亮度,时间则影响了亮度的持续时间。
因此,要控制OLED显示屏的亮度,我们需要调整这两个因素中的一个或两个。
第二步:使用PWM调整电流Pulse Width Modulation(PWM)是一种调制方式,可以通过调整高电平和低电平的时间比例来控制电流的平均值,从而实现亮度调节。
Arduino的各个引脚中,有一些引脚是支持PWM输出的,我们可以利用这些引脚来控制OLED 显示屏的亮度。
具体实现方法如下:1. 将OLED的电源引脚(VCC)连接到Arduino的电源引脚。
2. 将OLED的地引脚(GND)连接到Arduino的地引脚。
3. 将OLED的SCK引脚连接到Arduino的PWM引脚(例如Pin 9)。
4. 在Arduino代码中,使用analogWrite()函数将PWM引脚输出的占空比(0-255)传递给OLED的亮度控制引脚。
这样,通过调整analogWrite()函数传递的占空比,即可实现OLED亮度的调节。
第三步:软件调整亮度除了使用PWM来调整OLED亮度之外,我们还可以通过软件来实现亮度的调整。
软件调整亮度的原理是利用Arduino对OLED每一个像素点进行控制,通过改变每个像素点的亮度值来达到调整整个显示屏亮度的目的。
基于Arduino的LED灯分时控制系统

基于 Arduino的 LED灯分时控制系统摘要:本文介绍了一种基于Arduino 的智能定时LED灯,利用 Arduino 作为主控系统, 结合定时启动、智能控制等技术,等实现在不同的情况下对LED灯进行智能控制。
该系统具有自动定时的功能,操作方便,成本低,适合大量推广使用。
主要用于大型活动及商城的展示。
关键词:Arduino,控制,程序,定时,LED灯一、引言5G来了,物联网的应用越来越广泛,很多物联网产品进入了人们的生活。
基于LED的电子设备就是一个典型的例子。
现代电子,从红绿灯到电视屏幕,都与LED息息相关,所以有必要学习、设计、或者了解LED产品。
Arduino是2005年在意大利诞生的可编程微控制器电路板。
它已经有15年的历史了。
Arduino是一个使用知识共享协议的开源平台。
它的硬件原理图、PCB图、软件源代码等资源都可以免费获取、使用、修改和再发布。
随着时间的推移,Arduino开发板的型号也不断丰富,从Arduino-uno、Arduinomega2560、Arduino-Pro Mini等开发出了许多不同的型号。
本文将LED与Arduino微控制器联系起来,并基于Arduino微控制器进行了一系列有趣的LED开发。
二、硬件设计2.1 LED灯的介绍LED(Light emitting diode),发光二极管,是一种将电能转化为可见光的固态半导体器件。
它可以直接将电转化为光。
LED灯泡是取代传统白炽灯的新型节能灯。
LED又称二极管灯泡,在发光原理、节能环保等方面远远优于传统照明产品,也称LED节能灯泡。
LED的核心是半导体芯片。
芯片的一端接在支架上,一端是负极,另一端接在电源的正极,这样整个芯片用环氧树脂封装。
半导体芯片由两部分组成。
一部分是p型半导体,空穴占优势,另一部分是n型半导体,主要是电子。
但是当两个半导体相连时,它们之间就形成了p-n结。
当电流通过导线作用于芯片时,电子被推入p区,在那里电子与空穴重新结合,然后以光子的形式发射能量。
Arduino机器人课程--1.6光控LED

传感器与Arduino的连接
红线: 黑线: 蓝线:
接VCC 接GND 接S
光线传感器
光控LED
光线强LED灭,光线暗LED亮。 如何读取光线值?
该模块可以读取模拟口的值。
我们如何知道获取的光线值呢?
实用命令里面的
串口监视器
输出的是数字值,就用与数字常量结合 输出的是模拟值,就用与模拟常量结合
串口输出光线值
光控LED参考程序
课堂总结
1.掌握了模拟口的输入。 2.认识和掌握了传感器的一般使用。 3.掌握了串口的输出。 4.编写程序实现光控LED。
布置作业
1.上网查找更多功能的传感器,并思考如何用这些传 感器控制LED。
2.阅读教材里面的视野拓展,尝试实现光线越暗LED 越亮,光线越强LED越暗,甚至熄灭。
1.6 光控LED
闪烁LED
什么是传感器?
传感器是把外界输入的非电信号转换成电信号的装置。
传感器类型
模拟传感器:光线传感器等
类型
数字传感器:DHT11传感器等 开关传感器:按钮等
光线传感器
光线传感器也称环境光线传感器,该传线传感器接是一种模拟传感器。
用手机控制Arduino上的LED灯(使用ESP8266模块的AT指令方式)

用手机控制Arduino上的LED灯(使用ESP8266模块的AT指令方式)ESP8266的设置方法五花八门,网上各种都有,让人眼花缭乱。
对于Arduino新手来说ESP8266入门的话相对有点复杂。
一时半会儿难以理解。
不过,这不能影响到ESP8266的强大,通过对ESP8266无线模块在Arduino上的AT指令方式的学习,我们知道了,ESP8266可以设置成自动进入透传模式。
让ESP8266无线模块做服务端,来实现我们所需要的功能。
现在,我们将通过这一个功能,让手机和ESP8266进行互相通信,并控制Arduino上的LED灯。
(原理是让手机和ESP8266无线模块在同一个WIFI网络里,连接同一个路由器,ESP8266为客户端、手机建立服务端)。
通过此教程示例让创客进一步了解和掌握ESP8266的使用。
所需材料:arduino主控板一块ESP8266无线模块一个LED发光二极管一个220欧姆电阻一个小面包板一个杜邦线若干手机一部(安卓手机)第一步:通过USB-TTL连接ESP8266设置AT指令,保存透传模式。
(整个实验的关键!!)==接线方式==*VCC—-3.3*GND–GND*CH_PD–3.3*RX–TX*TX–RX==设置方式==AT指令(按照您的模块固件版本,选择AT指令进行设置):ESP8266-AT固件版本V1.0以上版本(ESP8266为最新AT固件版本:1.5.4.1)//设置WiFi应用模式为StationAT+CWMODE=3//连接到WiFi路由器,请将SSID替换为路由器名称,Password替换为路由器WiFi密码AT+CWJAP="SSID","Password"//连接单连模式AT+CIPMUX=0//设置为透传模式AT+CIPMODE=1//进入透传模式,并保存(进入后模块就一直为透传模式,需要退出则取消发送新行,发送+++),IP地址为远端设备地址,例:我用手机控制,那么我的手机在路由器WIFI上的IP地址为192.168.1.110AT+SAVETRANSLINK=1,”192.168.1.110”,8080,”TCP”ESP8266-AT固件版本V0.9.5.2版本(老版本固件)//设置WiFi应用模式为StationAT+CWMODE=1//连接到WiFi路由器,请将SSID替换为路由器名称,Password替换为路由器WiFi密码AT+CWJAP="SSID","Password"//连接手机端服务器,IP地址为远端设备地址,例:我用手机控制,那么我的手机在路由器WIFI上的IP地址为192.168.1.110AT+CIPSTART="TCP","192.168.1.110",8181//设置为透传模式AT+CIPMODE=1//进入透传模式(进入后模块就一直为透传模式,需要退出则取消发送新行,发送+++)AT+CIPSEND上述设置完成后,模块自动成为透传模块。
Arduino入门教程 —LED灯闪烁

Arduino 入门教程(2)—LED 灯闪烁回顾一下 Lesson 1 的内容,我简单分了以下几点:了解 Arduino 软件编辑环境-- Arduino IDE如何通过 Arduino IDE 下载一个 Blink 程序"//" 和"/*...*/"的含义setup()和 loop()函数的重要性及作用pinMode(pin,mode)函数digitalWrite(pin,value)函数delay(ms)函数开始新的一课!这次我们还是同样要用 Blink 程序,有所不同的是,这里我们需要外接一个 LED 到数字引脚,而不是使用焊在 Arduino 板上的 LED 13(也就是“L”灯)。
便于我们能清晰的认识 LED 的工作原理及一些硬件电路的搭建。
STEP 1:需要准备的东西:1 ×DFduino UNO R3(以及配套 USB 数据线)STEP 2:硬件连接首先,从我们的套件中取出 Prototype shield 扩展板和面包板,将面包板背面的双面胶歇下,粘贴到 Prototype shield 扩展板上。
再取出 UNO,把贴有面包板 Prototype shield 扩展板插到 UNO 上。
取出所有元件,按照下图连接。
图中的蓝色与红色的线用彩色面包线连接,使用面包板上其他孔也没关系,只要元件和线的连接顺序与上图保持一致即可。
确保 LED 连接是否正确的,LED 长脚为+,短脚为-,完成连接后,给 Arduino 接上 USB 数据线,供电,准备下载程序。
STEP 3:输入代码打开 Arduino IDE,在编辑框中输入样例代码 1-1 所示代码。
(输入代码也是一种学习编程的过程,虽然提供代码的压缩包,但还是建议初学者自己输入代码,亲身体验一下。
)样例代码1-1:1.3. 描述:LED 每隔一秒交替亮灭一次5. int ledPin = 10;6. void setup() {8. }9. void loop() {14. }15.输入完毕后,点击 IDE 的“校验(Verify)”,查看输入代码是否通过编译。
Arduino创意设计:智能光控灯

J a n u a r y 2 0 1 8 27 '
DO~D1 3 是 数 字端 口,D 0 、D1 是Ar d u i n o 板 与 计 算 机 之 间的通信 端 口 ,一般 不要 占用 。
Ar du i no
R o me o 板1 块
ห้องสมุดไป่ตู้
9 V 电池 1 套
U S B 数据 线 1 根
连 接 的 时 候 ,光 线 传 感 器 的蓝 线 接 模 拟端 口 , 红 线接 V CC,黑线 接 GND ;L E D灯 的绿 线 接数 字端
有了光线传感器, 手机可以根据所缝 臻的箍线拳自 . 动 调节磷摹的毫繇 当 蜀 惫嶝 线变毫时,手 机屏幕 亮度会增加; : 当 境光线变暗时, 手机屏 幕糍 会随之降低| o 遵种醺讣希 保驴 甚 睹, 葡 违带省了电 量。 今关, 我们就刺用A r d u i n q l 井源硬件来设计 款智能 光羟灯。
口,红线 接V C C,黑线 接GN D。
光线传 感器 1 个
26 J a n u a r y 2 0 1 8
L E D 灯2 个
用U S B 数据线 将Ar d u i n o 板 连接 至计 算机 。 启动 图形 化 编程 软件 Mi x l y ,正 确设 .  ̄ Ar d u i n o 板 的型 号及 端 口号 ( 图7)。
, 串口
、
每_ I O . 嗣奎 显示I 硖 光娥传黯 的蕾 .
稚
图 1 1
编 译 并 上 传 代 码 ,打 开 串 口监 视 器 观 察 光 线 传
感器 的值 ( 图9)。
1 8色灯亮
图 1 2
蓝 色 灯 亮
Arduino初学4:Arduino与PWM控制LED灯的亮暗连续变化

4. Arduino与PWM控制LED灯的亮暗连续变化4.1 问题描述:如何用Arduino控制LED灯的亮暗连续变化在前面的实例当中,咱们都是用基于Arduino主板来控制LED灯的亮或者暗的变化。
从电压的角度解释就是只有高、低两种电平,从数字模拟的角度就是只有1和0两个数值。
但是不能是LED的电压在高到低的变化,中间过程没有得到体现。
但有时要有,比如在歌舞厅或演唱会上,为了达到很好的灯光效果,有时要使灯的亮暗变化是个渐渐的过程,即是个连续变化的过程。
为了实现这个目的,必须使Arduino能控制输出一个连续变化的电压,这就用到我们这一章要用到的新概念PWM(Pulse Width Modulation),脉冲宽度调制,简称脉宽调制。
这种调制技术广泛应用在控制舵机连续运转,音乐播放,功率控制等具体实例中。
4.2 所需材料这章所需材料非常简单,和第一章的一样。
只不过在Arduino主板上采用的端口不一样,不能随便接入,如表4‐1所示。
表4-1:所需材料名称数量作用备注序号1 Arduino软件1套提供IDE环境最新版本1.052 Arduino UNO开发板1块控制主板各种版本均可3 USB线1条烧录程序随板子配送4 杜邦线若干条连接组件可选5 发光二极管(LED)1个 LED闪烁可选6 电阻220欧限流可选7 面包板可选所需材料的实物如图4‐5所示。
4.3 实验原理在陈述实验原理之前,给出与实验相关的概念。
数字信号:是指幅度取值离散的,其值被限制在有限域范围内,如二进制码就是一种离散信号。
其特点是抗干扰能力强,易于数字信号处理。
现在很多信号基本上都是数字信号,如手机信号,计算机处理信息等等。
模拟信号:是指其信号波形是连续变化的,咱们可以在任意的瞬间取值。
由于模拟信号易受干扰影响,不容易处理,一般都是先将模拟信号离散成数字信号,以便处理。
两者的区别如图4‐1所示。
图4‐1 数字信号与模拟信号的区别PWM,脉宽调制:即通过一系列脉冲的宽带来调制(或控制)来等效得到所需要的波形(包括形状和幅值),比如图4‐2中,咱们可以通过很多脉冲来恢复得到正弦波形。
Arduino控制LED灯闪烁

SmartArduino1.Arduino控制LED灯闪烁QQ:1234337721.1问题描述:如何利用Arduino控制板子上的LED灯不停地闪烁?通过这个非常简单的Arduino控制实验,将对Arduino的编程环境及其语言有所了解。
其原理非常简单,就是Arduino板子上本身带有的LED灯,其对应的端口为控制板上的13端口。
利用Arduino控制板不断地使13端口的电压由低到高(或由高到低)循环变化。
从而使得其对应的LED灯由暗到亮(或由亮到暗)的变化,LED灯如此看起来就是在不停地闪烁。
当然,我们也可以在Arduino控制板的其它端口另外添加一个LED灯来实现此实验的目的,但需要更多的材料。
1.2所需装备为了实现Arduino控制板13端口的LED灯不停地闪烁,只需要以下装备:表1-1:所需材料所需材料序号名称数量作用备注1 Arduino软件1套提供IDE环境最新版本1.052 Arduino UNO开发板1块控制主板各种版本均可3 USB线1条烧录程序随板子配送4 杜邦线若干条连接组件可选5 发光二极管(LED)1个 LED闪烁可选6 电阻220欧限流可选7 面包板可选(1)Arduino软件目前,Arduino的IDE (Integrated Development Environment)集成开发环境官网已经更新到1.05版本,可在官网/en/Main/Software下载到。
安装完成后即可使用。
由于后面的实验都是基于此版本进行的,在后面将不再提此开发平台;(2)Arduino UNO开发板由于开源,Arduino的开发板有很多,大小、颜色虽不同,但完成的主要功能都是一样的。
随便选择一块即可,主要有如图1-1所示。
其主要功能介绍请参考认识Arduino 部分内容.(3)USB线一般这是随Arduino控制板一起配送的,其主要作用是将代码烧录到Arduino控制板中,如图1-2所示。
arduino入门第四课 按键控制LED

想来大家也完了几天的LED了,总感觉用程序控制LED不是很爽,不能实打实的人机互动,所以,今天制作了一期,人机互动的例子带给大家:用按钮控制LED。
但是呢,不能把按钮单纯的作为开关,一按就亮,一放就灭,那样大家会鄙视我的,把Arduino控制器拿掉依旧有效,所以呢,我们提高了点水平,将开关作为延时开关来使用,按下开关后1秒钟,灯才会亮,灯亮5秒后才熄灭,这样大家就能依据这个例子,自己延伸出很多好玩的玩法出来。
首先,老规矩介绍用到的元器件:我们来看一下电路连接示意图图大家应该看到了从开关单独有一个10k欧姆的电阻接到地线,这个电阻是作为下拉电阻使用,具体介绍请参阅:下拉电阻然后我们就来将电路搭建出来同样的,我们的布线不是最优布局,也不是最漂亮的,大家在面包板布线上应该多发挥自己的创意,力求做到简单易读,美观大方~接下来将我们的程序下载进去ARDUINO 代码复制打印1./*2.作者:极客工坊3.时间:2012年5月24日4.IDE版本号:1.0.15.发布地址:6.作用:当你按下按钮后1秒钟,灯会亮,然后维持5秒钟,熄灭7.*/8.9.void setup()10.{11.pinMode(4,INPUT); //将4号数字口设置为输入状态,13号数字口设置为输出状态12.pinMode(13,OUTPUT);13.}14.15.void loop()16.{17.int n =digitalRead(4); //创建一个变量n,将4号数字口的状态采集出来赋值给他。
18.if(n==HIGH)//判断n是否为高电平,如果是执行下面的语句,不是则跳过。
19.{20.21.delay(1000);22.digitalWrite(13,HIGH);23.delay(5000);24.digitalWrite(13,LOW);25.26.}27.}程序中我们涉及到了一个新语句,判断句 If,请参考arduino语法手册,查阅关于If语句的资料希望大家不要仅限于只是照做教程的内容,那样没有任何意义,可以结合之前的教程,将两个实验结合起来,例如可以尝试做一个用两个按钮控制流水灯方向的小项目,大家应该释放自己的创意,梦想和创新才是最重要的。
arduino 二进制灯泡

arduino 二进制灯泡全文共四篇示例,供读者参考第一篇示例:Arduino是一款开源电子平台,可以帮助用户快速、简单地进行物联网项目的开发。
通过Arduino的编程和连接性能,用户可以创造各种各样的电子设备,其中就包括二进制灯泡。
二进制灯泡是一种通过二进制编码来控制亮灭状态的灯泡。
在传统的电子设备中,我们通常通过电压的高低来控制设备的开关状态,而在二进制灯泡中,我们使用的是0和1这两个二进制状态来控制灯泡的亮灭。
这种简单的编码方式不仅能够减少硬件成本,还可以更加灵活地控制设备的状态。
在制作Arduino二进制灯泡之前,我们首先需要准备以下材料:1. Arduino开发板2. LED灯3. 面包板4. 连接线接下来,我们开始制作Arduino二进制灯泡。
将LED灯插入到面包板中,确保LED的正极和负极被正确连接。
然后,将Arduino开发板连接到电脑上,并打开Arduino IDE进行编程。
在Arduino IDE中,我们可以通过写入一个简单的程序来控制LED的亮灭状态。
以下是一个示例程序:```cppint ledPin = 13; // 定义LED连接的引脚void setup() {pinMode(ledPin, OUTPUT); // 将LED引脚设置为输出模式}void loop() {digitalWrite(ledPin, HIGH); // 将LED点亮delay(1000); // 延迟1秒digitalWrite(ledPin, LOW); // 将LED熄灭delay(1000); // 延迟1秒}```在上面的示例程序中,我们定义了一个LED连接的引脚为13,并在循环中控制LED每隔1秒亮灭一次。
通过这个简单的程序,我们就可以实现一个二进制灯泡的效果。
除了控制LED的亮灭状态,我们还可以通过改变LED的亮度、颜色等参数来实现更加丰富的效果。
通过Arduino的强大功能和丰富的库支持,我们可以实现各种各样的创意灯光效果,让二进制灯泡不再局限于简单的亮灭。
arduino课件4——开关控制led灯

4.3程序分析
•int buttonState = 0;//定义存储按键状态的变量 •void setup() { • pinMode(13,OUTPUT); //初始化13引脚为输出状态 • pinMode(7,INPUT_PULLUP);//初始化7引脚为输入状态 •} •void loop() { • buttonState = digitalRead(7);//读取按键状态并存储在buttonState变量中 • if( buttonState == LOW){ • digitalWrite(13,HIGH); • delay(100); • }//如果按键按下(即低电平成立)将13引脚设置为数字输出高电平(点亮) • else{ • digitalWrite(13,LOW); • delay(100); • }//如果按键松开(即低电平不成立)将13引脚设置为数字输出低电平(熄灭) •}
4.4编写程序
• 参考课本31页程序,自主完成代码编写 • 编写完成后编译程序,根据提示修改代码
4.5 上传程序并调试
• 程序编译成功后上传至开发板 • 观察实验效果,根据效果调整程序或者电路连接
总结
• 按键开关的内部原理及电路连接方法 • 变量定义方法: 数据类型 变量名=初始值; • 数字输入函数: digitalRead(pin); • 选择结构的应用
if……else语句
ቤተ መጻሕፍቲ ባይዱ
第4课 开关控制LED灯
思考:
前面学习了Arduino数字I/O,通过控制数字引脚输出来控制 LED灯亮灭。本节将介绍数字I/O的输入功能,通过检测按键状态 来控制LED灯亮灭,把LED的亮灭变成人为可控制的。
那么,该如何设计电路呢?
4.1 按键开关原理
arduino语音模块控制LED的亮和灭

本教程主要实现:通过语音模块控制LED的亮和灭。
说“开灯”,LED点亮;说“关灯”,LED熄灭。
LD3320 语音识别模块概述:采用SPI通信接口,板载咪头和有源晶振,方便在电子产品中实现语音识别、声控和人机对话等功能。
注意事项:由于该模块使用电压,所以将其和Arduino连接时,请务必注意供电电压;对于使用UNO PLUS开发板来说将电压跳线帽配置为即可。
硬件准备:•••硬件连接:1. 将IO Expansion Shield接入UNO PLUS,用跳线帽将两个板的电压配置为2. 连接LD3320 语音模块-- VCCGND -- GNDMISO -- D12MOSI -- D11SCK -- D13NSS -- D4RST -- D9IRQ -- D2WR -- GND3. 将D8 与XBEE接口的15号引脚连接,控制板载的STATE LED闪烁。
如果你动手能力比较腻害,可以动电路,其实就一个1K电阻和一个发光二极管,D8为控制引脚;当识别到“开灯”时,D8输出高电平;反之输程序:[代码]java代码:#includeVoiceRecognition Voice; //声明一个语音识别对象#define Led 8 //定义LED控制引脚void setup(){pinMode(Led,OUTPUT); //初始化LED引脚为输出模式digitalWrite(Led,LOW); //LED引脚低电平(); //初始化VoiceRecognition模块("kai deng",0); //添加指令,参数(指令内容,指令标签(可重复))("guan deng",1); //添加指令,参数(指令内容,指令标签(可重复))(); //开始识别}void loop() {switch()) //判断识别{case 0: //若是指令“kai deng”digitalWrite(Led,HIGH); //点亮LEDbreak;case 1: //若是指令“guan deng”digitalWrite(Led,LOW); //熄灭LEDbreak;default:break;}}源代码下载:(增加串口输出)如果下载后编译出错,将ld3320目录复制到Arduino sketchbook location地址的libraries文件夹内(在看)。
arduino学习笔记9 - 光控LED实验

光敏电阻光敏电阻又称光导管,常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料。
这些制作材料具有在特定波长的光照下,其阻值迅速减小的特性。
这是由于光照产生的载流子都参与导电,在外加电场的作用下漂移运动,从而使光敏电阻的阻值迅速下降。
光敏电阻的工作原理基于内光电效应。
在半导体光敏材料的两端装上电极引线,将其封装在带有透明窗的管壳里就构成光敏电阻,为了增加灵敏度,两电极常做成梳状。
在有光照射时,射入的光强,电阻减小,射入的光弱,电阻增大。
下图就是一个光敏电阻本次实验设计的效果是,当光照正常的时候led灯是灭的,当周围变暗时led灯变亮。
因为光敏电阻受不同光照影响变化很大,所以本次实验的参数是在60W 三基色节能灯照射下实验(无日光照射),同样亮度的日光下光敏电阻的阻值会比日光灯下低不少,估计和不同光的波段有关系。
不同环境下实验使用的参数不同,大家根据原理进行调整。
实验前先测量一下当前环境下光敏电阻的亮阻值与暗阻值下图是测出来的LED亮阻值,为9.1KΩ下图是测出来的LED暗阻值,为32.4KΩ硬件连接图如下根据测出来的亮阻9.1KΩ,暗阻32.4欧姆。
选定分压电阻为10KΩ。
因为当有遮挡物的后,阻值会变大。
假设亮阻为10KΩ(对于光敏电阻来说,与测量出来的9.1KΩ差别不大,计算起来更加方便了),分压阻值为10K欧姆。
模拟2号口所测量的触发电压为10KΩ分压电阻的,在5V电源供电下,亮与暗转换的触发电压为5×10÷(10+10)=2.5V。
当光线越暗,光敏电阻的阻值也就越大,分压两端电压也就越小。
所以触发条件就为≤2.5V。
(不同光照条件下触发电压不同,请根据实验环境进行调整。
)程序代码如下int photocellPin = 2; //定义变量photocellsh=2,为电压读取端口。
int ledPin = 12; //定义变量ledPin=12,为led电平输出端口int val = 0; //定义val变量的起始值void setup() {pinMode(ledPin, OUTPUT); //使ledPin为输出模式}void loop() {val = analogRead(photocellPin); //从传感器读取值if(val<=512){ //512=2.5V,想让传感器敏感一些的时候,把数值调高,想让传感器迟钝的时候把数值调低。
Arduino-11.3 按钮控制LED

进一步探究按钮控制LED
这些例子有一个共同点:灯打开之后,延时自动关 语言描述:如果按下按钮,LED开,延时一段时间,LED自动关闭。
进一步探究按钮控制LED
那么如何判断按钮是否按下? 需要选择结构
真(1)
课堂总结
1.认识和掌握了按钮的使用。 2.掌握了数字口的输入。 3.能够正确使用选择结构。
什么是按钮?
按钮,也称为按键,是一种常用的控制电器 元件,常用来接通或断开“控制电路‘(其中 电流很小),从而达到控制电动机或其他电气 设备运行目的的一种开关。
按钮Leabharlann 按下 放开按钮与Arduino控制器的连接
按钮与LED发光模块一样,也有三个针脚,接Arduino控制 器的数字口。 黑线接GND,红线接VCC,绿线接D。
布置作业
1)思考按钮控制LED还有哪些情况? 2)思考还可以通过哪些方式控制LED的亮灭?
如何把按钮的状态传递给Arduino呢?
按钮状态的读取: 此模块可读取数字口的电平高低
按下 高电平 1 放开 低电平 0
true false
初步尝试按钮控制LED
根据按钮的两种状态,设置最简单的一种按钮控制 LED,即按下开,放开关。
进一步探究按钮控制LED
1)走廊里的灯,亮了之后过一会自动关闭 2)中国地质大学学生发明了投币式台灯,当硬币投入台灯下的 储蓄罐中时,台灯便可开始照明,半小时后,灯自动熄灭。
Arduino的数字输入-开关来控制发光二极管

在数字电路中开关(switch)是一种基本的输入形式,它的作用是保持电路的连接或者断开。
Arduino从数字I/O管脚上只能读出高电平(5V)或者低电平(0V),因此我们首先面临到的一个问题就是如何将开关的开/断状态转变成Arduino能够读取的高/低电平。
解决的办法是通过上/下拉电阻,按照电路的不同通常又可以分为正逻辑(Positive Logic)和负逻辑(Inverted Logic)两种。
在正逻辑电路中,开关一端接电源,另一端则通过一个10K的下拉电阻接地,输入信号从开关和电阻间引出。
当开关断开的时候,输入信号被电阻“拉”向地,形成低电平(0V);当开关接通的时候,输入信号直接与电源相连,形成高电平。
对于经常用到的按压式开关来讲,就是按下为高,抬起为低。
在负逻辑电路中,开关一端接地,另一端则通过一个10K的上拉电阻接电源,输入信号同样也是从开关和电阻间引出。
当开关断开时,输入信号被电阻“拉”向电源,形成高电平(5V);当开关接通的时候,输入信号直接与地相连,形成低电平。
对于经常用到的按压式开关来讲,就是按下为低,抬起为高。
为了验证Arduino数字I/O的输入功能,我们可以将开关接在Arduino的任意一个数字I/O管脚上(13除外),并通过读取它的接通或者断开状态,来控制其它数字I/O管脚的高低。
本实验采用的原理图如下所示,其中开关接在数字I/O的7号管脚上,被控的发光二极管接在数字I/O的13号管脚上:相应的代码为:int ledPin = 13;int switchPin = 7;int value = 0;void setup() {pinMode(ledPin, OUTPUT); pinMode(switchPin, INPUT); }void loop() {value = digitalRead(switchPin); if (HIGH == value) {// turn LED offdigitalWrite(ledPin, LOW);} else {// turn LED ondigitalWrite(ledPin, HIGH);}}由于采用的是负逻辑电路,开关按下时用digitalRead()函数读取到的值为LOW,此时再用digitalWrite()函数将发光二极管所在的管脚置为高,点亮发光二极管。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.2 所需材料 本实验所需要的材料比较简单,可在实验 6 的基础上,将数码管改换成光敏电阻即可,
如表 7-1 所示。
表 7-1:所需材料
序号
名称
数量
作用
备注
1
Arduino 软件
1套
提供 IDE 环境 最新版本 1.05
2
Arduino UNO 开发板
1块
控制主板
各种版本均可
3
USB 线
1条
烧录程序
1)亮电阻(kΩ):指光敏电阻器受到光照射时的电阻值。 2)暗电阻(MΩ):指光敏电阻器在无光照射(黑暗环境)时的电阻值。 3)最高工作电压(V):指光敏电阻器在额定功率下所允许承受的最高电压。 4)亮电流:指光敏电阻器在规定的外加电压下受到光照射时所通过的电流。 5)暗电流(mA):指在无光照射时,光敏电阻器在规定的外加电压下通过的电流。 6)时间常数(s):指光敏电阻器从光照跃变开始到稳定亮电流的 63%时所需的时间。 7)电阻温度系数:指光敏电阻器在环境温度改变 1℃时,其电阻值的相对变化。 8)灵敏度:指光敏电阻器在有光照射和无光照射时电阻值的相对变化。 (8) 光敏电阻作用 广泛应用于各种自动控制电路(如自动照明灯控制电路、自动报警电路等)、家用电器(如 电视机中的亮度自动调节,照相机的自动曝光控制等)及各种测量仪器中。
SmartArduino
应的是 1024,那 3.34V 对应的就是 1024*3.34/5=683。所以咱们可以将门限电压设为 683。 门限电压值越高,对光线就越敏感。其电路原理如图 7-5 所示。
图 7‐5 Arduino 光控 LED
按照图 7‐5 的原理图连接好电路后,如图 7‐6 所示。运行 Program 7,用手或遮挡物遮挡
12
13 Serial.print(val); //打开 Arduino 自带的监视器
14 Serial.println(); //输出换行
15 if(val<=683){
//683=23.34V,想让传感器敏感一些的时候,把数值调高,
想让传感器迟钝的时候把数值调低。
16
digitalWrite(ledPin8, HIGH); //当 val 小于 683(3.34V)的时候,led 亮。
(3) 光电导材料 具有光电导效应的材料有 Si,Ge 等本征半导体与杂质半导体,以及 CdS,CdSe,PbS 等。这 些材料可以制成电导率随着入射光辐射量的变化而变化。
SmartArduino
(4) 光敏电阻结构 光敏电阻的结构有三种:蛇形结构,刻型结构,梳型结构。通常由光敏层、玻璃基片(或 树枝防潮膜)和电极等组成的。
SmartArduino 7 用 Arduino 制作光控 LED 灯的亮与灭
7.1 问题描述:如何利用 Arduino 制作光控 LED? 在本实验中,咱们将学习如何利用光敏电阻制作根据光线的强弱来控制 LED 灯的亮与
灭。这个实验非常实用。比如路灯,当晚上来临时,将要求灯亮起来,而在白天为了节约能 量,需要路灯熄灭。这是可以借鉴此例子来根据光线的强弱控制 LED 灯的亮与灭。类似的, 依据相应的原理,咱们也可以制作声控 LED 灯。
图 7-8 光敏电阻无法点亮 LED 灯
SmartArduino
7.5 要点总结 1)光敏电阻的阻值随着光线增强而变小,所得电压减小,无法触发 Arduino 的控制端口。 所以 LED 灯无法被点亮。 2)利用光敏电阻控制 LED 灯的亮与灭,依据的是电路的分压原理。 3)一般来说,亮电阻值都会在产品说明中给出。 4)光敏电阻广泛应用于自动控制中。
SmartArduino
7.4 实验与原理 只要我们弄清楚了光敏电阻的特性后,本次实验的工作原理比较简单。就是通过光敏电
阻和其串联的电阻进行分压。当光敏电阻分到的电压小于一个给定的门限值时,将触发与 Arduino 连接的端口 8 一个高电平,从而点亮 LED。否则给端口 8 送一个低电平,LED 灯灯 不会被点亮。但为什么光敏电阻的电压要小于门限值呢?咱们来分析一下。假设给家里的卫 生间安装一个由光敏电阻控制的灯管。当外界光线很亮时,光敏电阻的阻值迅速下降,同时 我们也不希望家里卫生间的灯此时亮起来,正好此时给光敏电阻分得电压就非常小(因为电 阻值小,在串联电路中,电压和电阻值成正比),所以家里卫生间的灯管就不会亮起来了, 图 7-3 是本实验的电路原理图。但是,咱们该如何得到光敏电阻的门限电压呢?这是本实验 的一个关键问题。如图 7-3,其中 R1 是串联的电阻,R2 是光敏电阻(暂时用这个符号替代)。 其中光敏电阻的阻值 20Ω叫亮电阻,可根据万用表大概测量出来,如图 7-4 表示用万用表 测量光敏电阻的亮电阻(实测为 17.49Ω,但为了计算方便取 20Ω),此数值一般在产品说 明中会给出,且还会给出暗电阻数值。
17 }
18 else{
19
digitalWrite(ledPin8, LOW);
20 }
21 }
SmartArduino
图 7-6 Arduino 光控电路
图 7-7 Arduino 自带的串口监视器 同时咱们让 LED 灯的光线变亮一些,LED 灯中由于光敏电阻阻值迅速下降,使得光敏 电阻两端所能分到的电压也迅速下降,以致不足以触发 Arduino 主板上端口 8。所以无法点 亮端口 8 中的 LED 灯,如图 7-8 所示。注意,我们可以用随声携带的手机给咱们的 LED 灯 光线。
图 7-3 光敏电阻的分压原理
图 7-4 用万用表测量光敏电阻的亮电阻 那接下来,咱们计算一下光敏电阻的门限电压(即低于这个门限电压值,光敏电阻将不 能被点亮)。如图 7-3 所示,其中 A0 表示光敏电阻的一端接在 Ard图也可以参考 7-5 所示。V2 即表示光敏电阻两端 的电压。根据串联电路的分压原理有:V2=5V*R2/(R1+R2),把相关参数数值代入可得光敏 电阻两端的电压约为 3.34V。 但是,根据光敏电阻的电压可以通过 Arduino 主板上的模拟端口 A0 输入,其语句为 analogRead(A0),但此语句输出为一个整型数据,其范围在 0~1024 之间(具体可参考 analogRead()语句的语法)。所以咱们还必须将电压 3.34V 换算成 0~1024 之间的数值。5V 对
04 int val = 0;
//定义 val 变量的起始值
05 void setup() {
06 Serial.begin(9600);//设置串口波特率
07 pinMode(ledPin8, OUTPUT); //使 ledPin8 为输出模式
08 }
09
10 void loop() {
11 val = analogRead(n); //从传感器读取值
随板子配送
4
杜邦线
若干条
连接组件
5
光敏电阻
1个
触发
6
面包板
可选
7.3 光敏电阻的特性 在实验之前,必须弄清楚光敏电阻的相关特性和原理。在这小节将重点介绍光敏电阻的
有关特性。光敏电阻的英文名称 photoresistor。 (1) 光电导效应
又称为光电效应、光敏效应,是光照变化引起半导体材料电导变化的现象。即物质吸收 了光子的能量产生本征吸收或杂质吸收,引起载流子浓度的变化,从而改变了物质电导率的 现象,就成为光电导效应。 (2) 光敏电阻表示
光敏电阻器是利用半导体的光电导效应制成的一种电阻值随入射光的强弱而改变的电 阻器,又称为光电导探测器;入射光强,电阻减小,入射光弱,电阻增大。还有另一种入射 光弱,电阻减小,入射光强,电阻增大。如图 7-1 所示。文字符号: “RL”、“ RG”或“R”
(a) 光敏电阻实物
(b) 光敏电阻表示符号
图 7-1 光敏电阻实物及符号表示
(a) 光敏电阻的组成
(b)蛇形结构
(c) 刻型结构
(d) 梳型结构
图 7-2 光敏电阻的组成与结构
(5) 光敏电阻分类 1)按制作材料分类:多晶和单晶光敏电阻器,还可分为硫化镉(CdS)、硒化镉(CdSe) 、 硫化铅(PbS)、硒化铅(PbSe)、锑化铟(InSb) 光敏电阻器等。 2)按光谱特性分类: ● 可见光光敏电阻器:主要用于各种光电自动控制系统、电子照相机、光报警等地。 ● 紫外光光敏电阻器:主要用于紫外线探测仪器。 ● 红外光光敏电阻器:主要用于天文、军事等领域的有关自动控制系统。 (6) 光敏电阻特性 光敏电阻器是利用半导体光电导效应制成的一种特殊电阻器,对光线十分敏感,它的电阻值 能随着外界光照强弱(明暗)变化而变化。它在无光照射时,呈高阻状态;当有光照射时, 其电阻值迅速减小。 (7) 光敏电阻器的主要参数
一下光敏电阻的光线,会发现光敏电阻的 LED 灯已经亮起来。
01 //Program 7:如何实现 Arduino 光控 LED 灯的亮与灭
02 int n = 0; //定义变量 n=0 为电压读取的模拟端口。
03 int ledPin8 = 8; //定义变量 ledPin8=8 为 led 电平输出端口