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
Gast
#4187139
Für was genau steht denn das AcZ|, bzw. von wo kommt das?
Gast
#4187147
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 | |
2 | |
3 | |
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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.