Forum: Mikrocontroller und Digitale Elektronik Mpu6050 Value an TFT LCD ausgeben


von Matthias B. (matthias1983)


Lesenswert?

Hallo in die Runde,

Ich bin dabei Versuche mit meinem Arduino Mega2560 anzustellen, dabei 
wollte ich nun einen MPU benutzen (beim Nano hat alles geklappt, jetzt 
beim Mega klappt leider nix mehr)

Folgendes Problem, an welchem ich gerade scheitere:

In meinem Sketch möchte ich zunächst die z.b. Z-Werte als Zahl im 
Display wiedergeben.
Serial.print(" |AcZ");--- im serial Monitor alles toll, x,y,und Z Achse 
werden komplett als Zahl wiedergegeben.

MyGLCD.print("AcZ| ", posx, posy);--- im Display erscheint nur der Text 
AcZ, aber kein Wert.

Ich habe es auch mit int Value etc versucht, kam aber auch kein Wert, 
nur der Text in Klammern.
Weiter habe ich versucht, myGLCD.println, myGLCD.write, hier kommen nur 
Fehlermeldungen mit Achtung Char to Constante, oder zu viele 
Parameter...

Meine Komponenten sind:
arduino mega 2560 Board
Sainsmart TFt LCD 2,8"(ILI9325)
Arduino shield für Display
Los von Henning Carlson "UTFT01"

Gerne lade ich bei Bedarf den Sketch hoch.

An was kann das liegen, dass die werte nicht im Display angezeigt 
werden?

Grüße Matthias

von Moritz G. (Gast)


Lesenswert?

Für was genau steht denn das AcZ|, bzw. von wo kommt das?

von alex (Gast)


Lesenswert?

Spontan würde ich vermuten, dass du die Zahl zuerst in einen String 
umwandeln musst.(z.B. mit sprintf)

Du könntest außerdem probieren, die Variablen und den Text nacheinander 
darzustellen, also mit jewils einzelnen Befehlen..
1
MyGLCD.print("AcZ| ");
2
MyGLCD.print(posx);
3
MyGLCD.print(posy);
Zwischen den Zahlen dann evtl. noch ein Leerzeichen.

Viele Grüße

von Matthias B. (matthias1983)


Lesenswert?

So ist der Sketch vom Beispiel.

// MPU-6050 Short Example Sketch
// By Arduino User JohnChi
// August 17, 2014
// Public Domain
#include<Wire.h>
const int MPU=0x68;  // I2C address of the MPU-6050
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
void setup(){
  Wire.begin();
  Wire.beginTransmission(MPU);
  Wire.write(0x6B);  // PWR_MGMT_1 register
  Wire.write(0);     // set to zero (wakes up the MPU-6050)
  Wire.endTransmission(true);
  Serial.begin(9600);
}
void loop(){
  Wire.beginTransmission(MPU);
  Wire.write(0x3B);  // starting with register 0x3B (ACCEL_XOUT_H)
  Wire.endTransmission(false);
  Wire.requestFrom(MPU,14,true);  // request a total of 14 registers
  AcX=Wire.read()<<8|Wire.read();  // 0x3B (ACCEL_XOUT_H) & 0x3C 
(ACCEL_XOUT_L)
  AcY=Wire.read()<<8|Wire.read();  // 0x3D (ACCEL_YOUT_H) & 0x3E 
(ACCEL_YOUT_L)
  AcZ=Wire.read()<<8|Wire.read();  // 0x3F (ACCEL_ZOUT_H) & 0x40 
(ACCEL_ZOUT_L)
  Tmp=Wire.read()<<8|Wire.read();  // 0x41 (TEMP_OUT_H) & 0x42 
(TEMP_OUT_L)
  GyX=Wire.read()<<8|Wire.read();  // 0x43 (GYRO_XOUT_H) & 0x44 
(GYRO_XOUT_L)
  GyY=Wire.read()<<8|Wire.read();  // 0x45 (GYRO_YOUT_H) & 0x46 
(GYRO_YOUT_L)
  GyZ=Wire.read()<<8|Wire.read();  // 0x47 (GYRO_ZOUT_H) & 0x48 
(GYRO_ZOUT_L)
  Serial.print("AcX = "); Serial.print(AcX);
  Serial.print(" | AcY = "); Serial.print(AcY);
  Serial.print(" | AcZ = "); Serial.print(AcZ);
  Serial.print(" | Tmp = "); Serial.print(Tmp/340.00+36.53);  //equation 
for temperature in degrees C from datasheet
  Serial.print(" | GyX = "); Serial.print(GyX);
  Serial.print(" | GyY = "); Serial.print(GyY);
  Serial.print(" | GyZ = "); Serial.println(GyZ);
  delay(333);
}

AyZ sollte demnach Z Achse wiedergeben... So denke ich, aber kommt 
nichts im Display

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.