日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

分歧爭端機

實驗介紹

分歧爭端機使用的場景是當出現(xiàn)分歧時,分別搖一搖HaaS EDU K1來搖出一個0到100之間的數(shù)字,通過比較誰搖出的數(shù)字大來解決分歧的一種方法。本質是通過搖一搖這個動作來隨機產生一個數(shù)字。這個實驗的核心如何通過加速度傳感器來檢測到搖一搖這個動作,并隨機生成一個數(shù)字。

顯示效果

涉及知識點

  • 三軸加速度傳感器的原理和使用

  • 隨機數(shù)生成的方法

  • OLED繪圖

開發(fā)環(huán)境準備

硬件

開發(fā)用電腦一臺
HAAS EDU K1 開發(fā)板一塊
USB2TypeC 數(shù)據線一根

軟件

開發(fā)環(huán)境的搭建請參考《AliOS Things集成開發(fā)環(huán)境使用說明之搭建開發(fā)環(huán)境》,其中詳細的介紹了AliOS Things 3.3的IDE集成開發(fā)環(huán)境的搭建流程。

本案例的代碼下載請參考《AliOS Things集成開發(fā)環(huán)境使用說明之創(chuàng)建工程》

> 選擇解決方案:“HaaS EDU K1教育開發(fā)案例合集”

> 選擇開發(fā)板:haaseduk1 board configure

-- 編譯固件可參考《AliOS Things集成開發(fā)環(huán)境使用說明之編譯固件》

-- 燒錄固件可參考《AliOS Things集成開發(fā)環(huán)境使用說明之燒錄固件》

硬件介紹 - MPU-6050

請參考《陀螺儀小球》中的相同章節(jié)。

應用開發(fā)

 本實驗通過MPU_Get_Accelerometer去獲得三軸加速度傳感器的原始值。然后計算出在y方向上和z方向上的差值,作為震動大小的強弱標志。當兩個方向上的震動大小都超過了閾值,就認為是一次有效的搖晃,就生成隨機數(shù)。生成隨機的方法直接采用OS自動的rand()方法,他的返回值對100進行取模,保證是一個小于100的數(shù)字。然后將這個數(shù)據顯示在OLED屏幕上。

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以下的隨機數(shù)
            rand_value = rand() % 100;
            // 將隨機數(shù)轉化為需要顯示的字符
            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);
    }
}