Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #include "Wire.h"
  2. #include "Math.h"
  3. #include "I2Cdev.h"
  4. #include "MPU6050.h"
  5.  
  6. // vytvoříme objekt s názvem
  7. MPU6050 akcelerometr;
  8.  
  9. // zadáme konstantu Ludofova čísla
  10. // pro pozdější výpočty
  11. const float pi = 3.141592;
  12. //zde zadejte z kolika vzorku bude
  13. // měření probíhat
  14. const int pocet_vzorku = 100;
  15. // pojmenovýní proměných
  16. int16_t ax, ay, az;
  17. float x, y, z;
  18. int  pocet;
  19. float _angle_x, angle_x, _angle_y, angle_y;
  20. long ax_p, ay_p, az_p;
  21.  
  22. void setup() {
  23.     // inicializace I2C
  24.     Wire.begin();
  25.     // zvolíme vyšší rychlost pro seriový port
  26.     Serial.begin(38400);
  27.     // inicializace akcelerometru  
  28.     akcelerometr.initialize();
  29.     // Když to hodí chybu vypíšeme hlášku
  30.     if (akcelerometr.testConnection());
  31.     Serial.println("Spojeni OK...");  
  32. }
  33.  
  34. void loop() {
  35.     // zjistí všechny hodnoty z akcelerometru
  36.     akcelerometr.getAcceleration(&ax, &ay, &az);
  37.     // sčítáme potřebný počet hodnot
  38.     ax_p = ax_p + ax;
  39.     ay_p = ay_p + ay;
  40.     az_p = az_p + az;
  41.     // pomocné určení počru vzorků
  42.     pocet++;
  43.     // když se dosáhne určeného počtu vzorků  
  44.     if (pocet == pocet_vzorku)
  45.     {
  46.      //zjistíme průmerné hodnoty
  47.      x = ax_p/pocet_vzorku;
  48.      y = ay_p/pocet_vzorku;
  49.      z = az_p/pocet_vzorku;
  50.      // vypočteme sklon a náklon
  51.      angle_x = atan2(x, sqrt(square(y) + square(z))      )/(pi/180);
  52.      angle_y = atan2(y, sqrt(square(x) + square(z))      )/(pi/180);
  53.      // vynulujeme hodnoty pro další použití    
  54.      pocet = 0;
  55.      ax_p = 0;
  56.      ay_p = 0;
  57.      az_p = 0;
  58.     // vypíšeme výsledky na seriový port      
  59.     Serial.print(angle_x);
  60.     Serial.print("\t"); // \t = tabulátor
  61.     Serial.println(angle_y);
  62.     }
  63.    
  64.    
  65. }