本文主要是介绍机械花—一款基于arduino的情人节礼物,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
构思
材料清单
传动设计
电路设计
软件设计
效果
构思
受了国外一个视频的启发,我也打算做一个机器花,送给老婆做情人节礼物。花朵应该具备张开和关闭两个功能,最好能便捷的用手势控制。为了让产品更生动,表现力更强,机械花的旁边还应有LED作点缀。
自制机器花效果展示
材料清单
一个微型电机从x宝上购买,
一卷细铜线,
再加上两块铝板(自行切割),
若干螺栓,螺母
橡皮2块,
手术刀一把,
Arduino Leonardo开发板一块,
吸管一根,
烤串用木签一根,
502胶水一管,
LED两个,
一个塑料花盆,
红外传感器一个,购自x宝
电钻台一个,
手摇钻,
硬纸壳若干。
传动设计
1先用手术刀将一块橡皮镂空,刚好把螺母塞入.塞入后,为保证两者牢固连接,可以用胶水粘连两者相接处。(502凝固的时间为24小时)
2 用钻台在一块铝板上打孔,将微型电机安装到铝板上。
3 在第一步的橡皮上再钻一个小孔,孔的直径应能允许木签穿过该孔,但被孔夹紧。
4 将塞入螺母的橡皮安装到微型电机的螺杆上。
5 将两块铝板上下重叠放置,确定木签的位置。然后在木签将要穿过的位置打孔。考虑到测量误差等因素,孔径应留余量,最好略大于吸管的直径。
6 在两块铝板的四个角附近打孔,然后用四根螺栓穿过这八个孔,固定铝板的上下位置。
7 以如下尺寸剪切3片硬纸壳:单位厘米
8 将另一块橡皮切割为边长2厘米的正三角形。并用手摇钻在橡皮中心钻开一个圆孔,供吸管插入。
9 用手摇钻在三角形橡皮的三个顶角处,沿平行于三角形的方向,钻三个细小的孔,供铜线穿过。
10 截取三条足够长的铜线,沿木签轴向,贴木签表面放置,用透明胶带固定。三条铜线分隔120°。铜线应比木签至少长出9厘米
11 将吸管插入上层铝板的孔内,用胶水固定,如下图所示
12 将木签从吸管上端插入,穿过与电机螺杆相连的橡皮,一直插到超过底层铝板的孔位。
13 将第7步准备的纸壳掰成下图所示的花瓣形状,并在每片花瓣的底角处扎三个孔,供细铜丝穿过.在每片花瓣中轴线距底部2厘米处也扎一个细孔。
14 截取三根细铜丝,先穿过正三角形的橡皮顶角,然后铜丝两端各自穿过花瓣的底角的三个孔,然后用胶水或者透明胶固定:
15 三片花瓣组装在一起的效果:
16 从木签顶端伸出三条细铜丝。三条铜丝分别穿过三片花瓣的中间小孔(第13步).穿过花瓣后,铜丝末端用透明胶带粘在花瓣背面。
机器花原理解释
电路设计
第一张电路图展示驱动电路。D2与D6分别是arduino leonardo的数字引脚2、6.
根据软件设计(见后面),2与6不会同时高电平。当D2处于高电平时,D6低电平。此时左半边晶体管Q1 Q2导通。电机正转。反之,Q3 Q4导通,电机反转。
第二张电路图展示手势控制电路。手第一次扫过传感器,Vout+与Vout-电压差为9伏。则Arduino的模拟输入口A1 A3之间电压差为4.5V左右。再次扫过传感器,Vout+与Vout-之间压差为零,A1 A3之间压差也为零。
软件设计
int iReadIR = 0;
int iPrevIR = 0;
bool bBloom = false;
int analogPin1 = A1, analogPin2 = A3;void setup() {// put your setup code here, to run once:int iV1 = analogRead(analogPin1);int iV2 = analogRead(analogPin2);if(iV1 - iV2 > 512){iReadIR = 1;}else{iReadIR = 0;}iPrevIR = iReadIR;pinMode(6, OUTPUT);pinMode(2, OUTPUT);pinMode(13, OUTPUT);digitalWrite(13, LOW);
}void loop() {// put your main code here, to run repeatedly:if(iPrevIR != iReadIR){if(bBloom){vClose();//花瓣收起bBloom = false;}else{vBloom();//开花bBloom = true;}}iPrevIR = iReadIR;int iV1 = analogRead(analogPin1);//读取A1 A3电压int iV2 = analogRead(analogPin2);if(iV1 - iV2 > 512)//arduino的模拟口以1024为最大值。当arduino的电源电压为9伏时,512就代表4.5伏{iReadIR = 1;}else{iReadIR = 0;}delay(100);
}void vClose(void)
{digitalWrite(6, HIGH);//D6高电平digitalWrite(2, LOW);//D2低电平digitalWrite(13, LOW);delay(45000);digitalWrite(6, LOW);//待花瓣闭合,D6低电平
}void vBloom(void)
{digitalWrite(6, LOW);//D6低电平digitalWrite(2, HIGH);//D2高电平for(int k = 0; k < 45; k++){digitalWrite(13, LOW);delay(500);digitalWrite(13, HIGH);delay(500);}digitalWrite(2, LOW);//待花瓣完全绽放,D2低电平
}
效果
自制机器花效果展示
这篇关于机械花—一款基于arduino的情人节礼物的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!