回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕学编程】行空板K10系列实验之从串口中读取数据控制RGB LED与显示屏改变颜色 简单

头像 驴友花雕 2025.02.28 13 0

00-.jpg

行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源,教学过程中无需额外连接其他设备,便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。

主要特点
集成摄像头&内置算法,可进行离线图像检测
集成麦克风&内置算法,可进行离线语音识别
集成扬声器&内置算法,可进行离线语音合成
2.8寸彩色屏幕,数据展示更清晰
集成度高,利于教学
接口丰富,兼容软件多,扩展性好

 

0-5.jpg

串口操作
串口即串行通信接口,是一种实现设备与设备之间、模块与设备之间数据传输的有线通信方式。
UNIHIKER K10支持2个串口通信,其中串口0为硬串口,通常用于程序上传和接收Mind+串口窗发送的数据。
 

06.jpg

串口操作相关积木

 

06=.jpg


串口操作相关积木说明

 

06-.jpg

辅助:屏幕显示相关积木

 

03.jpg

【花雕学编程】行空板K10系列实验之从串口中读取数据控制RGB LED与显示屏改变颜色
实验开源代码

代码
#include "unihiker_k10.h"  // 引入 UNIHIKER_K10 库,用于控制硬件行空板K10的功能

// 动态变量
volatile float mind_n_ChuanKouShuJu;  // 定义易变的浮点数变量,用于存储串口传入的数据

// 创建对象
UNIHIKER_K10 k10;  // 创建 行空板K10 对象,用于控制屏幕、LED等功能
uint8_t screen_dir = 3;  // 定义屏幕方向,值为3

// 主程序开始
void setup() {
    k10.begin();  // 初始化 行空板k10 对象
    k10.initScreen(screen_dir);  // 初始化屏幕方向
    k10.creatCanvas();  // 创建画布,用于显示内容
    Serial.begin(9600);  // 初始化串口通信,波特率为9600
    k10.setScreenBackground(0x000000);  // 设置屏幕背景为黑色
}

void loop() {
    // 检测串口是否有数据传入
    if (Serial.available()) {
        mind_n_ChuanKouShuJu = Serial.read();  // 读取串口数据并存储在变量 mind_n_ChuanKouShuJu 中
    }
    // 如果接收到字符 'R',设置屏幕和LED为红色
    if (mind_n_ChuanKouShuJu == (toascii('R'))) {
        k10.rgb->write(-1, 0xFF0000);  // 设置板载LED灯为红色
        k10.setScreenBackground(0xFF0000);  // 设置屏幕背景为红色
        k10.canvas->canvasText("                红色", 5, 0xFFFFFF);  // 显示文字 "红色",字体大小为5,颜色为白色
        k10.canvas->updateCanvas();  // 更新画布以显示内容
    }
    // 如果接收到字符 'G',设置屏幕和LED为绿色
    if (mind_n_ChuanKouShuJu == (toascii('G'))) {
        k10.rgb->write(-1, 0x00FF00);  // 设置板载LED灯为绿色
        k10.setScreenBackground(0x00FF00);  // 设置屏幕背景为绿色
        k10.canvas->canvasText("                绿色", 5, 0xFFFFFF);  // 显示文字 "绿色",字体大小为5,颜色为白色
        k10.canvas->updateCanvas();  // 更新画布以显示内容
    }
    // 如果接收到字符 'B',设置屏幕和LED为蓝色
    if (mind_n_ChuanKouShuJu == (toascii('B'))) {
        k10.rgb->write(-1, 0x0000FF);  // 设置板载LED灯为蓝色
        k10.setScreenBackground(0x0000FF);  // 设置屏幕背景为蓝色
        k10.canvas->canvasText("                蓝色", 5, 0xFFFFFF);  // 显示文字 "蓝色",字体大小为5,颜色为白色
        k10.canvas->updateCanvas();  // 更新画布以显示内容
    }
}

代码解读

1、串口监听:

使用 Serial.available() 检测串口是否有数据传入。

如果有数据,使用 Serial.read() 读取数据并存储到变量 mind_n_ChuanKouShuJu 中。

2、颜色切换:

根据接收的数据值切换 LED 和屏幕的颜色。

当收到字符 'R'(表示红色)时:

将 LED 设置为红色。

将屏幕背景设置为红色,并显示文字 "红色"。

当收到字符 'G'(表示绿色)时:

将 LED 设置为绿色。

将屏幕背景设置为绿色,并显示文字 "绿色"。

当收到字符 'B'(表示蓝色)时:

将 LED 设置为蓝色。

将屏幕背景设置为蓝色,并显示文字 "蓝色"。

4、视觉更新:

每次切换颜色后,都会调用 k10.canvas->updateCanvas() 方法更新画布,确保内容即时显示。

5、应用场景

该代码可用于通过串口指令控制 LED 灯光和屏幕颜色,例如用于调试、演示或互动项目。
 

Mind+图形编程

 

06-03-.jpg

实验串口分别输入“RGB”情况

 

06-04.jpg
06-05.jpg
06-06.jpg

实验场景图 

 

06-07 (1).jpg
06-07 (2).jpg
06-07 (3).jpg

评论

user-avatar
icon 他的勋章
    展开更多