简介

此文档旨在输出在希沃 XP12A 平板上使用 Codecraft 编程平台的教程,从而更好地用 XP12A 学好《 Arduino 图形化编程轻松学》一书。
《 Arduino 图形化编程轻松学》详细的介绍了使用柴火创客教育自主研发的图形化编程平台 Codecraft ,如何给矽递推出的 Arduino 入门套件编程。书中课程包含了三个主要部分,分别为”入门套件课程”,”入门+拓展套件项目”,和”踏进未知领域”。
了解《 Arduino 图形化编程轻松学》可以访问:https://www.tinkergen.cn/book_kyyjqm
更多关于 Codecraft 详细介绍访问”Codecraft 使用指南”:https://www.yuque.com/tinkergen-help-cn/codecraft
image.png


目录

  • **部署流程如何配置 Codecraft + Arduino 的编程环境,包含软硬件配置。

  • 示例1:Arduino 程序 Blink
    对应书中第1课,上手 Arduino 第一步的简单程序。

  • 示例2:三轴加速度计
    对应书中第13课,典型的 Arduino + 感应器的应用。

  • 示例3(拓展):可转头的遥控电风扇
    对应书中第17课,结合拓展包和 Arduino 开发板,多部件联动的程序。

  • 程序错误排查技巧
    利用串口监视器排查程序的错误。

  • **FAQ可能会遇到的问题和对应的解决方法


:::info ⚠️:下文中的注意标识 ⚠️ 为可能会遇到的问题,和解决办法。
💡:下文中的提示标识💡为一些操作技巧。 :::

部署流程

1.1 硬件列表

序号 配件 数量
1 希沃 XP12A 平板电脑 1
2 Grove Arduino 入门套件 (含开发板和 Micro-USB 线) 1
5 教育拓展包 套件 1
6 Type C 转 Micro USB 线 1

⚠️:Type C 转 Micro USB 线( OTG 线),用来连接希沃平板和 Grove Arduino 入门套件.
Grove Arduino 入门套件附带 Micro-USB 线用来连接 PC,请注意区分。

1.2 接线

在希沃的安卓平板上使用 Codecraft - 图2

1.3 软件准备

1.3.1 QQ + QQ浏览器

推荐老师上传”QQ”和”QQ 浏览器”到应用市场,让学生们下载。
打开应用商店,下载”QQ”,并登录学生自己的QQ号。并下载QQ浏览器。

在希沃的安卓平板上使用 Codecraft - 图3
随后老师可以通过 QQ 发 Codecraft 的网址给学生,网址为:https://ide.tinkergen.com/
在平板上长按消息复制,随后在浏览器中粘贴该地址,并访问。
在希沃的安卓平板上使用 Codecraft - 图4

💡:可以直接点击”粘贴并转到”。

打开链接后可以看到 codecraft 的界面。
image.png

1.3.2 ArduinoDroid 配置

1.3.2.1 安装 ArduinoDroid

老师上传”ArduinoDroid”到应用市场,让学生们下载。
打开应用商店,找到”ArduinoDroid”,并安装。
在希沃的安卓平板上使用 Codecraft - 图6

1.3.2.1 设置机型

进入”ArduinoDroid” App, 点击右上方image.png图标进入菜单,并依次点击”设置”,”开发板型号”,”Arduino”,选中”Uno”选项。
在希沃的安卓平板上使用 Codecraft - 图8
在希沃的安卓平板上使用 Codecraft - 图9

1.3.2.2 上传器配置

进入”ArduinoDroid” App, 点击右上方image.png图标进入菜单,并点击”设置”,”应用设置”。
在希沃的安卓平板上使用 Codecraft - 图11
进入到应用设置后,找到”上传”,”上传器”选项,点击”上传器”。
在希沃的安卓平板上使用 Codecraft - 图12
选中”Avrdude”选项。
在希沃的安卓平板上使用 Codecraft - 图13

1.3.2.3 库文件同步

库文件是部件所需要的工具箱,内置很多变量函数等,方便用户使用。
库文件和开发者套件,以及课程的对应关系如下,不在表中的部件则是Arduino原生支持,不需要下载和安装库文件。

部件名 对应库文件 对应课程 库文件下载链接
OLED 屏幕 U8g2 第7课 点亮 OLED 显示屏,开启可视化交互

| https://files.seeedstudio.com/wiki/Grove_Beginner_kit/library/U8g2-2.32.15.zip | | 光传感器 | LED_Bar | 第9课 “看见”声音与制作声控灯
| https://files.seeedstudio.com/wiki/Grove_Beginner_kit/library/Grove_LED_Bar-master.zip | | 温湿度传感器 | Temperature_And_Humidity Sensor | 第12课 小小气象站 | https://files.seeedstudio.com/wiki/Grove_Beginner_kit/library/Grove_Temperature_And_Humidity_Sensor-master.zip | | 三轴陀螺仪 | LIS3DHTR | 第13课 三轴加速度计——运动与平衡 | https://files.seeedstudio.com/wiki/Grove_Beginner_kit/library/Seeed_Arduino_LIS3DHTR-master.zip | | 气压传感器 | BMP280 | 第11课 气压计与高度计 | https://files.seeedstudio.com/wiki/Grove_Beginner_kit/library/Grove_BMP280-master.zip | | 红外接收器 | IRremote | 第17课 扩展项目2 :可转头的遥控电风扇 | https://files.seeedstudio.com/wiki/Grove_Beginner_kit/library/IRremote-3.7.0.zip | | 伺服电机 | Servo | 第17课 扩展项目2 :可转头的遥控电风扇 | https://files.seeedstudio.com/wiki/Grove_Beginner_kit/library/Servo-1.1.8.zip | | 超声波测距传感器 | Ultrasonic | 第19课 超声波测距传感器应用22 | https://files.seeedstudio.com/wiki/Grove_Beginner_kit/library/Seeed_Arduino_UltrasonicRanger-master.zip |

💡:老师们可以在对应课程开始的时候让学生们下载下载库文件,并安装。安装库文件也是编程技能的一部分。

⚠️:老师需要把库文件链接通过 QQ 传给学生。

若该课程需要下载库文件到平板电脑,老师们需要把库文件下载链接通过 QQ 发给学生,学生在平板的 QQ 中复制链接后,粘贴到 QQ 浏览器,访问链接下载。
在希沃的安卓平板上使用 Codecraft - 图14
在希沃的安卓平板上使用 Codecraft - 图15
点击”开始下载”,等待下载完毕后,进入”ArduinoDroid” App, 点击右上方image.png图标进入菜单,点击”库”,”添加 .zip 库”。
在希沃的安卓平板上使用 Codecraft - 图17
点击绿色箭头image.png
在希沃的安卓平板上使用 Codecraft - 图19

⚠️:若点击绿色箭头之前就看到”QQBrowser”文件夹,请忽略该文件夹,继续按照文档操作。

找到并点击”QQBrowser”文件夹。
在希沃的安卓平板上使用 Codecraft - 图20
点击”其他”。
在希沃的安卓平板上使用 Codecraft - 图21
点击一下本课程需要用到的库文件,右上角”完成”按钮就会出现,点击”完成”,库文件会开始安装。
在希沃的安卓平板上使用 Codecraft - 图22
若提示”已安装”,即为安装成功。
在希沃的安卓平板上使用 Codecraft - 图23

示例1:Arduino 程序 Blink

2.1 点亮LED操作流程

2.1.1 进入 Codecraft 编程界面

平板主页面点击”QQ 浏览器”,重复部署流程1.3.1步骤。
在希沃的安卓平板上使用 Codecraft - 图24
点击”Arduino (Uno/Mega/BeginnerKit)”选项。
在希沃的安卓平板上使用 Codecraft - 图25
下图即为 Codecraft 编程界面。
image.png

2.1.2 添加初始化与循环积木

点击”初始化”,点击积木,如需移动积木,可长按拖动积木到空白的工作区。

在希沃的安卓平板上使用 Codecraft - 图27

💡:若想删除该积木,可长按改积木,并拖拽至左边垃圾桶栏,右边垃圾桶图标。

在希沃的安卓平板上使用 Codecraft - 图28
或者长按并放开积木点击删除选项
在希沃的安卓平板上使用 Codecraft - 图29

2.1.3 点亮 LED 灯的程序

点击”Grove 数字”,点击”LED灯选项”,添加该积木到工作区。
拖曳并嵌入初始化与循环积木的初始化部分,如下图所示。
在希沃的安卓平板上使用 Codecraft - 图30
对应下表可知 LED 对应的引脚/地址为 D4。
image.png

💡:也可以参考 Grove Arduino 入门套件模块上方的标识。

在希沃的安卓平板上使用 Codecraft - 图32
点击 LED 积木右边选项,选中”D4”,保持右边选项”ON” (打开 LED)。
在希沃的安卓平板上使用 Codecraft - 图33

2.1.4 转换图形化语言至C语言

点击上方转换按钮,将图形化语言转换为C语言。
在希沃的安卓平板上使用 Codecraft - 图34

💡: 强烈建议有条件的情况下,学生都创建自己的Codecraft账户,完成作品后可以及时保存,还支持跨平台编辑(例如在PC/手机上编辑,同步到希沃平板并上传到开发板)。

在希沃的安卓平板上使用 Codecraft - 图35
点击”复制代码”,将C语言代码复制到系统剪切板。
在希沃的安卓平板上使用 Codecraft - 图36
退出”QQ浏览器”,打开”ArduinoDroid” App, 长按代码编辑区,点击粘贴。
image.png
在希沃的安卓平板上使用 Codecraft - 图38
此时先清理下编译缓存。路径:image.png更多菜单, “活动”,”清除编译缓存”。
在希沃的安卓平板上使用 Codecraft - 图40

⚠️:此步骤很有必要,可以避免很多编译和上传错误。

点击右上角闪电image.png图标,进行编译,并等待编译完成。
在希沃的安卓平板上使用 Codecraft - 图42

💡:如果直接点击下载会报错。

2.1.5 连接入门套件并上传

使用 micro USB 转Type C 线将 Grove Arduino 入门套件接入希沃平板电脑。
在希沃的安卓平板上使用 Codecraft - 图43
点击右上角下载图标image.png,将程序写入开发板。
在希沃的安卓平板上使用 Codecraft - 图45

⚠️:如果使用鼠标键盘设备,在点击下载后可能出现不止一个usb设备,此时可以尝试拔掉鼠标键盘,usb 拓展坞等 usb 设备,使用 OTG + micro USB 接口直接连接 Arduino,点击仅剩的一个 USB 设备

在希沃的安卓平板上使用 Codecraft - 图46
如见到如下图所示窗口,点击”确定”即可,随后等待程序写入。
image.png

2.1.6 验证程序

套件上 LED 灯点亮,程序上传成功。
image.png

2.2 让 LED 点亮一秒操作流程

2.2.1 LED 点亮一秒的程序

长按 LED 灯积木,并点击”复制”。
image.png
将第二个 LED 灯积木右边的选项设为”OFF”(关闭)。
image.png
点击”控制”选项,点击”延时”积木,并移动到如下图所示位置。
image.png

2.2.2 连接入门套件并上传

重复2.1.4 和 2.1.5步骤,将程序上传至 Arduino。

2.2.3 验证程序

待程序上传后,LED 会亮起1秒,随后关闭。

2.3 让LED闪烁操作流程

2.3.1 LED闪烁的程序

参考1.2.1,如下图所示,将代码部分由”初始化 setup” 移到 “循环 loop” 部分。
image.png

2.3.2 连接入门套件并上传

重复2.1.4 和 2.1.5步骤,将程序上传至 Arduino。

2.3.3 验证程序

待程序上传后,LED 会开始闪烁,间隔一秒。

示例2:三轴加速度计

3.1 广播三轴加速度计三轴数据

重复1.1.1,1.1.2步骤。

3.1.1广播三轴数据的程序

点击”串口”,”波特率”,并将此积木嵌入初始化部分。

再次点击”串口”,点击”图表打印”,并将图表打印积木嵌入循环凹槽内。
在希沃的安卓平板上使用 Codecraft - 图53
点击”Grove I2C”,”三轴数字加速度(M)”积木。并把该积木拖动嵌入到”图表打印”的空格。
在希沃的安卓平板上使用 Codecraft - 图54

💡:若遇到”三轴数字加速度(M)”积木无法嵌入图标打印空格,可以尝试按住积木图标部分,再尝试拖动嵌入。

在希沃的安卓平板上使用 Codecraft - 图55
长按三轴数字加速度(M)”积木,并点击复制,重复两次,拖动到”图表打印”的空格,并将两个新积木分别在下拉菜单中选中 “Y”和”Z”选项。

3.1.2 初始化串口监视器

打开 ArduinoDroid,点击右上方image.png图标。
在希沃的安卓平板上使用 Codecraft - 图57
点击右上角image.png图标,点击”波特率”,选择”9600”。
在希沃的安卓平板上使用 Codecraft - 图59

3.1.3 验证程序

重复2.1.4,2.1.5步骤。
打开串口监视器, 将会看到实时X,Y,Z轴的加速度数据(单位是重力加速度单位G)。
image.png

3.2 姿态稳定检测仪

重复1.1.1,1.1.2步骤。

3.2.1 姿态稳定检测仪的程序

点击”控制”,”如果 那么 否则”积木,并嵌入到循环部分
在希沃的安卓平板上使用 Codecraft - 图61
点击”运算”,”或 “积木,并嵌入到”如果”之后。
在希沃的安卓平板上使用 Codecraft - 图62
点击”运算”,”> “积木,将数值改为0.2,点击加入工作区,并复制。
在希沃的安卓平板上使用 Codecraft - 图63
点击”Grove I2C”,”三轴速度加速计(M) “积木,复制,将第二个”三轴速度加速计(M) “积木在下拉选项中选中Y,并嵌入到”或”积木左右,作为触发条件。
在希沃的安卓平板上使用 Codecraft - 图64
将两个”三轴速度加速计(M) “积木分别嵌入两个”>”积木。
image.png
将两个”>”积木分别嵌入”或”积木左右(因为是或,所以左右不限)。
image.png
点击”Grove 数字”,点击”LED灯”积木,再点击”Grove 数字”,”蜂鸣器”积木,把LED管脚修改为”D4”,蜂鸣器管脚修改为”D5”,并把两个积木拼接在一起。(参考1.1.3)
image.png
复制这个积木组合,并把两个积木的最后一个选项都选为”OFF”.
image.png
把第”ON”积木组合嵌入到”如果”凹槽,把”OFF”积木组合嵌入到”否则”凹槽。
image.png

3.2.2 验证程序

重复2.1.4,2.1.5步骤。
如下图所示。将入门套件进行倾斜,可以看到 LED 变量和听到蜂鸣器的告警。
在希沃的安卓平板上使用 Codecraft - 图70

示例3(拓展):可转头的遥控电风扇

4.1 接线

在希沃的安卓平板上使用 Codecraft - 图71

4.2 实现电风扇的基本开关功能

4.2.1 实现电风扇开关的程序

重复2.1.1 和2.1.2。
点击”Grove数字”,”迷你风扇模块”积木,把管脚设为D7,随后复制该积木,在第二个积木中把第二个选项设为OFF。
在希沃的安卓平板上使用 Codecraft - 图72
在”控制”中找到”延时 毫秒”,并与风扇积木一起组合,参考下图:
image.png

4.2.2 验证程序

确保硬件如示例4.1所示接好,随后重复2.1.4和2.1.5,此时迷你风扇马达应该开始转动,一秒后停止转动,循环往复。

4.3 获取遥控器按键的返回值

4.3.1 遥控器按键的返回值的程序

重复2.1.1和2.1.2.
点击”串口”,”波特率”。
在希沃的安卓平板上使用 Codecraft - 图74
点击”变量”,”建立一个变量”,最好命名为英文。再添加一个变量和”将变量设为”积木。

⚠️:变量如果命名为中文,转换为代码后无法正确显示。

在希沃的安卓平板上使用 Codecraft - 图75
点击”Grove 数字”,”红外接收模块”。

⚠️:该积木的颜色和书本中的颜色不一样。

在希沃的安卓平板上使用 Codecraft - 图76
添加控制和运算积木。
在希沃的安卓平板上使用 Codecraft - 图77
参考下图组装积木。
image.png

4.3.2 验证程序

重复2.1.4和2.1.5,再重复3.1.2,此时串口监视器中会显示红外遥控发出的按键号码。
并记录下播放,音量减少和音量增加三个按钮所对应的号码。
在希沃的安卓平板上使用 Codecraft - 图79
播放按钮:16720605
音量增加:16748655
音量减少:16754775

⚠️:每个遥控的按键号码不一定和文中一样,请根据情况修改。

4.4 遥控控制电风扇

4.4.1 遥控控制电风扇的程序

程序的基本逻辑如下:

  • 添加变量 state 用作控制电风扇的开关,state = 1 开启电风扇,否则关闭
  • 添加 angle 变量 用作控制电风扇摇头的角度,初始默认为90度。
  • 如果红外接收模块 获取值 = 16720605,就让变量 state +1,如果 state =2,就将 state 重置为 0,以此构成一个可以循环的开关
  • 如果红外接收模块 获取值 = 16748655,就让变量 angle 增加 30
  • 如果红外接收模块 获取值 = 16754775,就让变量 angle 减少 30
  • 当 angle 变量 大于 180 度,就保持 180 度不变
  • 当 angle 变量 小于 0 度,就保持 0 度不变
  • 舵机根据 angle 变量 的值转动到指定角度

最终的程序如下图所示。(积木位置请参考前文)
image.png

⚠️:积木组合方式和书本中的不一样,推荐参考本文档中中的组合方式。

4.4.2 验证程序

重复2.1.4和2.1.5,此时按播放可以开启风扇模块,再按一次可以关闭。
按音量加减可以控制舵机角度。
在希沃的安卓平板上使用 Codecraft - 图81

程序错误排查技巧

示例4.4较为复杂,在该情况下需要一定的排查技巧。主要依赖串口来帮助我们反馈,每个数值是否如预期。

5.1 错误排查的程序

以示例3.4为例,参考下图程序。
在初始化部分添加串口初始化积木,在循环的结尾添加文本输出积木组合。
在希沃的安卓平板上使用 Codecraft - 图82

💡:之所以添加”code > 0”积木,是因为红外信号是持续读取的,闲置时读取数值为0,红外遥控触发后数值>0,如果不加上这个限制条件,数据会刷屏,影响判断。
所以这个”code > 0”积木作为串口输出的限制条件,可以在别的程序中换成别的限制条件,例如在超声波距离感应器的程序中,换成”距离>10”,即距离>10,串口才输出数据。或者在声音传感器的程序中,换成”读数>100”,即声音读数>100,才触发串口输出。上文中的”0”,”10”,”100”数值,就是程序中的阈值(threshold)。

在希沃的安卓平板上使用 Codecraft - 图83

5.2 验证程序

重复2.1.4和2.1.5,重复3.1.2。此时按遥控按钮,串口监视器会有相应的反馈数据,可以以此为依据检查程序。
在希沃的安卓平板上使用 Codecraft - 图84

💡:Windows 版本的 Arduino IDE 软件的串口监视器路径为点击”工具”,”串口监视器”。
Windows 版本的 Arduino IDE 软件可作为老师们排查疑难问题的工具。

image.png

FAQ

1. ArduinoDroid的示例代码在哪里呢

软件自带的简单示例,可在App中的”草稿”,”示例”菜单中找到。
在希沃的安卓平板上使用 Codecraft - 图86
第三方库,如初学者套件中的 OLED 屏幕的示例代码,可在”草稿”,”示例库”,”用户程序库”,”U8g2”菜单中找到。

💡:部件与库文件的对应关系可以参考部署流程1.3.2.3

在希沃的安卓平板上使用 Codecraft - 图87

2. 若在 ArduinoDroid 上传代码到开发板时遇到提示设备型号不对怎么办?

image.png
造成该问题的可能原因为希沃平板接入了多个 USB 设备(键盘,鼠标等),选择上传设备时没有选中 Arduino 开发板(设备名称不固定,所以键盘和 Arduino 开发板的名称没有明确区分)。
在希沃的安卓平板上使用 Codecraft - 图89
解决方法: 由于希沃平板无法完全关掉软件,只能诱导 ArduinoDroid 崩溃,再进入 ArduinoDroid。请参考以下两种诱导崩溃的办法。
重新进入 App 后,OTG 接口只连接Arduino开发板,这时点击上传,上图的窗口会消失。

⚠️:以下办法并非必现,尝试1-2次还未能关闭 ArduinoDroid 属于正常情况,可以再多试几次,同时结合编译image.png和下载image.png按钮。

  1. 点击”草稿”,”示例”或者”示例库”,往后随意选择一个示例代码。

在希沃的安卓平板上使用 Codecraft - 图92

  1. 点击”设置”,”开发板型号”,”Arduino”,在这级菜单中随意选中一个 Uno 以外的型号,如 Uno CH340G

    ⚠️:若采用此办法,在重新进入 ArduinoDroid 后需要重新把机型配置回 Uno.

在希沃的安卓平板上使用 Codecraft - 图93

3. 若遇到积木无法嵌入

解决方法:若遇到积木无法嵌入其他积木的空格,可以尝试按住积木图标部分,再尝试拖动嵌入。
在希沃的安卓平板上使用 Codecraft - 图94
或者可以观察一下可嵌入空格的形状,有六边形和椭圆形两个形状的可嵌入式积木。
image.pngimage.png

4. 若遇到编辑运算框时数字输入错误

偶发性错误,如在”>”积木右框中输入0.2,结果显示为20.。在实际代码中也会体现为20.
image.png
解决方法:若要输入0.2,则可以省略0,直接输入.2,此时会被正确识别,可以参考2.1.4验证。

5. 上传错误,配置都基本正确上

比如之前成功上传了 LED 闪烁的程序,此时上传了一个LED常亮程序,ArduinoDroid显示上传错误,开发板上的 LED 灯还是保持闪烁(新程序没有写入成功,开发板选择运行储存在内存里的程序)。
不同的程序有不同的判定方式,以上仅为一个简单例子。
image.png
解决方法:使用 Arduino Windows 版本尝试上传一个简单测试程序(不需要自己编写,可以参考电脑版本 Arduino 的示例并上传),上传成功并运行正常后,开发板与 Windows 电脑断开连接即可在希沃平板上正常使用。

💡:测试程序可以是LED灯,或者是类似示例2.1的程序,再用2.1.2的方法验证。
推荐程序为”Basics”, “Blink”.

image.png

6. Codecraft 代码转换后复制失败

该问题为平板电脑的读取/编辑权限没有授予给浏览器。
解决方法:参考示例2.1.4,建立好学生的账户,点击”保存”后,刷新页面,重新加载程序,再尝试复制。
ea5b019dc04a8077fd35b1e073cd2ed.png

7. 若打卡串口监视器后卡住

由于串口数据量大,受平板机能限制,大概率 ArduinoDroid App 会卡住。
解决方式:第一件事就是断开平板和开发板的连接,静置一会平板,大概一分钟左右,就会回到 ArduinoDroid 主界面。
如果还无法解决,可以尝试 FAQ 2 的办法。

8. 编译错误

image.png
解决方法: “活动”, “清除编译缓存”。
在希沃的安卓平板上使用 Codecraft - 图102

9. 遥控返回值不固定

示例3中红外遥控返回值可能会不固定,造成该问题的原因可能有两种:

  1. 红外干扰,如果有多个红外信号被红外接收器收到,就会导致接收到乱码。

如多个遥控一起发送红外命令至接收器。
解决办法:与旁边的遥控保持一定距离,保证调试环境里无其他红外或者遥控的信号。

  1. 遥控电池电量低。

解决办法:更换电池。

10. 上传程序成功,但是开发板还在跑上一个程序

举例:上一个程序为 Blink,上传了别的程序成功后,LED 还在闪烁,但是 ArduinoDroid 没有任何报错
此时接线,设备设置,库文件等应该都正确配置好了,造成该问题的可能原因为编译缓存已满。
解决办法:参考 FAQ 8.