INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
LCD Zahlen Formatierung
02.02.2015, 20:21
Beitrag #17
RE: LCD Zahlen Formatierung
So habe den Code jetzt Korrigiert es scheint soweit zu gehen mache gerade ein Test Flug.
Danke für die Hilfe =)

Jetzt muss ich mir ein par Bauteile kaufen, wie Schalter Regler usw.
Mal sehen wo ich Passende Sachen her bekomme.

Hier der Aktuelle Code
Code:
#include <stdio.h>
#include <SPI.h>        
#include <Ethernet.h>
//#include <EthernetUdp.h>
#include <Wire.h>
#include <XPlaneData.h>         // -- include XPlaneData library
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
//-----------------------------
byte Ard_MAC[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};// MAC-Address of Arduino
int XPR = 49001;                                  // port to listen to get UDP packets
int XPW = 49000;                                  // port to send UDP packets
int IPx[] = {
  192, 168, 178, 26};                     // X-Plane IP address ( ! set your !)
//IPAddress ip (192, 168, 178, 60);                                   // Arduino IP address (Auto)

XPlaneData XP (XPR, XPW, IPx, Ard_MAC);   //==!==  Create  XPlaneData object (XP)
//--------------------------------------------------
long HDG;
long HDG_pre;
char HDG_b1[4];
char HDG_b2[4];

long CRS;
long CRS_pre;
char CRS_b1[4];
char CRS_b2[4];

long SPD;
long SPD_pre;
char SPD_b1[4];
char SPD_b2[4];

long FL;
long FL_pre;
char FL_b1[4];
char FL_b2[4];

long ALT;
long ALT_pre;
char ALT_b1[6];
char ALT_b2[6];

long VS;
long VS_pre;
char VS_b1[5];
char VS_b2[5];



//---------------- setup ---------------------------
void setup()  {

  XP.begin();      //==! init XPlaneData

  // XP.Pins_In (42, 43);             // Define pins for inputs  
  lcd.init();                       // initialize the lcd
  lcd.backlight();
  lcd.clear();
  Serial.begin(38400);
  
  lcd.setCursor(5,0);
  lcd.print("AUTOPILOT:");


  lcd.setCursor(0,1);
  lcd.print("HDG: 000");  
  lcd.setCursor(10,1);
  lcd.print("FL:  000");

  lcd.setCursor(0,2);
  lcd.print("CRS: 000");
  lcd.setCursor(10,2);
  lcd.print("ALT:00000");


  lcd.setCursor(0,3);
  lcd.print("SPD: 000");
  lcd.setCursor(10,3);
  lcd.print("VS: +0000");




}



//------------------------ start --------------------
void loop()
{                // ------ send data to X-Plane -----

  // XP.Set_Value(42, "cockpit2/controls/flap_ratio[0]", 0);      // Flaps APR position                                
  // XP.Set_Value(43, "cockpit2/controls/flap_ratio[0]", 1 );      // Flaps Full position


  //----------- Receive data from X-Plane -----------------

  if (XP.udpin())   // -
  {                

    HDG = XP.Dget(118, 2);                     // HDG
    CRS = XP.Dget(98, 2);                     // CRS
    SPD = XP.Dget(118, 1);                     // SPD
    FL = XP.Dget(118, 4)/100;                      // FL
    ALT = XP.Dget(20, 6);                     // ALT
    VS = XP.Dget(118, 3);                      // VS


    if (HDG_pre != HDG) {      // check ob Wert sich geändert hat
      HDG_pre = HDG;
      lcd.setCursor(0,1);
      itoa(HDG, HDG_b1, 10);
      sprintf(HDG_b2, "%03d", HDG);
      lcd.print("HDG: ");
      lcd.print(HDG_b2);
    }

    if (CRS_pre != CRS) {      // check ob Wert sich geändert hat
      CRS_pre = CRS;
      lcd.setCursor(0,2);
      itoa(CRS, CRS_b1, 10);
      sprintf(CRS_b2, "%03d", CRS);
      lcd.print("CRS: ");
      lcd.print(CRS_b2);
    }

    if (SPD_pre != SPD) {      // check ob Wert sich geändert hat
      SPD_pre = SPD;
      lcd.setCursor(0,3);
      itoa(SPD, SPD_b1, 10);
      sprintf(SPD_b2, "%03d", SPD);
      lcd.print("SPD: ");
      lcd.print(SPD_b2);
    }

    if (FL_pre != FL) {      // check ob Wert sich geändert hat
      FL_pre = FL;
      lcd.setCursor(10,1);
      itoa(FL, FL_b1, 10);
      sprintf(FL_b2, "%03d", FL);
      lcd.print("FL:   ");
      lcd.print(FL_b2);
   }

    if (ALT_pre != ALT) {      // check ob Wert sich geändert hat
      ALT_pre = ALT;
      lcd.setCursor(10,2);
      itoa(ALT, ALT_b1, 10);
      sprintf(ALT_b2, "%5ld", ALT);
      lcd.print("ALT:");
      lcd.print(ALT_b2);
  }

    if (VS_pre != VS) {      // check ob Wert sich geändert hat
      VS_pre = VS;
      lcd.setCursor(10,3);
      itoa(VS, VS_b1, 10);
      sprintf(VS_b2, "%+05d", VS);
      lcd.print("VS: ");
      lcd.print(VS_b2);
    }
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2015, 20:22
Beitrag #18
RE: LCD Zahlen Formatierung
(02.02.2015 20:10)tito-t schrieb:  naja, also wenn der gelieferte Datentyp float ist, dann muss er auch als float zugewiesen werden,
Warum?

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2015, 20:38 (Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2015 20:44 von tito-t.)
Beitrag #19
RE: LCD Zahlen Formatierung
wenn float zu int werden soll, muss in C explizites typecasting verwendet werden

float forig;
int iziel;

iziel=(int)forig;

oder macht das Sketch etwa implizit ??

printf macht es jedenfalls nicht implizit, wenn man einen Float-Wert als Variable übergibt und ihn als integer formatiert.
Das geht dann nur als

printf("%d", (int)forig)

printf("%d", forig)
ergibt 0 oder irgendeinen Mist.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.02.2015, 21:36
Beitrag #20
RE: LCD Zahlen Formatierung
(02.02.2015 20:38)tito-t schrieb:  wenn float zu int werden soll, muss in C explizites typecasting verwendet werden
Nicht unbedingt.
Code:
ALT = XP.Dget(20, 6);
ALT ist hier ein int (oder long). Die Zuweisung macht das Casting automatisch.

Zitat:printf macht es jedenfalls nicht implizit, wenn man einen Float-Wert als Variable übergibt und ihn als integer formatiert.
Nein, das funktioniert nicht. (s)printf "weiß" nicht, was für ein Datentyp übergeben wird.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2015, 12:12 (Dieser Beitrag wurde zuletzt bearbeitet: 21.02.2015 12:13 von Kaito164.)
Beitrag #21
RE: LCD Zahlen Formatierung
Hi
Habe ein Problem, bis vor kurzen hat der oben geschriebene Code geklappt jetzt bekomme ich eine Fehlermeldung.
Code:
LAN-X-Plane_v0.05.ino.ino:18:38: error: no matching function for call to 'XPlaneData::XPlaneData(int&, int&, int [4], byte [6])'
LAN-X-Plane_v0.05.ino.ino:18:38: note: candidates are:
In file included from LAN-X-Plane_v0.05.ino.ino:6:0:
E:\09-ARCHIV\09-03-Dokumente\Arduino\libraries\XPlaneData\src/XPlaneData.h:48:2: note: XPlaneData::XPlaneData()
  XPlaneData();
  ^
E:\09-ARCHIV\09-03-Dokumente\Arduino\libraries\XPlaneData\src/XPlaneData.h:48:2: note:   candidate expects 0 arguments, 4 provided
E:\09-ARCHIV\09-03-Dokumente\Arduino\libraries\XPlaneData\src/XPlaneData.h:45:7: note: XPlaneData::XPlaneData(const XPlaneData&)
class XPlaneData
       ^
E:\09-ARCHIV\09-03-Dokumente\Arduino\libraries\XPlaneData\src/XPlaneData.h:45:7: note:   candidate expects 1 argument, 4 provided
Fehler beim Kompilieren.

Das ganze hatte mit ein Java Updaten angefangen, in Moment ist wieder die alte Version drauf.
IDE habe ich auch neu geladen und Installiert genau wie die Libraries.


Der alte LCD Test kann ich hochladen aber da kommt auch ein Fehler ...
Code:
//YWROBOT
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd
// Print a message to the LCD.
  lcd.backlight();
  
  lcd.setCursor(5,0);
  lcd.print("AUTOPILOT:");

  lcd.setCursor(0,1);
  lcd.print("HDG: 080 ");  
  lcd.setCursor(10,1);
  lcd.print("FL:  00280");

  lcd.setCursor(0,2);
  lcd.print("CRS: 070 ");
  lcd.setCursor(10,2);
  lcd.print("ALT: 25650");

  lcd.setCursor(0,3);
  lcd.print("SPD: 265 ");
  lcd.setCursor(10,3);
  lcd.print("V/S: +1200");
  
}

void loop()
{
}

Das Display Blinkt kurz auf wie im Bild und ist danach Dunkel.

   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2015, 12:20
Beitrag #22
RE: LCD Zahlen Formatierung
(21.02.2015 12:12)Kaito164 schrieb:  IDE habe ich auch neu geladen und Installiert genau wie die Libraries.
Sieht so aus, als ob sich da was bei der XPlane-Lib geändert hat. Lade doch mal hier die zugehörige .h-Datei hoch.

Zitat:Der alte LCD Test kann ich hochladen aber da kommt auch ein Fehler ...
Der Fehlertext wäre interessant.

Code:
LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x27 for a 16 chars and 2 line Display
Da stimmt doch was nicht, oder? Da steht doch 20 Spalten und 4 Zeilen im Konstruktor-Aufruf. Im Kommentar und auf Deinem Foto sieht es aber nach 16x2 aus.
Code:
lcd.setCursor(0,3);
  lcd.print("SPD: 265 ");
  lcd.setCursor(10,3);
Was macht denn ein 2-zeiliges Display, wenn man versucht in die dritte Zeile zu schreiben?

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2015, 12:58 (Dieser Beitrag wurde zuletzt bearbeitet: 21.02.2015 13:01 von Kaito164.)
Beitrag #23
RE: LCD Zahlen Formatierung
Zitat:Der Fehlertext wäre interessant.
Das ist es ja es kommt keine Fehlermeldung.

Zitat:Da stimmt doch was nicht, oder? Da steht doch 20 Spalten und 4 Zeilen im Konstruktor-Aufruf. Im Kommentar und auf Deinem Foto sieht es aber nach 16x2 aus.
Der Kommentar ist noch für das kleine Display das hier hat 20*4
Hier im alten Bild sieht man es besser.
[Bild: attachment.php?aid=826]


Angehängte Datei(en)
.zip  XPlaneData_Library.zip (Größe: 38,09 KB / Downloads: 12)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2015, 13:12
Beitrag #24
RE: LCD Zahlen Formatierung
Tja, da weiß ich auch nicht weiter. Ich habe keine LCD-Displays...
Von wegen der XPlane-Lib. Schau Dir mal das .h an. Da gibt's ganz klar keinen Konstrukor mit 4 Parametern. Es gibt aber diese Funktion:
Code:
void XPDStart ( int XPR, int XPW, int IPx[5], byte mc[6]);
Vielleicht hilft das?
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  4 Anzeigen mit unterschiedlichen zufälligen Zahlen Gravia 4 433 10.02.2016 06:05
Letzter Beitrag: Gravia
  Problem mit Division zweier Zahlen torsten_156 3 461 18.12.2015 22:09
Letzter Beitrag: Bitklopfer
  analogRead: Pin-Nummern zählen? HaWe 4 826 14.06.2015 12:01
Letzter Beitrag: HaWe
  Serial Monitor Zahlen Senden über 9 paq 7 2.037 18.05.2015 08:48
Letzter Beitrag: Scherheinz
  .read() liest nur zahlen anstatt character kraweuschuasta 1 1.249 27.02.2014 21:10
Letzter Beitrag: kraweuschuasta
  Zahlen vom Serieller Monitor verarbeiten Sascha87 1 1.277 16.01.2014 10:47
Letzter Beitrag: Stefan
  10er zahlen in binärzahlen - noobfrage schatten14 9 3.820 14.01.2014 12:17
Letzter Beitrag: Stefan
  Pulse zählen Coleby 8 8.312 05.01.2014 10:10
Letzter Beitrag: Coleby
  Große Zahlen und kein Punkt Xwill 2 1.706 27.10.2013 21:10
Letzter Beitrag: Xwill

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste