HaaS EDU场景式应用学习 - 分歧争端机

简介: HaaS EDU场景式应用学习 - 分歧争端机

在这里插入图片描述

实验介绍

分歧争端机使用的场景是当出现分歧时,分别摇一摇HaaS EDU K1来摇出一个0到100之间的数字,通过比较谁摇出的数字大来解决分歧的一种方法。本质是通过摇一摇这个动作来随机产生一个数字。这个实验的核心如何通过加速度传感器来检测到摇一摇这个动作,并随机生成一个数字。

显示效果

O1CN019OP4kF22I19ZudgVF_!!6000000007096-1-tps-1200-800.gif

涉及知识点

  • 三轴加速度传感器的原理和使用
  • 随机数生成的方法
  • OLED绘图

开发环境准备

硬件

开发用电脑一台
HAAS EDU K1 开发板一块
USB2TypeC 数据线一根
  • 1
  • 2
  • 3

软件

AliOS Things开发环境搭建

开发环境的搭建请参考 @ref HaaS_EDU_K1_Quick_Start (搭建开发环境章节),其中详细的介绍了AliOS Things 3.3的IDE集成开发环境的搭建流程。
  • 1

HaaS EDU K1 DEMO 代码下载

HaaS EDU K1 DEMO 的代码下载请参考 @ref HaaS_EDU_K1_Quick_Start (创建工程章节),其中,
选择解决方案: 基于教育开发板的示例
选择开发板: haaseduk1 board configure
  • 1
  • 2
  • 3

代码编译、烧录

参考 @ref HaaS_EDU_K1_Quick_Start (3.1 编译工程章节),点击 ✅ 即可完成编译固件。
参考 @ref HaaS_EDU_K1_Quick_Start (3.2 烧录镜像章节),点击 "⚡️" 即可完成烧录固件。
  • 1
  • 2

硬件介绍 - MPU-6050

请参考陀螺仪小球中的相同章节。

应用开发

 本实验通过MPU_Get_Accelerometer去获得三轴加速度传感器的原始值。然后计算出在y方向上和z方向上的差值,作为震动大小的强弱标志。当两个方向上的震动大小都超过了阈值,就认为是一次有效的摇晃,就生成随机数。生成随机的方法直接采用OS自动的rand()方法,他的返回值对100进行取模,保证是一个小于100的数字。然后将这个数据显示在OLED屏幕上。
  • 1
void shakeshake_task()
{
    while (1)
    {
        // 获取三轴加速度信息
        MPU_Get_Accelerometer(&ax, &ay, &az);
        // 计算出y轴和z轴方向上的变化量
        y_change = (ay >= ay_pre) ? (ay - ay_pre) : (ay_pre - ay);
        z_change = (az >= az_pre) ? (az - az_pre) : (az_pre - az);
        // 变化量都超过阈值,则进行下一步处理
        if ((y_change > SHAKE_Y_THRESHOLD) && (z_change > SHAKE_Z_THRESHOLD))
        {
            // 生成100以下的随机数
            rand_value = rand() % 100;
            // 将随机数转化为需要显示的字符
            itoa(rand_value, showstr, 10);
            // 清除屏幕memory
            OLED_Clear();
            // 画出显示的图标
            OLED_Icon_Draw(50, 0, &icon_shakeshake_32_32_v2, 1);
            // 画出显示的字符
            OLED_Show_String(54, 36, showstr, 24, 1);
            // 画出左右翻页的图标
            OLED_Icon_Draw(2, 24, &icon_skip_left, 0);
            OLED_Icon_Draw(122, 24, &icon_skip_right, 0);
            // 将屏幕memory显示出来
            OLED_Refresh_GRAM();
        }
        // 保存本次y轴和z轴方向上的值
        az_pre = az;
        ay_pre = ay;
        // 暂停50ms
        aos_msleep(50);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

开发者支持

HaaS官方:https://haas.iot.aliyun.com/
HaaS技术社区:https://blog.csdn.net/HaaSTech
开发者钉钉群和公众号见下图,开发者钉钉群每天都有技术支持同学值班。
在这里插入图片描述

相关文章
|
4月前
|
安全 算法 数据可视化
567 字节抗量子签名 + 0.23ms 验证:陈恩华 CEH-Orbit 区块链火种破解量子迁移死局
CEH-Orbit Blockchain Fire Seed 是面向量子威胁的轻量化抗量子签名方案:仅567字节签名、0.23ms验证,突破NIST标准体积大、延迟高的瓶颈;首创“轨道密码学”,兼具抗量子、抗伪造、抗碰撞三重安全;全栈闭环(密码学+区块链+可视化),开箱即用,助力中国区块链自主可控安全升级。
219 7
|
存储 测试技术 开发工具
FPGA学习笔记
【5月更文挑战第13天】本文介绍了FPGA的基础知识,包括其构成(CLBs、IOBs、Interconnects和存储器块)和HDL编程(Verilog或VHDL)。文章强调了同步电路设计、时序约束和资源优化的重要性,并提供了代码示例展示如何实现LED闪烁和状态机设计。此外,还讨论了高级设计优化、软硬核CPU、高速接口设计以及功耗管理和验证技术。推荐使用Xilinx Vivado和Intel Quartus等工具,并鼓励读者通过动手实践来提升FPGA技能。
514 1
|
算法
【模型预测控制MPC】使用离散、连续、线性或非线性模型对预测控制进行建模(Matlab代码实现)
【模型预测控制MPC】使用离散、连续、线性或非线性模型对预测控制进行建模(Matlab代码实现)
1552 0
Echarts柱状图x轴刻度间隔显示不全/x轴文字倾斜
Echarts柱状图x轴刻度间隔显示不全/x轴文字倾斜
3461 0
poj 2299 求逆序数
http://poj.org/problem?id=2299 #include using namespace std; int aa[500010],bb[500010]; long long s=0; void merge(int l,int m,int r) { ...
953 0
|
10天前
|
人工智能 JSON 自然语言处理
让教学更智慧:用阿里云百炼工作流,自动生成中小学教材内容#小有可为#有温度的AI
通过可视化工作流编排,将大模型推理能力转化为标准化的教学内容生成引擎。教师只需输入教材标题和适用学段,即可自动获得结构完整、符合课程标准的章节内容,大幅降低备课门槛,助力教育资源均衡化。
488 126
|
20天前
|
Linux 程序员 数据格式
【2026最新】Notepad++下载、安装和使用一篇搞定(附中文版安装包)
Notepad++ 是一款免费开源、轻量高效的 Windows 文本编辑器,支持 C/Python/HTML 等 80+ 语言语法高亮、代码折叠、正则替换、编码转换及插件扩展,专为程序员与文本处理用户打造,完美替代系统记事本。(239字)
|
5天前
|
人工智能 缓存 安全
Claude Code 封号真实原因曝光,这次彻底不装了,直接针对国内开发者的账号下手?
Claude Code 封号潮背后:逆向扒出客户端隐写区域标记,Anthropic 政策收紧叠加 DeepSeek 7 月涨价,国产替代更紧迫。

热门文章

最新文章