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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.