- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 2 von 2

Thema: Locosys LS20031 mit Arduino Mega ADK

  1. #1
    Neuer Benutzer
    Registriert seit
    26.12.2011
    Ort
    Hamburg
    Alter
    38
    Beiträge
    2

    Frage Locosys LS20031 mit Arduino Mega ADK

    Anzeige

    Powerstation Test
    Ich hoffe ich hab hier den richtigen Bereich erwischt, sonst bitte verschieben.

    Hallo,
    ich bin neu hier und gerade erst wieder in das Programmieren eingestiegen, habe zwar schon in der Schule mal mit TP6 und Basic gearbeitet und wollte mir jetzt mal an einem Arduino versuchen, nachdem die ganzen standardübungen wunderbar geklappt haben hab ich mir den LS20031 bestellt. Wenn ich den empfänger direkt an Pin 0 und Pin 1 (RX => TX / TX => RX) hänge habe ich mit GPS Fox oder Mini GPS auch sofort eine Verbindung, da 57600 jedoch etwas schnell war habe ich mit einem FTDI Breakout Board alle Sätze bis auf den GPRMC und den GPGGA geaktiviert, Frequenz auf 1Hz und Baud 4800 gesetzt. Seit der Änderung spuckt er gelegentlich komische Daten aus wenn RX und TX angeschlossen sind, ohne RX sind die Ausgabesätze alle ok.

    Zitat Zitat von Nur TX
    $GPGGA,203619.000,5341.2901,N,01008.3782,E,1,7,1.0 2,42.9,M,45.8,M,,*6F
    $GPRMC,203619.000,A,5341.2901,N,01008.3782,E,1.02, 133.48,211211,,,A*61
    $GPGGA,203620.000,5341.2901,N,01008.3789,E,1,7,1.0 2,42.9,M,45.8,M,,*6E
    $GPRMC,203620.000,A,5341.2901,N,01008.3789,E,1.01, 127.36,211211,,,A*6F
    $GPGGA,203621.000,5341.2897,N,01008.3794,E,1,7,1.0 2,43.1,M,45.8,M,,*64
    $GPRMC,203621.000,A,5341.2897,N,01008.3794,E,0.67, 128.16,211211,,,A*60
    $GPGGA,203622.000,5341.2893,N,01008.3798,E,1,7,1.0 2,43.0,M,45.8,M,,*6E
    Bei RX und TX waren die Zeilen teilweise nicht richtig getrennt (mehrer Sätze in einer Zeile und zwischen den Sätzen irgendwelche Zeichen, als würde die Baudrate nicht passen.


    Mit dem Beispielprogramm und der Bibliothek TinyGPS hat er jedoch absolut keine Ausgabe von Daten, das zeigt er mir jedoch:
    Testing TinyGPS library v. 10
    by Mikal Hart

    Sizeof(gpsobject) = 103
    (nur TX GPS => RX Arduino), langsam bin ich am verzweifeln da ich jetzt schon 2 Wochen am probieren bin und keine Idee mehr habe woran es liegen könnte.

    Das LSM303DLH ( 3 Achs Kompass/ Beschleunigungssensorboard) habe ich zum Laufen bekommen indem ich statt dem Mega ADK in der Entwicklungsumgebung das Mega 2560 ausgewählt hab da gab es jedoch nur beim Kompilieren Fehler beim GPS brachte das keine Änderung.

    Code:
    #include <TinyGPS.h>
    #include <NewSoftSerial.h>
    
    
    /* This sample code demonstrates the normal use of a TinyGPS object.
       It requires the use of NewSoftSerial, and assumes that you have a
       4800-baud serial GPS device hooked up on pins 2(rx) and 3(tx).
    */
    
    TinyGPS gps;
    NewSoftSerial nss(2, 3);
    
    void gpsdump(TinyGPS &gps);
    bool feedgps();
    void printFloat(double f, int digits = 2);
    
    void setup()
    {
      Serial.begin(9600);
      nss.begin(4800);
      
      Serial.print("Testing TinyGPS library v. "); Serial.println(TinyGPS::library_version());
      Serial.println("by Mikal Hart");
      Serial.println();
      Serial.print("Sizeof(gpsobject) = "); Serial.println(sizeof(TinyGPS));
      Serial.println();
    
    }
    
    void loop()
    {
      bool newdata = false;
      unsigned long start = millis();
    
      // Every 5 seconds we print an update
      while (millis() - start < 5000)
      {
        if (feedgps())
          newdata = true;
      }
      
      if (newdata)
      {
        Serial.println("Acquired Data");
        Serial.println("-------------");
        gpsdump(gps);
        Serial.println("-------------");
        Serial.println();
      }
    }
    
    void printFloat(double number, int digits)
    {
      // Handle negative numbers
      if (number < 0.0)
      {
         Serial.print('-');
         number = -number;
      }
    
      // Round correctly so that print(1.999, 2) prints as "2.00"
      double rounding = 0.5;
      for (uint8_t i=0; i<digits; ++i)
        rounding /= 10.0;
      
      number += rounding;
    
      // Extract the integer part of the number and print it
      unsigned long int_part = (unsigned long)number;
      double remainder = number - (double)int_part;
      Serial.print(int_part);
    
      // Print the decimal point, but only if there are digits beyond
      if (digits > 0)
        Serial.print("."); 
    
      // Extract digits from the remainder one at a time
      while (digits-- > 0)
      {
        remainder *= 10.0;
        int toPrint = int(remainder);
        Serial.print(toPrint);
        remainder -= toPrint; 
      } 
    }
    
    void gpsdump(TinyGPS &gps)
    {
      long lat, lon;
      float flat, flon;
      unsigned long age, date, time, chars;
      int year;
      byte month, day, hour, minute, second, hundredths;
      unsigned short sentences, failed;
    
      gps.get_position(&lat, &lon, &age);
      Serial.print("Lat/Long(10^-5 deg): "); Serial.print(lat); Serial.print(", "); Serial.print(lon); 
      Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");
      
      feedgps(); // If we don't feed the gps during this long routine, we may drop characters and get checksum errors
    
      gps.f_get_position(&flat, &flon, &age);
      Serial.print("Lat/Long(float): "); printFloat(flat, 5); Serial.print(", "); printFloat(flon, 5);
      Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");
    
      feedgps();
    
      gps.get_datetime(&date, &time, &age);
      Serial.print("Date(ddmmyy): "); Serial.print(date); Serial.print(" Time(hhmmsscc): "); Serial.print(time);
      Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");
    
      feedgps();
    
      gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age);
      Serial.print("Date: "); Serial.print(static_cast<int>(month)); Serial.print("/"); Serial.print(static_cast<int>(day)); Serial.print("/"); Serial.print(year);
      Serial.print("  Time: "); Serial.print(static_cast<int>(hour)); Serial.print(":"); Serial.print(static_cast<int>(minute)); Serial.print(":"); Serial.print(static_cast<int>(second)); Serial.print("."); Serial.print(static_cast<int>(hundredths));
      Serial.print("  Fix age: ");  Serial.print(age); Serial.println("ms.");
      
      feedgps();
    
      Serial.print("Alt(cm): "); Serial.print(gps.altitude()); Serial.print(" Course(10^-2 deg): "); Serial.print(gps.course()); Serial.print(" Speed(10^-2 knots): "); Serial.println(gps.speed());
      Serial.print("Alt(float): "); printFloat(gps.f_altitude()); Serial.print(" Course(float): "); printFloat(gps.f_course()); Serial.println();
      Serial.print("Speed(knots): "); printFloat(gps.f_speed_knots()); Serial.print(" (mph): ");  printFloat(gps.f_speed_mph());
      Serial.print(" (mps): "); printFloat(gps.f_speed_mps()); Serial.print(" (kmph): "); printFloat(gps.f_speed_kmph()); Serial.println();
    
      feedgps();
    
      gps.stats(&chars, &sentences, &failed);
      Serial.print("Stats: characters: "); Serial.print(chars); Serial.print(" sentences: "); Serial.print(sentences); Serial.print(" failed checksum: "); Serial.println(failed);
    }
      
    bool feedgps()
    {
      while (nss.available())
      {
        if (gps.encode(nss.read()))
          return true;
      }
      return false;
    }
    Gruß Arne

  2. #2
    Neuer Benutzer
    Registriert seit
    26.12.2011
    Ort
    Hamburg
    Alter
    38
    Beiträge
    2
    Ich habe den Empfänger jetzt an Serial1 gehängt und alles mit "nss" durch "Serial1" ersetzt um den echten Seriellen Anschluss zu nutzen, das war vermutlich das Problem, ich kann zwar nicht verstehen warum aber da der LSM303DL auch schon nur anfing zu funktionieren und keine Fehler mehr beim Komileren verursacht hat als ich das Board von Mega ADK zu Mega 2560 in der Entwicklungsumgebung geändert habe wundert mich das nicht mehr

    Wenigstens sieht das was er ausspuckt jetzt so aus:


    Zitat Zitat von COM3
    Acquired Data
    -------------
    Lat/Long(10^-5 deg): 5368830, 1013942 Fix age: 252ms.
    Lat/Long(float): 53.68830, 10.13942 Fix age: 309ms.
    Date(ddmmyy): 100112 Time(hhmmsscc): 14124400 Fix age: 390ms.
    Date: 1/10/2012 Time: 14:12:44.0 Fix age: 455ms.
    Alt(cm): 2580 Course(10^-2 deg): 16630 Speed(10^-2 knots): 1
    Alt(float): 25.80 Course(float): 166.30
    Speed(knots): 0.01 (mph): 0.01 (mps): 0.01 (kmph): 0.02
    Stats: characters: 40237 sentences: 528 failed checksum: 0
    -------------

Ähnliche Themen

  1. [ERLEDIGT] [ARDUINO] 2 Motoren + Servo mit dem Arduino Uno steuern
    Von Torrentula im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 31.08.2011, 16:31
  2. ARDUINO ARDUINO l293D + MegaservoLib
    Von m1ch15inner im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 2
    Letzter Beitrag: 11.07.2011, 11:50
  3. Antworten: 3
    Letzter Beitrag: 03.12.2009, 18:36
  4. Ein kleines Arduino-Mega Roboterprojekt
    Von Spirou im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 0
    Letzter Beitrag: 12.06.2009, 15:47
  5. Wieviele Servos an den Mega 8 oder Mega 16 ?
    Von minium :) im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 06.10.2006, 18:03

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test