第六章 可调灯-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2009|回复: 0

第六章 可调灯

[复制链接]
发表于 2022-2-8 16:37 | 显示全部楼层 |阅读模式

[md]## 手机上的呼吸灯
现在我们用的大部分的智能手机都有呼吸灯功能,有新消息来的时候,灯慢慢变亮,再慢慢变暗,非常的漂亮。今天我们就来学习下怎样把这个做出来。

+ **硬件连接**

将LED灯 —— D10 如下图所示:
01.jpg
+ **程序编写**
02.jpg
+ **程序解读**

从程序编写过程中,我们用到了两个新的模块:函数和模拟输出。

**函数**:函数相当于一个方程,我们通过设置一系列的计算方式来确定一个规则。这个规则就是函数。函数怎么写都是我们自己确定,写好了函数过后,相当于我们确定了一个模块,下次我们写程序要实现这个功能,我们就不需要再去写这个模块了,直接整体调用这个模块名称就行了。

**模拟输出**:脉宽调制(PWM:Pulse Width Modulation)输出:它是一种对模拟信号电平进行数字编码的方法,简单来说就是通过一个时钟周期内高低电平的不同占空比来表示模拟信号。Arduino主板只有部分的管脚支持 PWM。ArduinoUNO主板支持PWM输出的引脚有(3、5、6、9、10、11)6个。
03.jpg
所以,上述的程序中我们使用了D10号口来进行模拟输出。Arduino使用analogWrite(int value)输出PWM信号,其取值范围是0-255。所以在程序中value的取值是0到255。

### 可调灯

我们经常使用台灯,但是有时候台灯灯光比较弱或者比较强的时候,就会去转动旋钮来调节灯光的亮度,这里我们就用OpenJumper套件里的旋转电位器模块来制作一个可调节亮度的台灯。

+ **功能需求:**用开关来控制台灯,然后通过旋转电位器来调节亮度。

+ **模拟输入:**Arduino接口中的A0~A5都属于模拟输入引脚(因为芯片的这些引脚内部都有一个模电转数电ADC(Analog-to-Digital Converter 模/数转化器)功能,它可以将外部输入的模拟信号转化为芯片运算时可以识别的数字信号,从而实现读入模拟值的功能。Aruino模拟输入功能有10位精度,即可以将0~5V的电压转化为0~1023的整数数值。
+ **新硬件介绍**
**旋转电位器:**OpenJumper旋钮式电位器模块有点类似于滑动变阻器,可以结合Arduino传感器扩展板,可实现与位置变化相关的互动作品。模块连接在arduino模拟IO口上只需调用程序模块“模拟输入管脚 X”,便可读取传感器输入的模拟值。输出信号:模拟信号0-5V,输出电位器阻值:0—10K,工作电压:5V。具体形状如下图所示:
04.jpg
+** 硬件连接**
旋转电位器 —— A1   LED模块 —— D11号口  按钮开关 —— D3
05.jpg
+ **程序编写**

在程序中,我们将用到映射这个新的模块。

**映射:**主板支持的模拟输入信号的大小范围是 0~1023。 然而模拟输出大小是 0~255。因此,模拟输入的数值,不能直接进行模拟输出,我们需要一种办法,能够把0~1023 内的数,按比例缩小,转化成 0~255 之间的数,再进行模拟输出。我们知道有6个端口是可以进行模拟输出的,这里我们选择了D11口。

旋钮控制灯亮度的程序就是可以简单的描述成如下这样一句程序:
06.jpg
如果我们要在调节亮度的同时还要可以控制LED的开关状态呢?我们添加一个按键模块,使用外部中断功能,当按键按下触发中断后,将LED显示功能关闭或者打开。那么完整程序就是:
07.jpg
### 发散思维大课堂

上面我们在硬件上讲了旋转电位器,在软件上学习了中断模块和映射模块,那么我们还可以做些什么好玩的呢?[/md]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-27 15:05 , Processed in 0.076827 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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