用C语言编写一个关于电梯的程序

用C语言编写一个关于电梯的程序,第1张

这是以前作的课程设计,是一个10层电梯的模拟,供楼主参考吧:

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所示。正如生活中的电梯一样,当按下对应的楼层按钮时,则电梯的轿厢可以到达对应的楼层


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7874649.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存