avatar
gyro

Guest 738 19th Nov, 2022

ARDUINO 2.77 KB
                                           
                         #include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <MPU6050_light.h>

#define SCREEN_WIDTH 128 // szerokosc wyswietlacza w pikselach
#define SCREEN_HEIGHT 64 // wysokosc wyswietlacza w pikselach
// ustawienie wyswietlacza i na jakich pinach sie znajduje
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);


MPU6050 mpu(Wire); // znajdowanie zyroskopu na i2c
MPU6050 mpu2(Wire);
unsigned long timer = 0;// do czasu to pominac

void setup() {
  Serial.begin(115200);                           
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))  // adres wyswietlacza
  { 
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);                                     
  } 
  mpu2.setAddress(0x69);  // adres drugiego zyroskopu
  display.setTextSize(1);             
  display.setTextColor(SSD1306_WHITE);            // biala czcionka
  display.clearDisplay();                         
  Wire.begin();
  mpu.begin();
  mpu2.begin();
  display.println(F("Calculating gyro offset, do not move MPU6050"));
  display.display();        
  mpu.calcGyroOffsets();                          // kalibrowanie zyro
  mpu2.calcGyroOffsets();  
  display.setTextSize(1);    
  
}

void loop() {
  mpu.update(); // pobieranie pozycji zyroskopu
  mpu2.update(); 
  
x_1 = mpu.getAngleX();
y_1 = mpu.getAngleY();
z_1 = mpu.getAngleZ();

x_2 = mpu2.getAngleX();
y_2 = mpu2.getAngleY();
z_2 = mpu2.getAngleZ();

  int deg; 
  //deg = mpu.getAngleX() + mpu2.getAngleX(); // obliczanie katu, dodawanie bo zyrokopy sa zwrocone do siebie przeciwnie
  
  if(y_1 + y_2 < 180) 
  {
	  deg = x_1 + x_2;
  } 
  else if( (x_1 + x_2) > 180 && (x_1 + x_2) < 360)
  {
	  deg = y_1 + y_2;
  }
  
  
  if(deg < 0)
  {
    deg = deg+360; // jesli obrocimy zyroskop o wiecej niz 180 bo inacej warosci bylyby ujemne
  }
  if((millis()-timer)>10)                         // odswierzanie wyswietlacza co 10ms
  {                                         
    display.clearDisplay();                       
    display.setCursor(0,0);
    display.print(deg);
    display.println("st.");
    display.print("x:");
    display.println(mpu.getAngleX());
    display.print("y:");
    display.println(mpu.getAngleY());
    display.print("z:");
    display.println(mpu.getAngleZ());              
    display.print("P2:");
    display.println(mpu2.getAngleX());
    display.print("R2:");
    display.println(mpu2.getAngleY());
    display.print("Y2:");
    display.print(mpu2.getAngleZ());
    display.display();
    timer = millis();  
  }
}
                      
                                       
To share this paste please copy this url and send to your friends
RAW Paste Data
Recent Pastes
Ta strona używa plików cookie w celu usprawnienia i ułatwienia dostępu do serwisu oraz prowadzenia danych statystycznych. Dalsze korzystanie z tej witryny oznacza akceptację tego stanu rzeczy.
Wykorzystywanie plików Cookie
Jak wyłączyć cookies?
ROZUMIEM