Automative System——运用CoDesys构建一个segment display

要求:当按下按钮时,segement 由数字“1"转变成数字“2”。如下图所示:

想法

1.把“1”和“2”在面包板上整体连接,只要接上Raspberrypi的两个接触点就可以整体控制“1”和“2”亮灭。

但是这样为适应其他数字的情况工作量颇大。

2.把每一个segement连接上Raspberrypi的接触点,在CoDesys中控制每一个segement的亮灭。

具体实施:

1.在Vaisualization中构建示意图,直接选取线段来表示segement,灯的亮灭可以用线段颜色的改变来实现。

线段与名字的绑定通过color variables实现。

2.创建一个programme,名为LIGHT

代码如下:


 

三角形的意思是边缘探测,把switch1和toggle连在了一起,起到触发的作用。toggle是触发器的意思。每当switch是开的状态,才能改变灯的亮灭。

 

toggle连接的是数字“2”的状态。我们发现,数字“2”和“1”中有一根线段是重复的,所以我们使重复线段常亮(不符合其他数字的应用),让L6=true。当转换“1”和“2”时,L2是需要跟着改变的,所以我们给L2加上一个“非”。

整体:

 

当时还设置了一个segement的function block,但是意味不明。(等后续了解)

 

3.如何在面包板上实现

打开GPIOS可以看到Respberrypi每一个接口的地址。

在每一个灯后面写上对应的adress,分别对应接口,然后再连接相对应的面包板上控件的引脚即可。 

 

别忘了要在Device中输入自己电脑的IP地址。

反思与总结:

这次的成果是不太完美的,我们不太懂如何写代码,不太懂该软件的一些控件要从哪里找。如果想改善该项目,我想应该要设置一个延时器(TOF),当按下按钮时,“1”结束,然后“2”开始运行,这样就避免了两个相同的segement互斥的情况。

另外:

本次实验使用了VM的虚拟机。

附上Respberrypi运行需要的脚本代码。 

猜你喜欢

转载自blog.csdn.net/yghkdr/article/details/84337678