找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1901|回复: 0
打印 上一主题 下一主题
收起左侧

运动手表主程序

[复制链接]
跳转到指定楼层
楼主
ID:916996 发表于 2021-5-7 14:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
int main(void)
{
        float ole_roll,diff_roll_value;
        USER_DATA_t time_infor;
        char str1[10];
        //variables to calculate the on-board LED brightness that reflects the heartbeats
        uint32_t un_min, un_max, un_prev_data;  
        int i;
        int32_t n_brightness;
        float f_temp;
        u8 temp_num=0;
        u8 temp[6];
        u8 str[100];
        u8 dis_hr=0,dis_spo2=0;

       

        /* Configure the Priority Group to 2 bits */
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
       
        OLED_Init();                        //初始化OLED  
        OLED_Clear();   //OLED  清屏
        delay_ms(500);
        USART1_Config();  //串口1(电脑)配置
        Bluetooth_Init(); //蓝牙初始化
        Rtc_Init();        //RTC初始化(用于显示时间和日期、闹钟)
        Beep_Init();       //闹钟提醒
        LED_Init();      //LED灯初始化
        MPU_Init();      //MPU6050初始化(用于抬手唤醒屏幕、计步)
    TIM4_Int_Init(5000,8400);//500ms
        KEY_EXIT_Init();
        delay_ms(1863);
       
       
       
        while(mpu_dmp_init())
        {
                printf("MPU6050 ERROR \r\n");
                delay_ms(500);
        }
        GPIO_Keyboard_Configuration(); //游戏方向控制键盘
        GUI_Init();//游戏界面初始化
       
       
        TIM_Cmd(TIM2,ENABLE);//打开定时器2,用于判断20秒无操作熄灭屏幕
        while(1)
        {       
                /*计步*/
                dmp_get_pedometer_step_count(&STEPS); //MPU6050自带计步功能,并且从第7步才可以读取的到数据
                sprintf(str1,"步数:%ld",STEPS);
                printf("%s\r\n",str);
                OLED_ShowCHinese(0,6,0);//步
                OLED_ShowCHinese(18,6,1);//数
                OLED_ShowCHinese(36,6,2);//:
                if(STEPS>=10)
                {
                        OLED_ShowNum(40,6,STEPS,3,16);
                }
                else
                {
                        OLED_ShowNum(40,6,0,3,16);
                        //printf("dsgkhsd kjhdksahgkljfahglkfadhgkldfag\r\n");
                }
               
                if(BLUETOOTH_STATE==1)
                {
                        OLED_DrawBMP(0,0,127,2,BLUETOOTH_ON);
                }
                else
                {
                        OLED_DrawBMP(0,0,127,2,BLUETOOTH_OFF);
                }
               
                /*显示时间、日期和手机修改时间、日期、闹钟*/
                Clock_Infor_display(time_infor);
               
                /*操作20秒无操作,熄灭oled*/
                if(operrate_flag > 50)
                {
                        operrate_flag = 0;
                        TIM_Cmd(TIM2,DISABLE);//关闭定时器2,停止计数
                        OLED_Display_Off(); //关闭oled显示
                }
               
                /*游戏*/
                if(g_key0_flag==1)
                {
                        g_key0_flag=0;
                        g_key2_flag=0;
                        operrate_flag = 0;
                        TIM_Cmd(TIM2,DISABLE);//关闭定时器2,停止计数
                        OLED_Display_On();
                        OLED_DrawBMP(0,0,128,8,STARTGAME);//开头动画
                        delay_s(2);
                        while(1)
                        {
                                 Get_Command();
                                 Show_Score();
                                 GUI_Refresh(map);//刷新地图
                                 if(GameOver())
                                 {
                                   OLED_Clear();
                                   OLED_DrawBMP(0,0,128,8,GAMEOVER);
                                 }
                                 if(g_key2_flag==1)
                                 {
                                         g_key2_flag=0;
                                         OLED_Clear();
                                         break;
                                 }
                                 
                         }
                         TIM_Cmd(TIM2,ENABLE);//开启定时器2,停止计数
                }
               
                /*抬手唤醒*/
                if(res==0)
                {
                diff_roll_value = abs(ole_roll-roll);//取绝对值
                        if(diff_roll_value >= 9)
                        {       
                                diff_roll_value=0;
                                operrate_flag = 0;
                                TIM_Cmd(TIM2,DISABLE);//关闭定时器2,停止计数
                                OLED_Display_On();
                                TIM_Cmd(TIM2,ENABLE);//开启定时器2,停止计数
                        }
                        ole_roll = roll;
                        printf("pitch=%f,roll=%f,yaw=%f\r\n",pitch,roll,yaw);
                       
                        delay_ms(1000);
                        res=1;
                }
                delay_s(5);
        }          
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表