YFROBOT创客社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9204|回复: 4
打印 上一主题 下一主题

Arduino入门教程—拓展实验篇三 电位器实验

[复制链接]

签到天数: 866 天

[LV.10]以坛为家III

跳转到指定楼层
楼主
发表于 2013-6-16 14:30:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 AllBlue 于 2016-1-15 08:19 编辑

电位器实验

第四课中我们介绍了使用软件来调节LED 灯的亮度,今天我们要使用硬件来调节灯亮度。

生活中,当人睡觉时,我们当然希望台灯是关闭或者是处于比较暗的状态,所以很多台灯都是具有调光的功能的,其原理很简单:调节RP 的阻值,可改变电容C 充电达到UG 值得时间,即调整晶闸管的导通角,使晶闸管早一点或迟一点触发导通,从而调节晶闸管的输出电压,使灯两端电压能0~220V 间变化。电压高,灯发光亮;电压低,灯发光暗。

下面我们来用电位器做一个简单的调光实验,实验中,我们要使用的元器件:

UNO 实验套装(UNO兼容板一块、USB数据线一根、优质面包板一块、彩色面包板线若干)

LED  一个

电阻220欧 一个

线绕电位器 一个

按钮开关 一个

其中电位器是线绕电位器,型号为WXD3-13-2W,如图:

它是利用康铜丝或镍铬合金电阻丝绕在一个环状骨架上制成的。这种电位器额定功率大(几瓦或数十瓦)、耐温高、耐磨性能好、噪声低,阻值可以调得很精确而且稳定性好。线绕电位器的阻值,范围比较小,一般为几卜欧姆至几千欧姆之间,阻值允许偏差±5%和±10%。这种电位器通常用于电源调节或大电流分压电路中。由于它是电阻丝绕制而成(相当于线圈),其电感量较大,故线绕电位器很少用于高频电路。

下面看下电路(将LED正极接数字9端口,负极通过220限流电阻接地;按钮一端接数字8端口,一端接地;电位器3个引脚分别连接5V,GND,模拟口A0):

下面是程序:

  1. /*
  2. 电位器实验(台灯功能模拟)
  3. 按钮控制LED开光,电位器控制LED亮度
  4. BY TSRobot
  5. */

  6. #define LED 9 //定义LED引脚为9
  7. #define BUTTON 8 //定义按钮开关引脚为8
  8. int Button_val = 0; //变量Button_val用来储存按钮状态
  9. int Button_old_val = 0; //暂存Button_val变量的上一个时间单位
  10. int RP_val ; //RP_val存储电位器状态
  11. int state = 0; //0表示LED关闭,1表示打开

  12. void setup(){
  13. pinMode(LED, OUTPUT); //设定LED引脚为输出状态
  14. pinMode (BUTTON,INPUT_PULLUP); //设定按钮引脚为输入状态
  15. }

  16. void loop(){
  17. Button_val = digitalRead(BUTTON); //读取按钮状态并储存
  18. RP_val = analogRead(A0); //读取A0口的数值(0-5V 对应 0-1204取值)
  19. //检查按钮的变化情况
  20. if((Button_val == HIGH)&&(Button_old_val == LOW)){
  21. state =1-state;
  22. delay(40); //延时简单抗抖动
  23. }
  24. Button_old_val = Button_val; //Button_val下载已经是旧的了,让我们暂存一下

  25. if (state == 1){
  26. digitalWrite(LED,HIGH); //开启LED
  27. analogWrite(LED,RP_val/4); //调节LED亮度
  28. }else{
  29. digitalWrite(LED,LOW); //关闭LED
  30. }
  31. }
复制代码

将程序烧写到控制板中,按动按钮控制LED开关,旋动电位器调节LED亮度;实验完成~~~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对

签到天数: 1 天

[LV.1]初来乍到

推荐
发表于 2016-1-11 14:13:05 | 只看该作者


这里有一点问题,后面的同学要注意一下。

#define LED 9 //定义LED引脚为8
#define BUTTON 8 //定义按钮开关引脚为4

RP_val = analogRead(A0); //读取A0口的数值(0-5V 对应 0-1204取值)



点评

感谢指出错误!  发表于 2016-1-15 08:20
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|联系我们|YFROBOT ( 苏ICP备20009901号-2  

GMT+8, 2024-4-26 04:40 , Processed in 0.048026 second(s), 26 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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