最新消息:

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!

乐高 少儿编程 3364浏览 0评论
EV3基础应用

上上周咱说了个把电风扇程序给优化一下的案例,收到很多朋友的消息,希望能多讲讲,多点案例。其实这种案例在生活中无处不在。

 

有一些朋友问我:从开始模块出发,一行、两行、三行……程序编写起来有什么不同?或者说用在什么情况下?

 

如下图:

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!

简单说,其实每一行表示一个独立存在的流程。多行就表示同时运行多个流程。

 

这里的流程本身都是并列的,所以是同步进行的。

数据互相有所影响,动作又相对独立运行。

 

这个使用方法并没什么定论,但我的习惯是一码归一码的把事情分清楚。这样一来别人读程序、学生学程序的时候,也容易看懂。

 

今天我们再举一个例子。也是前两天看到朋友圈一位老师发的小视频提供的课题。——超市的扫码收银。

 


 

我们现在国内的移动支付发展的非常快,几乎很多人都不带现金出门了。

 

不管是看广告、交易、领券等等行为,扫码,已经成了日常必不可少的一种生活方式。

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!

那么如何做一个收银台的扫码工具呢?

 

先分析一下扫码的整个动作流程。

 

一般收银员会用一个扫码枪,对准码然后按一下。

成功扫码后,会“滴”一下,

于是在电脑里面就会出现产品的单价。

 

你有兴趣的话,可以先做做看以下的这些简单功能,发现问题后再来看余下内容。

1、做一把扫码枪(色感代替)

2、每扫一个码,主机叫一下

3、屏幕上同时显示单价和总价

 

这虽然并不是一个很难的功能,但要做到“体验”不错,还是要动点点小脑经的。当然,同样的目标是可以有多重编程方法来实现的。

 


 

我们首先要把思路整理一下:

 

1、扫码其实是一个输入的动作。这个动作是一个由3个动作组成的顺序流。按——扫——响。

2、在1#的动作过程中,其实存在了数据的搜集、处理的步骤在里面。

3、整个过程中有2个关键的变量数据,单价和总价。也可以理解为有2个需要最终落地的变量条件。

 

这样一来,我们无需编写,就知道在程序一开始,需要创建两个变量,单价/总价。 

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!

基本程序

 

首先,我们假设EV3的颜色传感器为一个扫码的设备。

不同颜色的色块,代表不同的二维码。

 

所以,扫码枪上面,我们可以再加上一个触觉传感器,用来启动扫码动作。

 

这个程序,就可以这样写出来。

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!

屏幕上显示的数据,将会是系统默认的颜色编号

 


定义商品价格

 

我们也可以自己设定一下“商品价格”。

假设:红色商品价格1,蓝色商品价格2,黄色商品价格3。

 

这个时候,就需要改变一下程序中,对于色彩值的定义了。

 

由于之前的值是颜色传感器直接给出的,所以,我们要改的话,就应该改这部分。 

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!

把颜色传感器换成“切换”模块的颜色传感器模式,然后将不同的颜色,重新写入一个变量,跟我们做电风扇时一样,把颜色重新定义出一个值来。

 

最后调用这个变量的数据,来显示,就可以完成单价的显示啦!

 


因为根据我们上面分析的结构,采集数据和扫码过程看似同时实现,其实是有先后的。

 

按——扫(得到数据)——定义数据——显示

 

所以,它们是同一行程序里面的一个顺序。这里会出现一个小插曲。

 

虽然这样的程序也能执行,但我们会发现,在程序第一次启动的时候,屏幕上是没有显示的。

 

而我们日常的收银台上,当归零后,也会显示价格为0。这是为了方便顾客确认价格归零的一个细节

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!

其实在我们日常的产品开发中,思路归思路,更多的是要考虑用户的感受。我们可以把“显示”的步骤单独拿出来。

 

即:后台搜集和处理数据,为一套流程;前端显示给用户看,为另一套流程。

两套流程并列存在,又互相影响。

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!

所以我会把程序拆分成两个独立的流程。

 


计算及显示总价

 

首先计算一下总价。

总价=单价+之前的总价

 

所以,它的公式就是下图:

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!

提取总价加上单价后再写入(记录)到总价保存。

 

这一部分,也属于数据处理的部分,所以,我们也把它放到第一行里面。

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!

然后在第二行也让它显示出来。

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!


 

需要注意的一些小细节

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!

1、屏幕擦除,由于两个显示模块都有擦除功能,所以在一个循环中,第二次会把第一次显示的东西,也就是我们程序中的原价,给擦除掉,造成只有一个价格显示在上面。

 

所以我们要把第二个擦除屏幕设定为“伪”。这样两个数据就会同时显示了。

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!

2、显示坐标要有变化,学生们常常忘了去设置。我们要记得设置一下哦!

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!

最后,这个程序就是这样的。 

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!

扫一下,哔一下,然后屏幕上显示单价和总价。

 


当然,还是回到那句话,同一个目标可以编的方法有很多。

 

下面这个编法,其实意思是一样的。不过从结构上,其实是有变化了,大家也可以理解下。

【 EV3基础应用 】学会整理程序的框架,做个扫码收款机试试吧!

这些机构上的小区别,会在一些特定的情况下,产生一些大区别。比如我们要在下面的显示循环中独立加入一些计算方法之类的。

具体还是要各位自己研究一下,举一反三,在不同的情况下用不同的思路。

 好啦,今天的课就到这里。下期再见!

您必须 登录 才能发表评论!