【ProtoPie Connect 教程】第4课 - Arduino第2节:玩转自编Sketch代码-55导航网 漫画

引言

在Arduino第1节课程中,我们展示了通过Blokdots把Arduino连接到Pie上实现互动的过程。这个过程十分简单,实现起来也挺快,但只是这样连接起来使用的话,还是存在一些问题。比如说,按钮按下的判断反馈与实际情况相反了——没按下按钮时Blokdots报回1,而按钮已经按下时Blokdots却报回0。此外,旋转编码器转得太快时,还可以观察到一个被称为“反弹”的现象:编码器按照正向旋转、计数应该增大时,实际却得到了计数减小的结果;反之编码器反向旋转、计数应该减小时,实际却得到了计数增大的结果。

我们可以通过反接编码器的接地(GND)和供电(+)连接线来解决第一个问题,然后通过小心旋转旋钮、避免把旋转编码器转得太快来解决第二个问题。但毕竟这治标不治本,要从根本上解决这两个(以及更多其它的)问题,可以通过自行编写Arduino代码来实现。

但是… 写代码令人望而生畏!

的确,写代码的工作令人望而生畏,尤其对于设计师来说更是如此。幸运的是,网上有琳琅满目的Arduino代码范例可供参考,在Arduino圈子里,我们把用于Arduino的成品代码称为Sketch代码,实际上我写的Sketch代码很大程度上是基于[这篇文章](https://lastminuteengineers.com/rotary-encoder-arduino-tutorial/#:~:text=A rotary encoder is a,the knob is being rotated.)中学到的内容来写(chao)的。

其实不用太担心!在这个教程中你并不需要写任何代码,这个教程的目的也并不是教你怎么写代码,直接用我已经写好的Sketch代码就好了。这个教程的重点在于让你了解如何用Arduino的Sketch代码来与ProtoPie Connect一起工作,共同完成所需的设计。

学习内容

在本教程中,我们会覆盖以下知识点:

与ProtoPie Connect进行协同工作时需要留意的特定代码细节

验证代码正确性并上传到Arduino开发板中

在ProtoPie Connect中配置并启用Arduino插件

本教程约需15-20分钟完成。

所需资源

按照上一课所教的方式,正确连接Arduino和两个编码器

下载并安装Arduino软件

下载并解压以下Arduino Sketch代码:

使用编码器操作的空调遥控器.zip

启动Arduino软件并将下载的Sketch代码复制粘贴进去:

我们开始吧!

如果以上步骤都完成了,那就跟随以下视频内容进行操作吧!

参考

在视频中,我特意指出在编写与ProtoPie Connect共同工作的Arduino Sketch代码时需要记住的两个要点。现在我把这两点单独列在下面以便参考。

正确设置波特率

在Connect的Arduino插件中选择的波特率(即串行连接上检测数据更新的频率)要与代码中使用的波特率一致。

将消息发送到ProtoPie Connect

ProtoPie Connect不断搜索写入到串行连接上的消息,因此在代码中使用Serial.print()和Serial.println()就可以将消息发回到Connect上。对于没有值的消息,只需要按如下所示的方式将消息名称输出到串行连接上:

Serial.println(*<消息名>*),如:Serial.println("TEMP_UP");

对于带有值的消息,需要用两个竖线符号(|)分隔消息名称和消息值。

如:Serial.println("SET_TEMP||21");

ProtoPie Connect会以同等模式识别和接收这条名为SET_TEMP的消息,并得到21这个消息值。

如果要在将变量作为消息值,在Arduino代码中就不能将这两者放在同一行里了。比如以下例子就不会起作用:

Serial.println("SET_TEMP||" + temp);

这种情况下需要用两行代码来实现,先用Serial.print()实现第一部分,再用Serial.println()实现第二部分。例如:

Serial.print("SET_TEMP||");

Serial.println(temp);

这两个语句的区别在于,Serial.print只将指定内容写入到串行连接上,而Serial.println 除了写入到串行连接上之外还在写入内容的末尾自动添加了一个回车换行符以表示这是一行的结尾,或者说从ProtoPie Connect的视角来看,这才是一条已发送的完整消息。

ProtoPie Connect在对消息执行操作之前会一直等待一个回车换行符输出到串行接口上,基于这一点,在编写代码时就可以将一条消息分为多个部分,分别用Serial.print()语句来发出,发到最后一条消息时再使用Serial.println()语句表示整个消息已经完全发送到PotoPie Connect上。

例如:

Serial.print(message);

Serial.print(”||”);

Serial.println(value);

柔道馆教练瑞振遇到了被特聘为临时教练且还是国家队选手出身的在河。与大大咧咧的瑞振不同,在河冷漠的态度令人尴尬无比,于是在回家途中遇到的二人一时冲动便一起去喝了酒...当瑞振中酒醉中醒来的时候,睁开眼睛看到的第一个景象却是在河一边喊着自已的名字一边行不可描述之事!
2023-05-19
某个国家的Alpha三王子阿黛尔偶然救下了戴着项圈的Omega由依.看到了项圈上刻印着的风俗店的名字还有充满了伤疤的身体阿黛尔决定将由依藏到自己的家里.但是因为由依的发情期他也失去了理智本能般的和由依成为了伴侣.由依虽然害怕这个像野兽一样渴望他身体的阿黛尔,但是也一天天感受到了称自己为他的‘命运’的阿黛尔对他的温暖…曾用悲观的视角认为世界是冰冷的由依在阿黛尔的影响下融化了自己的身心…但是活在两个不同世界的人能够成为真正的伴侣吗.
2023-05-19
混混们经常光临的便利店,在那里兼职的余以俊虽然因为太危险想要辞职,但是工资是其他便利店的1.2倍!非常想要赚钱的以俊无视那些威胁继续兼职,但是某天却遇见比混混更像混混的范建祐他出现之后,其他混混都安静了…他可以继续平安无事的兼职么?
2023-05-19
绫亚为挽救生活条件恶劣的家人与自己,选择与独裁却多金的对象结婚。但结婚前夕,却遇到放蕩不羁的他,与他共度的那一晚,开始渐渐改变了绫亚的生活。
2017-06-05
在魔界以柔弱出名的下等魔族梦魔里路.在新魔王巴力上任的那天,里路对他一见钟情了.里路就这样一天天的怀念着巴力某天听自己的朋友里丁说巴力将梦魔通往人类世界获取精力的大门封锁了,便急忙朝着魔王城出发.成功进入魔王城的里路在门前被巴力发现陷入了危机之中,被恐怖包围的里路不自觉的对巴力施展了魅惑术…
2023-05-20
贤秀是业绩万年垫底的健身教练,而组长杰森凭着销售能力和亲密的肢体接触长年独佔业绩第一名的宝座。当青梅竹马来到健身房运动时,贤秀要怎么阻止她遭受到杰森的毒手呢?
2019-11-28
经过了一番努力,柯冠文终于被知名企业录取。然而就在他上班的第一天,年轻的美女组长就主动扑向他!!「组长…我们才认识第一天,妳会不会太热情了?」
2021-03-09
[李贤x允宰x叙厚的激情三角恋!]偶然在gay吧认识的李贤和允宰既是同属一个游泳队的选手,也是伴。从来都不分场地、尽情享受的二人,某一天却碰巧在事中被游泳馆职员叙厚撞见...
2023-05-19
体格很大却蠢笨又胆小的老虎,在偷听到人类之间的对话后,误以为‘柿饼’是很可怕的怪物。在黑暗中遇到小偷的他,以为小偷就是传说中的‘柿饼’,吓得晕厥过去了。而那个发现了稀有的老虎兽人的狡猾小偷,幻想着通过‘虎身买卖’一获千金!
2023-05-19
又名:秘戏图/野画集/夜画帐
故事简介:从出生起,白那环就是一位才华横溢的画家。然而,尽管他用假名出版了几本作品集,但他还是决定放弃绘画。然后,年轻的贵族尹胜浩闯入了他的生活。尹胜浩是一个臭名昭着的暴君,因其对创造力的贪得无厌而臭名昭着,他强迫白那环成为他的私人画家。然而,等待白那环的夜晚超出了他的想象…
2023-05-19