【行空板K10】怎么编译Arduino工程文件

目录

引言

工作原理

例子演示

结语


 

引言

前面已经介绍过Mind+的原理就是将Scratch的积木生成C++代码在行空板K10上运行。它整个平台是基于Ardunino的。今天再来详细说说。

工作原理

Mind+实际上是将Stretch转化为Arduino工程,再使用arduino-builder进行编译。

在执行arduino-builder之前,需要先执行:

cmd /c if not exist "C:\Users\haili_10137664\AppData\Local\DFScratch\build\partitions.csv" COPY "D:\Mind+20241220\Arduino\hardware\dfrobot\esp32s3\tools\partitions\large_spiffs_16MB.csv" "C:\Users\haili_10137664\AppData\Local\DFScratch\build\partitions.csv"

arduino-builder命令行如下:

arduino-builder.exe -logger=machine -hardware D:\Mind+20241220\Arduino\hardware -tools D:\Mind+20241220\Arduino\arduino-builder -tools D:\Mind+20241220\Arduino\hardware\tools\avr -libraries C:\Users\haili_10137664\AppData\Local\DFScratch\extensions\yuntian-json-thirdex\arduinoC\libraries -built-in-libraries D:\Mind+20241220\Arduino\libraries -fqbn=dfrobot:esp32s3:esp32s3bit:JTAGAdapter=default,PSRAM=opi,FlashMode=qio,FlashSize=16M,LoopCore=1,EventsCore=1,USBMode=hwcdc,CDCOnBoot=cdc,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,PartitionScheme=app3M_fat9M_16MB,CPUFreq=240,UploadSpeed=921600,DebugLevel=none,EraseFlash=none,Model=None -vid-pid=303A_1001 -ide-version=10808 -build-path C:\Users\haili_10137664\AppData\Local\DFScratch\build -warnings=none -build-cache C:\Users\haili_10137664\AppData\Local\DFScratch\cache -prefs=build.warn_data_percentage=75 -verbose C:\Users\haili_10137664\AppData\Local\DFScratch\dfrobot\dfrobot.ino

该命令是用于Arduino IDE的构建工具 arduino-builder 的命令行参数,用于预处理Arduino代码。以下是该命令中各个参数的解释:

  • -logger=machine:指定日志记录器的类型为“machine”,通常用于机器可读的输出格式,便于自动化工具解析。

  • -hardware D:\Mind+20241220\Arduino\hardware:指定硬件相关的文件夹路径。Arduino IDE会在这个路径下查找板卡定义文件(boards.txt)和相关的库文件。

  • -tools D:\Mind+20241220\Arduino\arduino-builder:指定构建工具的路径。arduino-builder 本身就是一个构建工具,这里指定其路径。

  • -tools D:\Mind+20241220\Arduino\hardware\tools\avr:指定额外的工具路径,这里指定了AVR工具链的路径,用于编译AVR芯片的代码。

  • -libraries C:\Users\haili_10137664\AppData\Local\DFScratch\extensions\yuntian-json-thirdex\arduinoC\libraries:指定用户库文件夹的路径。Arduino IDE会在这个路径下查找用户自定义的库文件。

  • -built-in-libraries D:\Mind+20241220\Arduino\libraries:指定内置库文件夹的路径。Arduino IDE会在这个路径下查找Arduino IDE自带的库文件。

  • -fqbn=dfrobot:esp32s3:esp32s3bit:JTAGAdapter=default,PSRAM=opi,FlashMode=qio,FlashSize=16M,LoopCore=1,EventsCore=1,USBMode=hwcdc,CDCOnBoot=cdc,MSCOnBoot=default,DFUOnBoot=default,UploadMode=default,PartitionScheme=app3M_fat9M_16MB,CPUFreq=240,UploadSpeed=921600,DebugLevel=none,EraseFlash=none,Model=None:指定完整的板卡名称(FQBN,Fully Qualified Board Name),用于确定编译的板卡类型和配置。这里指定了DFRobot的ESP32-S3板卡,并且定义了多种配置选项,如PSRAM类型、Flash模式、大小、CPU频率等。

  • -vid-pid=303A_1001:指定USB设备的制造商ID(VID)和产品ID(PID)。这用于识别连接到计算机的Arduino板卡。

  • -ide-version=10808:指定Arduino IDE的版本号。这通常用于确保构建过程与特定版本的IDE兼容。

  • -build-path C:\Users\haili_10137664\AppData\Local\DFScratch\build:指定构建过程中的临时文件存放路径。

  • -warnings=none:指定警告级别的设置,这里是“none”,表示不显示任何警告信息。

  • -build-cache C:\Users\haili_10137664\AppData\Local\DFScratch\cache:指定构建缓存的路径。构建缓存用于存储中间编译结果,以加快后续构建速度。

  • -prefs=build.warn_data_percentage=75:设置构建偏好,这里指定了数据使用百分比的警告阈值为75%。

  • -verbose:开启详细输出模式,会显示更多的构建过程信息,便于调试和查看构建细节。

  • C:\Users\haili_10137664\AppData\Local\DFScratch\dfrobot\dfrobot.ino:指定要预处理的Arduino源文件路径。这个文件是Arduino程序的主文件,通常包含 setup()loop() 函数。

Mind+编译的时候,第一步先加了-preprocess参数。-preprocess:指示 arduino-builder 进行预处理操作。预处理通常包括展开宏定义、包含头文件等操作,生成一个预处理后的代码文件,通常是 .cpp 文件。第二步才会进行编译。而且Mind+在编译后会删除所有中间文件,只保留build目录中的三个文件。

当然也可以不用那么麻烦,直接把ino文件的内容复制到Mind+手工代码窗口也行。

例子演示

Mind+所带的库代码中有很多不错的例子,都是用Arduino写的,比如\Mind+20241220\Arduino\hardware\dfrobot\esp32s3\libraries\unihiker_k10\examples目录下的就有很多。

比如下面就是unihiker_k10\examples\lcd\canvas\canvas.ino的运行结果。

5ef473c087934b43a56f624d97dcb241.jpeg

结语

直接写Arduino的代码有方便的地方,特别是对于熟悉C++的开发者而言。不过这显然不是官方所支持的方式。行空板K10是面向中小学的开发板,对于大多数学生来说,积木式的开发仍然是最好选择。

 

行空K10可用于动态测量温度值。在【花雕学编程】行空K10系列实验中,有载传感器动态测量光线强度、温度和湿度值的实验,其开源代码中通过创建AHT20对象aht20来获取温度数据,在主程序的循环部分,将温度值显示在画布上,代码如下: ```cpp #include "unihiker_k10.h" // 引入 UNIHIKER_K10 行空K10库 // 创建对象 UNIHIKER_K10 k10; // 创建 UNIHIKER_K10 对象 k10 行空 uint8_t screen_dir = 2; // 定义屏幕方向变量,并初始化为2 AHT20 aht20; // 创建 AHT20 对象 aht20 // 主程序开始 void setup() { k10.begin(); // 初始化 k10 对象 k10.initScreen(screen_dir); // 初始化屏幕方向 k10.creatCanvas(); // 创建画布 } void loop() { delay(1000); // 延迟1秒 k10.canvas->canvasText("行空K10传感器", 5, 0x0000FF); // 在画布上显示文本 "行空K10传感器",字体大小为5,颜色为蓝色 (0x0000FF) k10.canvas->canvasText((String("光线:") + String(k10.readALS())), 7, 0x0000FF); // 在画布上显示光线值,字体大小为7,颜色为蓝色 (0x0000FF) k10.canvas->canvasText((String("温度:") + String(aht20.getData(AHT20::eAHT20TempC))), 8, 0x0000FF); // 在画布上显示温度值,字体大小为8,颜色为蓝色 (0x0000FF) k10.canvas->canvasText((String("湿度:") + String(aht20.getData(AHT20::eAHT20HumiRH))), 9, 0x0000FF); // 在画布上显示湿度值,字体大小为9,颜色为蓝色 (0x0000FF) k10.canvas->updateCanvas(); // 更新画布 } ``` 通过上述代码,行空K10能够实时测量并显示环境温度值,为温度相关的实验和应用提供了支持[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神一样的老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值