printf("上下选择:1-上楼,2-下楼\t")
scanf("%d",&input_direction)
fflush(stdin)
printf("输入该层的乘客想到达的楼层,以-1结束\n")
void check(liftor &myliftor) int flag1=0,flag2=0,flag3=0
for(i=0i<10i++)
{
if(myliftor.stored_flare[i]!=0)
flag1=1
if(myliftor.stored_flare[i]==1)
flag2=1
if(myliftor.stored_flare[i]==2)
flag3=1
}
if(!flag1) myliftor.set_direction(0)
else if(!flag2&&flag3) myliftor.set_direction(2)
else if(!flag3&&flag2) myliftor.set_direction(1)
int main(int argc, char *argv[])
liftor myliftor
char flag
int j
myliftor.direction=1
printf("**************************************\n")
printf("该程序用于模拟10(0-9)层的电梯控制\n")
printf("先输入按下电梯的层号及上下选\n择(类似电梯外的按钮)\n")
printf("每到一层时,输入乘客要到的楼\n层号(类似电梯内的按钮)\n")
一、工作原理生活中的升降电梯组成比较复杂,包含轿厢系统、导向系统等等,如下图1所示。但是功能却相对好 *** 作,就是按下对应的楼层时,轿厢系统就可以达到对应的楼层。
图1升降电梯的组成
那么这一简单的 *** 作,背后的原因是怎样的?我们以三层楼为例,为了实现楼梯准确智能的切换,可以引入两个变量实现。开始设定一个变量a数值为0,电梯在1层;当按下3层时,变量b设为3。程序执行“b-a”的数值乘以运动一层的时间,即可到达3层的位置,并让b的值赋予a。同样如果此时再按下2层时,则变量b的值设为2,当“b-a”小于0时,则反转,乘以一层运动的时间,就可以到达2层啦。
二、硬件装置
那么如何控制电梯的升降?需要开源硬件Arduino、按钮、电机驱动板和电机等材料。
制作本作品所需要的材料和说明如表 1所示:
表 1 实验材料
名称
数量
说明
Arduino UNO 主板
1个
控制器
Arduino 扩展板
1个
扩展接口
按钮
3个
控制楼层
电机驱动板
1个
控制电机的运动
楼梯模型
1个
骨架材料
小电机
1个
驱动轿厢移动
三、L298N电机驱动板的使用
可能大部分老师同学对Arduino的使用比较熟练,但是对于电机驱动板的使用还不是熟悉。L298N电机驱动板具体的功能,如下图2和3所示。
图2 L298N电机驱动板的功能图
图3 针脚的功能
在这里需要提醒的是:1.当IN1和IN2的电平不一样时,才能控制输出A电机的方向;同样,IN3和IN4也是一样的;2.ENA和ENB针脚分别控制M1和M2的PWM,也就是电机的转速;
四、代码编写
原理清晰了,代码就比较简单书写,本案例我们使用Mixly编程软件。具体如图4和5所示。
图4 主程序
图5 控制上升下降的函数
程序介绍:刚开始设置两个变量a和b,分别赋值为1和0。如果按下2楼时,则b赋值为2,执行“控制上升下降的函数”。在这个函数中,通过两者差值的大小乘以一层楼运行的时间,来控制到达的楼层;如果b>a,则向上运动;如果b<a,则改变管脚2和3的高电平和低电平,改变运动方向;待执行完之后,将b的值赋予给a。如果按下3层时,b的值为3,同样通过判断a和b的值,执行“控制上升下降的函数””,来执行电梯移动到指定的位置,不断循环。
五、运行效果
根据要求,将各硬件材料组装测试,如下图6所示。正如生活中的电梯一样,当按下对应的楼层按钮时,则电梯的轿厢可以到达对应的楼层
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)