ESP-32S实现mpu6050采集与fsr-402压力采集

对于ESP-32S而言,有16个ADC采集通道(需要注意在开启wifi的情况下ADC2是不能进行采集的,详情请搜索ESP-32S引脚图),由于项目需求需要采集6个mpu6050的角度以及加速度,故在mpu6050采集时,采用轮回采集的方式,在mpu6050上有AD0,当AD0电压为0v时(低电平),mpu6050的物理地址为0x68,而当mpu6050AD0为高电压时,物理地址变为0x69,故可以通过ESP-32S引脚控制采集的mpu6050。
以下为部分核心代码

void loop()
{
  while(true){
    if(key==1){
    Serial.print("1");Serial.print(":");
    pinMode(32,OUTPUT);  
     pinMode(4,OUTPUT);  
      pinMode(15,OUTPUT);  
       pinMode(13,OUTPUT);  
        pinMode(12,OUTPUT);  
         pinMode(14,OUTPUT);  
     digitalWrite(32,HIGH);  //输出高电平,LOW就是低电平
     digitalWrite(4,LOW);
     digitalWrite(15,LOW);
     digitalWrite(13,LOW);
     digitalWrite(12,LOW);
     digitalWrite(14,LOW);
       mpu();
      key=2;
    }
        if(key==2){
           Serial.print("2");Serial.print(":");
              pinMode(32,OUTPUT);  
     pinMode(4,OUTPUT);  
      pinMode(15,OUTPUT);  
       pinMode(13,OUTPUT);  
        pinMode(12,OUTPUT);  
         pinMode(14,OUTPUT);  
              digitalWrite(32,LOW);  //输出高电平,LOW就是低电平
              digitalWrite(4,HIGH);
              digitalWrite(15,LOW);
              digitalWrite(13,LOW);
              digitalWrite(12,LOW);
              digitalWrite(14,LOW);
          mpu();
      key=3;
    }
        if(key==3){
           Serial.print("3");Serial.print(":");
              pinMode(32,OUTPUT);  
     pinMode(4,OUTPUT);  
      pinMode(15,OUTPUT);  
       pinMode(13,OUTPUT);  
        pinMode(12,OUTPUT);  
         pinMode(14,OUTPUT);  
            digitalWrite(32,LOW);  //输出高电平,LOW就是低电平
              digitalWrite(4,LOW);
              digitalWrite(15,HIGH);
              digitalWrite(13,LOW);
              digitalWrite(12,LOW);
              digitalWrite(14,LOW);
          mpu();
      key=4;
    }
        if(key==4){
           Serial.print("4");Serial.print(":");
              pinMode(32,OUTPUT);  
     pinMode(4,OUTPUT);  
      pinMode(15,OUTPUT);  
       pinMode(13,OUTPUT);  
        pinMode(12,OUTPUT);  
         pinMode(14,OUTPUT);  
                       digitalWrite(32,LOW);  //输出高电平,LOW就是低电平
              digitalWrite(4,LOW);
              digitalWrite(15,LOW);
              digitalWrite(13,HIGH);
              digitalWrite(12,LOW);
              digitalWrite(14,LOW);
          mpu();
      key=5;
    }
        if(key==5){
           Serial.print("5");Serial.print(":");
                      pinMode(32,OUTPUT);  
     pinMode(4,OUTPUT);  
      pinMode(15,OUTPUT);  
       pinMode(13,OUTPUT);  
        pinMode(12,OUTPUT);  
         pinMode(14,OUTPUT);  
                       digitalWrite(32,LOW);  //输出高电平,LOW就是低电平
              digitalWrite(4,LOW);
              digitalWrite(15,LOW);
              digitalWrite(13,LOW);
              digitalWrite(12,HIGH);
              digitalWrite(14,LOW);
          mpu();
      key=6;
    }
        if(key==6){
          Serial.print("6");Serial.print(":");
             pinMode(32,OUTPUT);  
     pinMode(4,OUTPUT);  
      pinMode(15,OUTPUT);  
       pinMode(13,OUTPUT);  
        pinMode(12,OUTPUT);  
         pinMode(14,OUTPUT);  
                      digitalWrite(32,LOW);  //输出高电平,LOW就是低电平
              digitalWrite(4,LOW);
              digitalWrite(15,LOW);
              digitalWrite(13,LOW);
              digitalWrite(12,LOW);
              digitalWrite(14,HIGH);
          mpu();
      key=1;
    }
    for(int i=0;i<8;i++){
   long Fdata = getPressValue(sensorPin[i]);
   DEBUGSerial.print(i);
 DEBUGSerial.print("F = ");
  DEBUGSerial.print(Fdata);
  DEBUGSerial.println(" g,");
  }
  }
}

由于时间紧凑,其实代码方面可以进行大幅度优化,在mpu6050的采集方面采用了卡尔曼滤波。

版权声明:本文为CSDN博主「qq_51741751」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_51741751/article/details/122889323

生成海报
点赞 0

qq_51741751

我还没有学会写个人说明!

暂无评论

相关推荐

RT-Thread Studio移植LAN8720A驱动

RTT网络协议栈驱动移植(霸天虎) 1、新建工程 ​ 工程路径不含中文路径名,工程名用纯英文不含任何符号。 2、用CubeMx配置板子外设 2.1、配置时钟 ​ 按照自己板子配置相应时钟。

【STM32Cube笔记】12-配置外部中断

【STM32Cube笔记】系列文章目录 1-基于STM32的VSCode入门级教程前言 2-STM32Cube安装教程 3-STM32CubeIDE汉化 4-STM32Cube配置时钟设置 5-跑马灯引脚配置 6-Cortex-M7内核基本配

stm32cubemx+HAL+串口接收中断

stm32cubemxHAL串口接收中断 在cubemx配置完串口和global interrupt后需要在keil中添加如下代码。 第一步:在main函数中添加接收中断标志位开启函数 HAL_UART_Receive_IT