【行空板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 是一款专为快速体验物联网和学习人工智能设计的开发学习,其易用性和强大的功能使其成为适合各个年龄段学生的理想选择[^1]。以下是一个基于行空 K10 的屏幕显示循环图文“行空 K10”的代码示例,该示例展示了如何初始化屏幕、设置背景颜色并实现循环显示文字。 #### 初始化屏幕并显示循环图文的代码示例 ```python from pinpong.board import Board, Pin from pinpong.extension.unihiker import * # 初始化行空对象 k10 = Unihiker() def setup(): # 初始化行空 k10.begin() # 初始化行空对象[^2] # 初始化屏幕方向 k10.initScreen(screen_dir=3) # 设置屏幕方向[^2] # 创建画布 k10.creatCanvas() # 创建画布[^2] # 设置屏幕背景颜色为黑色 k10.setScreenBackground(0x000000) # 设置背景颜色为黑色 def loop(): while True: # 显示文字 k10.clearDisplay() # 清除屏幕内容 k10.setTextSize(2) # 设置文字大小 k10.setTextColor(0xFFFFFF) # 设置文字颜色为白色 k10.drawText("行空 K10", 50, 50) # 在屏幕上绘制文字 k10.display() # 刷新屏幕显示 time.sleep(1) # 延时一秒 # 显示图案(例如一个简单的矩形) k10.drawRect(50, 100, 100, 50, 0xFFFFFF) # 绘制矩形 k10.display() # 刷新屏幕显示 time.sleep(1) # 延时一秒 # 调用函数 setup() loop() ``` #### 代码说明 - `k10.begin()`:初始化行空对象,确保硬件正常工作[^2]。 - `k10.initScreen(screen_dir)`:设置屏幕方向,参数`screen_dir`可选值为0至3,分别代表不同的屏幕旋转角度。 - `k10.creatCanvas()`:创建一个用于绘图的画布[^2]。 - `k10.setScreenBackground(color)`:设置屏幕背景颜色,参数`color`为十六进制颜色值。 - `k10.drawText(text, x, y)`:在屏幕上指定位置`(x, y)`绘制文字。 - `k10.drawRect(x, y, width, height, color)`:绘制矩形,参数分别为左上角坐标、宽高和颜色。 此代码示例展示了如何使用行空 K10 实现屏幕上的循环图文显示,适用于信息科技创新大赛中的创意智造项目。 #### 硬件控制扩展示例 以下是一个扩展示例,展示如何通过按钮控制 LED 灯的开关状态: ```python from pinpong.board import Board, Pin # 初始化引脚 button_pin = Pin(Pin.P16, Pin.IN) # 按钮连接到P16 led_pin = Pin(Pin.P17, Pin.OUT) # LED连接到P17 def loop(): while True: button_state = button_pin.read_digital() # 读取按钮状态 if button_state == 0: # 按钮按下时 led_pin.write_digital(1) # 打开LED灯 else: led_pin.write_digital(0) # 关闭LED灯 # 调用函数 loop() ``` #### 代码说明 - `Pin(Pin.P16, Pin.IN)`:将 P16 引脚设置为输入模式,用于检测按钮状态。 - `Pin(Pin.P17, Pin.OUT)`:将 P17 引脚设置为输出模式,用于控制 LED 灯。 - `button_pin.read_digital()`:读取按钮的数字状态,返回值为 0 或 1。 - `led_pin.write_digital(state)`:设置 LED 灯的状态,`state` 参数为 0 或 1。 此代码示例展示了如何通过按钮控制 LED 灯的开关状态,适用于信息科技创新大赛中的互动硬件设计项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

神一样的老师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值