邱娟
摘要:本文使用了基于ATmega328的Arduino UNO开发板编程实现的招财猫电路,具有人体感应、眼睛渐变、前后招手、液晶显示节日贺语或者广告词的功能。电路主要包括四部分内容:1 小猫的眼睛用的是RGB三基色LED,可以绽放七彩的光芒;2 小猫的鼻子用的是人体传感器,可以检测有人进入感应范围;3小猫的爪子用舵机正反转60度,实现招手效果;4 通过液晶显示设定的中英文字符。
关键词:Arduino 招财猫 智能电子
中图分类号: TM383 文献标识码:A 文章编号:1672-3791(2018)05(b)-0000-00
0 引言
2014年9月,李克强总理发出“大众创业、万众创新”的号召,全国范围掀起一股创新、创业新浪潮,我们的创客校园也开展得如火如荼,学校本着培养“有创意、敢创新和会创造”的创新创意人才的目标,精选了具有基于开源系统、易于动手实践、激发创新精神、实现创新制作这些特点的电子创意类课程作为创客教育的载体,有Arduino应用、激光切割、易企秀制作、3D打印等等,获得同学们的一致认可,同学们创新意识高涨,学习后效果很好。其中,Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境,下面给大家一下基于Arduino的招财猫电路的设计过程。
1 硬件电路设计
招财猫的硬件电路见图1,主要由四个部分构成,分别是PWM调光电路、人体传感器电路、舵机电路和液晶显示电路。
1.1 PWM调光电路
RGB三基色LED,是由红(Red)绿(Green)蓝(Blue)三种颜色的发光半导体材料封装在同一灯管里组成的,它的灯管一般作半透明的雾状处理,不同波长的光线在半透明灯管透射出来时,会产生叠加效应。将红、绿、蓝三原色的色光以不同的比例相加,可以产生多种多样的色光。生活中彩色电视、舞台灯光也是采用加法三原色混合的原理。这里向彩灯输出不同占空比范围的PWM波产生渐变的效果。
1.2 人体传感器电路
人体模块是基于红外线技术的自动控制产品,具有灵敏度高,可靠性强,微功耗等特点,当被测物体进入感应模块的有效检测范围时,模块经判断有效后输出高电平信号,控制舵机开始转动。
1.3 舵机电路
舵机是用来控制舵的,比如轮船的方向舵,飞机的方向舵、升降舵等,这些都需要控制一定的角度,但并非需要连续旋转。所以一般舵机都是只能转动一定的角度,我们这里说的舵机主要应用于航模、车模和监控等领域,一般是正负 90 度之间转动。舵机的控制信号实际上是 PWM 信号,周期不变,高电平的时间决定舵机的转动角度。
1.4 液晶显示电路
使用Arduino控制LCD1602液晶显示器这里用四线制接法,IDE开发环境提供了LCD控制庫LiquidCrystal,在初始化程序中直接调用库函数,就可以实现开关显示和滚动字幕,相对于单片机而言,接线和编程都比较简单。
2 软件程序编写
Arduino语言提供了多种类型的系统函数,要使用的时候可以直接调用。在控制RGB三基色LED的程序中,用到指定针脚模式的函数原型:pinMode (pin, mode)
其中,pin为要设定的针脚,在Arduinno UNO中可以取值范围为0-13,表示针脚编号; mode为针脚模式,它的值可以为INPUT(输入)和OUTPUT(输出)。例如pinMode(9, OUTPUT);功能是将9号针脚设置为输出模式。
在将对应的针脚设置为输出模式后,还需要设置对应针脚的输出电压。模拟针脚可以输出0-5V之间的电压,可以使用analogWrite()函数设置。该函数的原型如下:analogWrite(pin,value)
其中,pin表示要设置的针脚,可以是3、5、6、9、10和11号针脚(Arduino开发板上针脚标号前带“~”的针脚),具有PWM输出能力,可以产生0~255占空比范围的PWM波(PWM的中文译名是脉冲宽度调制,它是利用微处理器的数字输出来控制模拟电路的一种技术)。Value 表示占空比,它的值可以是0~255,占空比越大,输出的电压越大。例如:analogWrite(9, 100);9号针脚接蓝色光控制线,输出占空比100的PWM波,蓝灯点亮。
招财猫的主循环程序如下,如果A0State读入是高电平,说明有人进入区域,LED亮度开始渐变,舵机开始转动。
// 主循环
void loop()
{
A0State = digitalRead(inPin);
while(A0State == LOW);
for (int i = 60; i <= 90; i = i + (1))
{
brightness = (i-60)*4; // 下一个循环调整led亮度
analogWrite(led, brightness); // 设置了led的亮度
myservo.write(i);
delay(90);
}
for (int i = 90; i >= 60; i = i + (-1))
{
brightness = (i-60)*4;
analogWrite(led, brightness);
myservo.write(i);
delay(90);
}
}
3 总结
通过本文的介绍,希望大家认识基于Arduino的这款招财猫电路。Arduino是一款便捷灵活、方便上手的开源电子原型平台,可简单地与传感器、各式各样的电子组件连接,可以帮助你将各种创新想法变为现实,是非电子类和电子类专业读者实现电子类创新制作的最好途径。
4 参考文献
[1] 杨佩璐、任昱衡.Arduino入门很简单.第1版.清华大学出版社.2015年3月.90-93.
[2] [美] Michael.McRoberts著.Arduino从基础到实践.电子工业出版社.2013年3月.104-107.