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
GPS-Tracker mit Adafruit Ultimate GPS breakout und 128x54 OLED
19.01.2014, 12:19
Beitrag #1
GPS-Tracker mit Adafruit Ultimate GPS breakout und 128x54 OLED
Hi ich möchte mir ein GPS Device wie folgt bauen:





Der veröffentliche Code von Ihm läuft bei mir gar nicht meißtens ist da OLED nur schwarz oder zeigt nur 0:0.

Also versuchte ich mich selbst daran. Aber das OLED alleine zu programmieren klappt soweit aber sobald ich versuche das GPS Modul mit einzubinden in den code macht es zicken.

Entweder zeigt es gar nichts an oder nur das adafruit logo. Ich hatte es auch das wenn ich zb anstatt "no GPS" "no Gps Signal" ausgeben wollte es nicht mehr ging bei genau gleichem code.

Bei meinem aktuellen code habe ich drei leds mit eingebaut um zu sehen wo sich das Programm aktuell befindet. Bisher habe ich im Prinzip nur die beispiele von adafruit für das OLED und GPS zusammen in ein Programm gepackt. Aber das OLED bleibt einfach schwarz.

Wäre super wenn mir da weiterhelfen könnte mir fehlt auch noch etwas das Verständnis für die Interrupt Geschichte bei dem GPS modul.

Hier mein Code:

Code:
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//include

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GPS.h>
#include <SoftwareSerial.h>

////////////////////////////////////////////////////////////////////////////////////////////////////////////
//define

//OLED
#define OLED_DC 11
#define OLED_CS 12
#define OLED_CLK 10
#define OLED_MOSI 9
#define OLED_RESET 13
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

//buttons
#define left A3                       // left or top button
#define mid A4                        // middle button
#define right A5                      // right or bottom button

//LEDs
#define ledy A0
#define ledr A1
#define ledg A2

//GPS
#define GPS_ENABLE 4
SoftwareSerial mySerial(3, 2);      // Connect the GPS TX (transmit) pin to Digital 3, Connect the GPS RX (receive) pin to Digital 2
#define GPSECHO  true
Adafruit_GPS GPS(&mySerial);

////////////////////////////////////////////////////////////////////////////////////////////////////////////
//variables

boolean usingInterrupt = false;
void useInterrupt(boolean); // Func prototype keeps Arduino 0023 happy

////////////////////////////////////////////////////////////////////////////////////////////////////////////
//setup

void setup()   {    

  //pinmode GPS/OLED
  //pinMode(OLED_VIN,OUTPUT);
  pinMode(GPS_ENABLE,OUTPUT);
  //digitalWrite(OLED_VIN,HIGH);        //turns OLED on/off
  digitalWrite(GPS_ENABLE,HIGH);      //turns GPS on/off

  //pinmode buttons
  pinMode(left,INPUT);
  pinMode(mid,INPUT);
  pinMode(right,INPUT);

  //pinmode LEDs
  pinMode(ledy,OUTPUT);
  pinMode(ledr,OUTPUT);
  pinMode(ledg,OUTPUT);

  //setup OLED
  display.begin(SSD1306_SWITCHCAPVCC);

  // startupscreen
  display.clearDisplay();
  display.setTextSize(3);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println("GPS-Kit");
  display.setTextSize(1);
  display.print("by Louis Fischer");
  display.display();
  delay(2000);
  display.clearDisplay();

  //setupGPS
  GPS.begin(9600);  
  GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);        // uncomment this line to turn on RMC (recommended minimum) and GGA (fix data) including altitude
  //GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY);      // uncomment this line to turn on only the "minimum recommended" data
  // For parsing data, we don't suggest using anything but either RMC only or RMC+GGA since
  // the parser doesn't care about other sentences at this time
  GPS.sendCommand(PMTK_SET_NMEA_UPDATE_10HZ);           // 1 Hz update rate
  // For the parsing code to work nicely and have time to sort thru the data, and
  // print it out we don't suggest using anything higher than 1 Hz

  useInterrupt(true);

  delay(1000);
  // Ask for firmware version
  mySerial.println(PMTK_Q_RELEASE);

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////
//functions

// Interrupt is called once a millisecond, looks for any new GPS data, and stores it
SIGNAL(TIMER0_COMPA_vect) {
  char c = GPS.read();
  // if you want to debug, this is a good time to do it!
#ifdef UDR0
  if (GPSECHO)
    if (c) UDR0 = c;  
  // writing direct to UDR0 is much much faster than Serial.print
  // but only one character can be written at a time.
#endif
}

void useInterrupt(boolean v) {
  if (v) {
    // Timer0 is already used for millis() - we'll just interrupt somewhere
    // in the middle and call the "Compare A" function above
    OCR0A = 0xAF;
    TIMSK0 |= _BV(OCIE0A);
    usingInterrupt = true;
  }
  else {
    // do not call the interrupt function COMPA anymore
    TIMSK0 &= ~_BV(OCIE0A);
    usingInterrupt = false;
  }
}

uint32_t timer = millis();
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//main

void loop() {

  digitalWrite(ledy,HIGH);
  delay(10);
  digitalWrite(ledy,LOW);

  // in case you are not using the interrupt above, you'll
  // need to 'hand query' the GPS, not suggested :(
  if (! usingInterrupt) {
    // read data from the GPS in the 'main loop'
    char c = GPS.read();
    // if you want to debug, this is a good time to do it!
    if (GPSECHO)
      if (c) Serial.print(c);
  }

  // if a sentence is received, we can check the checksum, parse it...
  if (GPS.newNMEAreceived()) {
    // a tricky thing here is if we print the NMEA sentence, or data
    // we end up not listening and catching other sentences!
    // so be very wary if using OUTPUT_ALLDATA and trytng to print out data
    //Serial.println(GPS.lastNMEA());   // this also sets the newNMEAreceived() flag to false

    if (!GPS.parse(GPS.lastNMEA()))   // this also sets the newNMEAreceived() flag to false
      return;  // we can fail to parse a sentence in which case we should just wait for another
  }

  // if millis() or timer wraps around, we'll just reset it
  if (timer > millis())  timer = millis();

  // approximately every 2 seconds or so, print out the current stats
  if (millis() - timer > 2000) {
    timer = millis(); // reset the timer

    digitalWrite(ledg,HIGH);
    delay(10);
    digitalWrite(ledg,LOW);

  }

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.05.2014, 20:29
Beitrag #2
RE: GPS-Tracker mit Adafruit Ultimate GPS breakout und 128x54 OLED
Hi,

sag mal hast du das Problem gelöst? Mir geht es aktuell am Uno genauso. GPS geht alleine Smile , OLED klappt Smile , aber wenn ich alles zusammen bringe, dann erhalte ich keinen Fix mehr und das OLED bleibt hängen Sad .

Ich vermute, dass es ein Problem zwischen SPI und Software Serial ist, bin aber noch zu neu dabei, als dass ich da schon genau durchsteige Rolleyes .

Viele Grüße

Mark
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Adafruit 1,8" tft ossilampe 13 229 12.11.2016 00:07
Letzter Beitrag: ossilampe
  Adafruit 2.8" Color TFT Touchscreen mittlig1977 3 213 14.10.2016 22:23
Letzter Beitrag: Tommy56
  adafruit V2.3 Shield Hangloose 6 298 08.09.2016 17:13
Letzter Beitrag: rpt007
  PWM-Lüfter mit Adafruit Motor-Shield steuern? phischmi 9 465 22.07.2016 18:06
Letzter Beitrag: phischmi
  Adafruit SD-master / logger shield: Fehler beim 2. Kompilieren kl-ing 3 337 06.06.2016 16:07
Letzter Beitrag: Bitklopfer
  Adafruit Gemma Board kommt nicht in den Bootloader-Modus! Jack Sparrow 2 330 09.04.2016 12:10
Letzter Beitrag: hotsystems
  Problem mit OLED 0.96" Display torsten_156 3 546 03.04.2016 15:10
Letzter Beitrag: hotsystems
  Tastensteuerung Music Maker (Adafruit) Mondeo 1 248 04.02.2016 16:40
Letzter Beitrag: Mondeo
  OLED SSD1306 IC² Aktuallisierungrate Langsam b3ta 25 1.403 31.01.2016 09:26
Letzter Beitrag: b3ta
  Adafruit Neopixel master_vö 13 946 24.01.2016 20:33
Letzter Beitrag: master_vö

Gehe zu:


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