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.