arduino、6050和oled 的sda scl相连 oled是四线的
Arduino源程序如下:
- //******************************************************************************
- // 项 目:传感器
- // 说 明:检测陀螺仪、罗盘数据,进行滤波 目前只读取X轴数据
- //******************************************************************************
- #include <Wire.h>
- #include "Timer.h" //时间操作系统头文件 本程序用作timeChange时间采集并处理一次数据
- #include "Imu.h"
- //--------------------------------------------------------------------------------------------------
- #define UseOled 1 //是否使用软串口读写信息(软串口可避免电脑串口下载程序时与蓝牙冲突)
- #if UseOled
- #include <Adafruit_SSD1306.h>
- Adafruit_SSD1306 display(4);
- int DispLoop = 1;
- int MinPixel = 30;
- int MaxPixel = 63;
- int DispPixel = 0;
- int DispDegrees = 0;
- #endif
- //---------- ------------------------------------------------------ -------------------------------
- Timer timer; //时间类
- //--------------------------------------------------------------------------------------------------
- void setup() {
- Serial.begin(9600);
- delay(500);
- GyData.Init();
- #if UseOled
- display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
- display.display();
- delay(500);
- display.clearDisplay();
- #endif
- int tickEvent1=timer.every(20, getadngsle); //本语句执行以后timeChange毫秒执行回调函数getangle
- int tickEvent2=timer.every(50, PrintOut) ; //本语句执行以后50毫秒执行回调函数PrintOut,串口输出
- }
- //--------------------------------------------------------------------------------------------------
- void loop() {
- timer.update(); //时间操作系统运行
- }
- //--------------------------------------------------------------------------------------------------
- void PrintOut(){
- #if UseOled
- display.fillRect(0, 0, 128, 30, BLACK);
- display.drawRect(0, 29,128,35, WHITE);
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.setCursor(0,0);display.print("Angle:");
- display.setCursor(40,0);display.print(GyData.angle);
- DispPixel = GyData.angle/6+45;
- if(MinPixel >=DispPixel)DispPixel = MinPixel;
- if(DispPixel >=MaxPixel)DispPixel = MaxPixel;
- display.drawLine(DispLoop, MinPixel+1, DispLoop, MaxPixel-1, BLACK); //清除前一帧
- display.drawPixel(DispLoop, DispPixel, WHITE);
- display.display();
- if(DispLoop==126)DispLoop = 1;
- DispLoop ++;
- #endif
- }
- //--------------------------------------------------------------------------------------------------
- void getadngsle(){
- GyData.GetAngle();
- }
- //--------------------------------------------------------------------------------------------------
-
-
-
复制代码
程序编译有问题 求指导:
Mydata.zip
(28.9 KB, 下载次数: 103)
|