10-10-2020, 11:00
Witam wszystkich,
mam problem z żyroskopem MPU6050, mianowicie po pobraniu bibliotek Pana Jarzębskiego i skompilowaniu szkicu wartości w porcie szeregowym są poprawne, natomiast gdy edytuje kod i chce wyświetlić je na ekranie wyświetlacza zmniejszają się zarówno w porcie jak i na wyświetlaczu o połowę. Zarówno zyroskop jak i wyswietlacz mam podpięte do wejsc SCL, SDA gdyż korzystaja z magistarali i2c. Czy chodzi o różną wartość prędkości transmisji ? Wszystko działa poprawnie do czasu gdy nie wpiszę dwóch osatatnich linijek kodu wyswietlajacych wartosc pitch.
mam problem z żyroskopem MPU6050, mianowicie po pobraniu bibliotek Pana Jarzębskiego i skompilowaniu szkicu wartości w porcie szeregowym są poprawne, natomiast gdy edytuje kod i chce wyświetlić je na ekranie wyświetlacza zmniejszają się zarówno w porcie jak i na wyświetlaczu o połowę. Zarówno zyroskop jak i wyswietlacz mam podpięte do wejsc SCL, SDA gdyż korzystaja z magistarali i2c. Czy chodzi o różną wartość prędkości transmisji ? Wszystko działa poprawnie do czasu gdy nie wpiszę dwóch osatatnich linijek kodu wyswietlajacych wartosc pitch.
Kod:
/*
MPU6050 Triple Axis Gyroscope & Accelerometer. Pitch & Roll & Yaw Gyroscope Example.
Read more: http://www.jarzebski.pl/arduino/czujniki-i-sensory/3-osiowy-zyroskop-i-akcelerometr-mpu6050.html
GIT: https://github.com/jarzebski/Arduino-MPU6050
Web: http://www.jarzebski.pl
(c) 2014 by Korneliusz Jarzebski
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <MPU6050.h>
LiquidCrystal_I2C lcd(0x27,16,2);
MPU6050 mpu;
// Timers
unsigned long timer = 0;
float timeStep = 0.01;
// Pitch, Roll and Yaw values
float pitch = 0;
float roll = 0;
float yaw = 0;
void setup()
{
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Wartosc pitch:");
Serial.begin(115200);
// Initialize MPU6050
while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))
{
Serial.println("Could not find a valid MPU6050 sensor, check wiring!");
delay(500);
}
// Calibrate gyroscope. The calibration must be at rest.
// If you don't want calibrate, comment this line.
mpu.calibrateGyro();
// Set threshold sensivty. Default 3.
// If you don't want use threshold, comment this line or set 0.
mpu.setThreshold(3);
}
void loop()
{
timer = millis();
// Read normalized values
Vector norm = mpu.readNormalizeGyro();
// Calculate Pitch, Roll and Yaw
pitch = pitch + norm.YAxis * timeStep;
roll = roll + norm.XAxis * timeStep;
yaw = yaw + norm.ZAxis * timeStep;
// Output raw
Serial.print(" Pitch = ");
Serial.print(pitch);
Serial.print(" Roll = ");
Serial.print(roll);
Serial.print(" Yaw = ");
Serial.println(yaw);
// Wait to full timeStep period
delay((timeStep*1000) - (millis() - timer));
lcd.setCursor(0,1);
lcd.print(pitch);
}