CoCube传感器MPU6050笔记

举报
zhangrelay 发表于 2022/08/09 23:18:11 2022/08/09
【摘要】 参考: 输出x,y,z角度信息: #include <MPU6050_tockn.h>#include <Wire.h> MPU6050 mpu6050(Wire); void setup() { Serial.begin(9600); Wire.begin(); mpu6050.begin(); m...

参考:

输出x,y,z角度信息:


  
  1. #include <MPU6050_tockn.h>
  2. #include <Wire.h>
  3. MPU6050 mpu6050(Wire);
  4. void setup() {
  5. Serial.begin(9600);
  6. Wire.begin();
  7. mpu6050.begin();
  8. mpu6050.calcGyroOffsets(true);
  9. }
  10. void loop() {
  11. mpu6050.update();
  12. Serial.print("angleX : ");
  13. Serial.print(mpu6050.getAngleX());
  14. Serial.print("\tangleY : ");
  15. Serial.print(mpu6050.getAngleY());
  16. Serial.print("\tangleZ : ");
  17. Serial.println(mpu6050.getAngleZ());
  18. }

效果如下:


发送到ROS绘制曲线或做其他用途的,晚些时候补充。

CoCube显示测试笔记

结合这一篇,使用CoCube自带显示进行姿态反馈?

再补充一个全部信息:


  
  1. #include <MPU6050_tockn.h>
  2. #include <Wire.h>
  3. MPU6050 mpu6050(Wire);
  4. long timer = 0;
  5. void setup() {
  6. Serial.begin(9600);
  7. Wire.begin();
  8. mpu6050.begin();
  9. mpu6050.calcGyroOffsets(true);
  10. }
  11. void loop() {
  12. mpu6050.update();
  13. if(millis() - timer > 1000){
  14. Serial.println("=======================================================");
  15. Serial.print("temp : ");Serial.println(mpu6050.getTemp());
  16. Serial.print("accX : ");Serial.print(mpu6050.getAccX());
  17. Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());
  18. Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ());
  19. Serial.print("gyroX : ");Serial.print(mpu6050.getGyroX());
  20. Serial.print("\tgyroY : ");Serial.print(mpu6050.getGyroY());
  21. Serial.print("\tgyroZ : ");Serial.println(mpu6050.getGyroZ());
  22. Serial.print("accAngleX : ");Serial.print(mpu6050.getAccAngleX());
  23. Serial.print("\taccAngleY : ");Serial.println(mpu6050.getAccAngleY());
  24. Serial.print("gyroAngleX : ");Serial.print(mpu6050.getGyroAngleX());
  25. Serial.print("\tgyroAngleY : ");Serial.print(mpu6050.getGyroAngleY());
  26. Serial.print("\tgyroAngleZ : ");Serial.println(mpu6050.getGyroAngleZ());
  27. Serial.print("angleX : ");Serial.print(mpu6050.getAngleX());
  28. Serial.print("\tangleY : ");Serial.print(mpu6050.getAngleY());
  29. Serial.print("\tangleZ : ");Serial.println(mpu6050.getAngleZ());
  30. Serial.println("=======================================================\n");
  31. timer = millis();
  32. }
  33. }

程序简洁,应该直接能看懂,不需要赘述。 


结合角度信息给显示赋值。


#include <MPU6050_tockn.h>
#include <Wire.h>
#include <Adafruit_NeoPixel.h>

// Which pin on the Arduino is connected to the NeoPixels?
#define PIN       16 // On Trinket or Gemma, suggest changing this to 1

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 64 // Popular NeoPixel ring 

MPU6050 mpu6050(Wire);
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

unsigned char DELAYVAL=1; // Time (in milliseconds) to pause between pixels

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu6050.begin();
  mpu6050.calcGyroOffsets(true);
  pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
}

void loop() {
  mpu6050.update();
//  Serial.print("angleX : ");
//  Serial.print(mpu6050.getAngleX());
//  Serial.print("\tangleY : ");
//  Serial.print(mpu6050.getAngleY());
//  Serial.print("\tangleZ : ");
//  Serial.println(mpu6050.getAngleZ());
  
  for(int i=0; i<NUMPIXELS; i++) { // For each pixel...
    pixels.setPixelColor(i, pixels.Color(16*(abs(mpu6050.getAngleX())/180.0), 16*(abs(mpu6050.getAngleY())/180.0), 16*(abs(mpu6050.getAngleZ())/180.0)));
    pixels.show();   // Send the updated pixel colors to the hardware.
//    delay(DELAYVAL); // Pause before next pass through loop
  }
}


补充:

MPU-6000(6050)的角速度全格感测范围为±250、±500、±1000与±2000°/sec (dps),可准确追踪快速与慢速动作,并且,用户可程式控制的加速器全格感测范围为±2g、±4g±8g与±16g。产品传输可透过最高至400kHz的IIC或最高达20MHz的SPI(MPU-6050没有SPI)。MPU-6000可在不同电压下工作,VDD供电电压介为2.5V±5%、3.0V±5%或3.3V±5%,逻辑接口VDDIO供电为1.8V± 5%(MPU6000仅用VDD)。MPU-6000的包装尺寸4x4x0.9mm(QFN),在业界是革命性的尺寸。其他的特征包含内建的温度感测器、包含在运作环境中仅有±1%变动的振荡器。

NeoPixels也被称为WS2812 LED彩带,是连接在一起的全彩色led灯串。你可以设置他它们的红色,绿色和蓝色值, 在0到255之间。neopixel模块可通过精确的时间控制,生成WS2812控制信号。


 

文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。

原文链接:zhangrelay.blog.csdn.net/article/details/126238218

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。