基于Arduino的招财猫电路的设计与制作

2018-10-26 10:54邱娟
科技资讯 2018年14期

邱娟

摘要:本文使用了基于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.