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
Probleme mit der GPS Adventure Box
19.02.2014, 12:32 (Dieser Beitrag wurde zuletzt bearbeitet: 19.02.2014 14:18 von DerTron71.)
Beitrag #1
Big Grin Probleme mit der GPS Adventure Box
[i]Hallo,
ich bin Neuling auf diesen Gebiet. Ich habe mich bei Kickstarter am Projekt GPS Adventure Box beteiligt. Jetzt sind die Teile gekommen aber ich komme nicht ganz klar mit der Software... Ich hoffe mir kann hier jemand Helfen???!!!
Das ist das Programm:
[/i]

Code:
/*

   _____ _____   _____               _                 _                  ____                      __   ___   ____  
  / ____|  __ \ / ____|     /\      | |               | |                |  _ \                    /_ | / _ \ |___ \
| |  __| |__) | (___      /  \   __| |_   _____ _ __ | |_ _   _ _ __ ___| |_) | _____  __    __   _| || | | |  __) |
| | |_ |  ___/ \___ \    / /\ \ / _` \ \ / / _ \ '_ \| __| | | | '__/ _ \  _ < / _ \ \/ /    \ \ / / || | | | |__ <
| |__| | |     ____) |  / ____ \ (_| |\ V /  __/ | | | |_| |_| | | |  __/ |_) | (_) >  <      \ V /| || |_| | ___) |
  \_____|_|    |_____/  /_/    \_\__,_| \_/ \___|_| |_|\__|\__,_|_|  \___|____/ \___/_/\_\      \_/ |_(_)___(_)____/
                                                                                      
                                                                                          
GPS AdventureBox v 1.0.3
Copyright 2014, Garrett Kendrick
GPSAdventureBox.com


This work is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License.
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/4.0/deed.en_US.
You may modify and share this source code for personal use, but may not sell or use it for any
commercial activities and this license must remain intact.

The GPS AdventureBox contains material duly licensed from The Sundial Group.


Connections:
* Bypass Switch pin to digital pin 9
* GPS RX pin to digital pin 10
* GPS TX pin to digital pin 11
* Servo Data pin to digital pin 12
* SD MOSI pin to digital pin 50
* SD MISO pin to digital pin 51
* SD CLK pin to digital pin 52
* SD CS pin to digital pin 53
* LCD RS pin to digital pin 30
* LCD Enable pin to digital pin 31
* LCD D4 pin to digital pin 32
* LCD D5 pin to digital pin 33
* LCD D6 pin to digital pin 34
* LCD D7 pin to digital pin 35
* LCD R/W pin to ground

*/

#include <LiquidCrystal.h>
#include <SD.h>
#include <SoftwareSerial.h>
#include <TinyGPS.h>
#include <PWMServo.h>
#include <GKScroll.h>



File currentStep, configFile, totalStepsFile;
char current;
int stepToLoad = 1;

static const int servo_Pin = 12; //pin to servo
static const int bypass_input = 9; // pin to bypass switch
static const int closePosition = 220; // angle of servo while closed
static const int openPosition = 90; // angle of servo while open

static const int power_Switch = 15; // pin to power switch circuit

float targetLat;
float targetLon;
String stepNumber;
int tolerance;
String hint;
char charArray[512];
char StepTotalArray[512];
char stepArray[12];
int endOfLineNumber = 0;
int totalSteps = 1;
String firstLine, secondLine = "";
int stringLength, topLength, bottomLength, bottomStart = 0;
int gpsGood = 0;
int val = 0;
int lcdColumns = 16;
int lcdRows = 2;
int scrollBuffer = 5; //number of blank spaces to leave between end and beginning of scrolling text
String units = "feet";
float tolerance_meters = 0;
float distance_feet, distance_meters = 100000;
int speedMultiplier = 3; //increase this to increase the time between location checks and increase LCD scroll speed
int i,j,k = 0;
float lat, lon;// create variable for latitude and longitude object
unsigned long fix_age;
float DEST_LATITUDE;
float DEST_LONGITUDE;


    
SoftwareSerial gpsSerial(10, 11); // create gps sensor connection // RX, TX
TinyGPS gps; // create gps object
PWMServo servo;

// initialize the LCD library with the numbers of the interface pins
LiquidCrystal lcd(30, 31, 32, 33, 34, 35);




void setup() {
  pinMode(53, OUTPUT);
  pinMode(bypass_input,INPUT);
  servo.attach(servo_Pin);
  servo.write(closePosition);
  gpsSerial.begin (9600); // connect gps sensor
  
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
      val = digitalRead(bypass_input);
    if (val == HIGH){
    PrintToLCD("Bypass enabled","(2000)");
    servo.write(openPosition);
    delay(500);
    PowerOff();
   }
PrintToLCD("GPS AdventureBox","v1.0.3");
  delay(5000);
  
  
  if (!SD.begin(36)) {
PrintToLCD("Error reading SD","(1000)");
delay(2500);
PowerOff();
  return;
  }
  
  // ########################    SD Section Begin   ##################################
  
  
char steps[100];
int charPos = 0;



if (SD.exists("curstep.txt")) {
currentStep = SD.open("curstep.txt");

if (currentStep) {
  while (currentStep.available()) {
  stepArray[j] = currentStep.read();
           j++;

  }
  currentStep.close();
  
  stepArray[j] = '\0';
  stepToLoad = atoi(stepArray);

} else {                            //didn't read CurrentStep.txt on SD card

PrintToLCD("Error reading SD", "(1001)");

delay(2500);
PowerOff();                      
}
} else {
  currentStep = SD.open("curstep.txt", FILE_WRITE);
  currentStep.print("1");
  currentStep.close();
  stepToLoad = 1;
}


LoadConfig();


CheckIfFinished();

lcd.setCursor(0, 0);
lcd.print("Please wait...  "); //scroll current hint
lcd.setCursor(0, 1);
lcd.print("Finding GPS fix ");
servo.detach();
  // ########################    SD Section End    ##################################
    
}


void loop() {



gpsSerial.available();


  
if(gps.encode(gpsSerial.read())){ // encode gps data
gpsGood = 0;

for(int g = 0; g < speedMultiplier; g++){
  lcd.setCursor(0, 0);
  lcd.print(ScrollLine(hint, scrollBuffer, lcdColumns));
  delay(280);  
}

  if (millis() >= 900000) //power save after 15 minutes
  PowerOff();

   gps.f_get_position(&lat,&lon, &fix_age); // get latitude and longitude
   distance_meters = TinyGPS::distance_between(lat, lon, DEST_LATITUDE, DEST_LONGITUDE);
   distance_feet = distance_meters * 3.28084;
  
   lcd.setCursor(0, 1);
  if (fix_age < 5000){ //check if fix is stale
  //fix is good
  
  
  if (units == "meters"){ //check to see what unit of measure to use
  //it's meters (metric)
   if (distance_meters < 1000){        
    lcd.print(distance_meters);      
    lcd.print(" meters      ");      
  } else {
    lcd.print((distance_meters/1000));
    lcd.print(" kilometers  ");        
  }
  } else {
   //it's feet (imperial)
      if (distance_feet < 5280){        
    lcd.print(distance_feet);      
    lcd.print(" feet      ");      
  } else {
    lcd.print((distance_feet/5280));
    lcd.print(" miles     ");        
  }
  }
  
  
  } else { //fix is stale
   lcd.print("Finding GPS fix ");
  }

if(distance_meters <= tolerance_meters){
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Step ");
  lcd.print(stepToLoad);
  lcd.setCursor(0, 1);
  lcd.print("complete!");
  delay(2500);
  stepToLoad++;
  
  SD.remove("curstep.txt");
  delay(100);
  currentStep = SD.open("curstep.txt", FILE_WRITE);
  currentStep.print(stepToLoad);
  currentStep.close();
  CheckIfFinished();
  software_Reset();

}

} else {// close the encode gps data
gpsGood++;
if( gpsGood >=20000){
   gpsGood = 0;
  lcd.setCursor(0, 0);
  lcd.print(ScrollLine(hint, scrollBuffer, lcdColumns));
  delay(280);
  lcd.setCursor(0, 1);
  lcd.print("Finding GPS fix ");  
  
}
}

//} //close the while loop
} //close the main loop



void CheckIfFinished()
{

if(stepToLoad >= totalSteps){
  //you did it! unlock and power off
   servo.attach(servo_Pin);
   servo.write(openPosition);
PrintToLCD("You did it!", "Powering off...");
  delay(5000);
PowerOff();

}
}



void PowerOff()
{
  
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Shutting down...");
  
  digitalWrite(power_Switch, HIGH);
  delay(1000);
  software_Reset();
}


void PrintToLCD(char topLine[], char bottomLine[])
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(topLine);
lcd.setCursor(0, 1);
lcd.print(bottomLine);

}

void LoadConfig()
{
  //  #################  get number of steps  ####################
  if (SD.exists("config~1.txt")) {
totalStepsFile = SD.open("config~1.txt");
//Serial.print("it loaded the config file");
if (totalStepsFile) {
  while (totalStepsFile.available()) {
    
  StepTotalArray[k] = totalStepsFile.read();
  
          
  if(StepTotalArray[k] == '^'){
   totalSteps++;
  }
k++;
  }
   //totalSteps++; //because last file doesn't have a ^
  totalStepsFile.close();


  StepTotalArray[k] = '\0';



} else {                            //didn't read SD card

PrintToLCD("Error reading SD", "(1002)");

delay(2500);
PowerOff();                        
}
}
  
  
  
//  #################  now actually get the config  ####################
  if (SD.exists("config~1.txt")) {  //since file names can only be 8 characters, we use this name.
  
configFile = SD.open("config~1.txt");

if (configFile) {

  while (configFile.available()) {


  charArray[i] = configFile.read();
  
if(charArray[i] == '^'){
   endOfLineNumber++;
if (endOfLineNumber >= stepToLoad){
   break;
} else {
    i=-1;
   char charArray[] = "";
}
}
           i++;    

  }
  configFile.close();
  
  charArray[i] = '\0';

targetLat = atof(strtok(charArray, "|"));
targetLon = atof(strtok(NULL, "|"));
tolerance = atoi(strtok(NULL, "|"));
hint = strtok(NULL, "|");
units = strtok(NULL, "|");
    
DEST_LATITUDE = (targetLat);
DEST_LONGITUDE =  (targetLon);

if (units == "meters"){
tolerance_meters = tolerance;  
}else{
tolerance_meters = tolerance / 3.28084;
}
  
  } else {
    PrintToLCD("Error reading SD", "(1003)");
delay(2500);
PowerOff();

  }


}else {
    PrintToLCD("Error reading SD", "(1005)");
delay(2500);
PowerOff();
  }

  
}


void software_Reset() // Restarts program from beginning but does not reset the peripherals and registers
{
asm volatile ("  jmp 0");  
}


und diese Fehlermeldung bekomme ich!!
Fehler auf dem Bild Screenshot(2).png
   

Ich hoffe das mir jemand Helfen kann...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2014, 13:54
Beitrag #2
RE: Probleme mit der GPS Adventure Box
der Code erschlägt einen - daher gibt es hier, damit das ganze etwas übersichtlicher wird oben die CODE Funktion. Ok Linux User wissen das meistens - ich glaub Du hast da Windows auf dem System.. aber Gimp also -
Nutz oben die # Taste
Code:
Häng dann deinen endlos code rein, wie hier der Text und

anschliessend oben close tags  klicken und das ganze wird überschaubbar.

Vielleicht kannst Deinen Text editieren, macht das Code lesen Zeile für Zeile übersichtlicher.

Nun wie ich sehe geht es um diese Aktion:
https://www.kickstarter.com/projects/253...d-adventur

Wo Du als eingeloggtes Mitglied eigentlich alle FUNKTIONIERENDEN Codes kriegen solltest..
(Ich leider nicht, wollte den nämlich schon mit Deinem vergleichen...)
hab es über die Aktionsseite hier versucht. http://gpsadventurebox.com/news/
unter Downloads, da, nachdem ich mich da ein bissel reingelesen habe und ja schon einige nicht gemeckert haben...
bei mir die Vermutung nahe lag, dass da irgendein Übertragungsfehler sein könnte.


Die Frage ist, wieviel Erfahrung hast Du mit Ardu Programmierung?
Eigentlich sollte das - laut Angaben auf den Projektseiten, jeder ohne Kenntnisse können. Und genau das, wollen die Macher mit der Aktion auch erreichen. Denn es steht da unter den Hinweisen zum Projekt, sicher nicht umonst, dass Probleme dort gepostet werden sollen, damit sie für die Zukunft ausgeschlossen werden.

Viel Ahnung hast Du sicher nicht, da Dir Ardu ja schon in der Fehlermeldung ein paar Hinweise gibt, wo suchen. (Tiny GPS has not been declared usw.)

Allerdings macht es bei dem Projekt wirklich nur Sinn - die Fragen auch im Rahmen des Projektes zu stellen. Genau deshalb nimmst Du daran teil.

Sicher hilft Dir hier auch jemand weiter - nur seh ich da den Sinn nicht, warum die Macher so ein Projekt auf die Beine stellen.

Greetz
Sloompie

Dimidium facti, qui coepit, habet: SAPERE AUDE, incipe!©Horaz

Vor allem sapere aude! oder wie Immanuel Kant sagt:
"Habe Mut, dich deines eigenen Verstandes zu bedienen!"

Es tut auch nicht weh! Daher: incipe! oder Tu es! wie Yoda sagen würde.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2014, 14:26
Beitrag #3
RE: Probleme mit der GPS Adventure Box
Danke für die schnelle Antwort.
Ich habe leider keine Erfahrung mit Ardu Programmierung!!! Leider ist mein englisch auch nicht so toll Smile
Ich habe da auch schon hingeschrieben, aber leider habe ich da auch keinen Brauchbaren Tip bekommen.
Darum habe ich es hier versucht...
Und hoffe das mir hier einer helfen kann...

LG Reiner
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2014, 14:29 (Dieser Beitrag wurde zuletzt bearbeitet: 19.02.2014 14:30 von burgi650.)
Beitrag #4
RE: Probleme mit der GPS Adventure Box
Moin,

auf Anhieb sehe ich, das du die Tiny-Lib nicht eingebunden hast.

Vielleicht sind die anderen auch nicht im richtigen Verzeichnis.

Da würd ich als erstes mal nachsehen.

Uwe

Martin Luther King sagte am 28 August 1963 :

I have a Dream !!

Ich bin weiter:

I have a Schaltplan !!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2014, 14:34
Beitrag #5
RE: Probleme mit der GPS Adventure Box
Hallo,

vielleicht hilft Dir dieser Link weiter:

https://www.sparkfun.com/tutorials/173

LG
Georg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2014, 14:45
Beitrag #6
RE: Probleme mit der GPS Adventure Box
(19.02.2014 14:34)Georg schrieb:  Hallo,

vielleicht hilft Dir dieser Link weiter:

https://www.sparkfun.com/tutorials/173

LG
Georg

Georg - the problem is the project!
Er hat sich da auch verpflichtet dran teilzunehmen und zu den Bedingungen. Eigentlich ist dort auch alles vorgegeben. DAher denke ich, es fehlt da irgendwas -
sagt Ardu IDE ja nun auch in der Fehlermeldung.
(Libs einbinden usw.)

Das Projekt läuft und andere haben genau diese Problem nicht...
da wären die Infos zu dem Projekt, die aber NICHT allen zugänglich sind und auch nicht sein sollen wichtig - oder er fängt einfach noch mal Schritt für Schritt von vorne an.
Sloompie

Dimidium facti, qui coepit, habet: SAPERE AUDE, incipe!©Horaz

Vor allem sapere aude! oder wie Immanuel Kant sagt:
"Habe Mut, dich deines eigenen Verstandes zu bedienen!"

Es tut auch nicht weh! Daher: incipe! oder Tu es! wie Yoda sagen würde.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2014, 15:56
Beitrag #7
RE: Probleme mit der GPS Adventure Box
Da du ja nun nicht nur probs mit der englischen Sprache hast, sondern auch so gar keine Ahnung was Programmieren von Ardus angeht - wäre es sinnvoll, wenn Du die beiden Bücher einfach mal ein wenig durchstöberst.

Dann verstehst vielleicht, wenn hier jemand was von Sketchen, Libs und sonstigen Dingen postet - das macht es für alle hier ein bissel einfacher.
Die Kristallkugeln in dem Forum sind leider nur in limitierter Auflage vorhanden und nicht jeder Ardu-Hexenmeister darf sie nutzen.

Die Muggles schon mal gar nicht. Big Grin

Die beiden Infos gibt es sogar gratis - aber ich hoffe nicht umsonst

Praxisbuch Arduino

und Arduino Programmierhandbuch

Ich glaube, man kann hier nicht oft genug auf die beiden Möglichkeiten hinweisen, da viele hier als Newbies mit Aufgaben kommen, die wenigstens ein bissel Grundwissen voraussetzen.

Greetz
Sloompie

Dimidium facti, qui coepit, habet: SAPERE AUDE, incipe!©Horaz

Vor allem sapere aude! oder wie Immanuel Kant sagt:
"Habe Mut, dich deines eigenen Verstandes zu bedienen!"

Es tut auch nicht weh! Daher: incipe! oder Tu es! wie Yoda sagen würde.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2014, 16:54
Beitrag #8
RE: Probleme mit der GPS Adventure Box
Hallo,
ich wollte nur sagen die GPS Adventures Box läuft !!!!
Ich habe die GPS lib nicht richtig eingebunden... und siehe da ... sie läuft ... vielen Dank
Ich glaube ich werde mich ein wenig mehr mit der programmierung beschäftigen Smile Ist ein tolles Ding...

Ich wollte nur mal nachfragen, ob man das GPS Signal im Display auch als Meter anzeigen lassen kann, und nicht in Feet????

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


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ArduinoDroid Probleme Brother Tak 1 205 10.09.2016 22:12
Letzter Beitrag: Brother Tak
  Roboter-Bau Probleme blebbens 8 381 12.07.2016 07:35
Letzter Beitrag: Binatone
  Probleme mit sprintf() und dtostrf() GMBU 11 817 22.06.2016 10:52
Letzter Beitrag: GMBU
  Makeblock mit Scratch programmieren- Probleme Keinen Schimmer 6 973 06.05.2016 18:34
Letzter Beitrag: arduinopeter
  Programme vom UNO auf nano , mini Pro portieren Probleme anwo 19 1.178 17.04.2016 21:12
Letzter Beitrag: hotsystems
  Probleme beim Auslesen eines IR Empfängers linuxpaul 7 576 06.03.2016 14:44
Letzter Beitrag: hotsystems
  I²C vom NANO zum PI Probleme mit High/Low Bit Tobias1984 4 332 29.02.2016 00:00
Letzter Beitrag: hotsystems
  Probleme beim auswählen des Ports Levi 11 834 21.02.2016 18:00
Letzter Beitrag: hotsystems
  IRemote probleme mit abfrage schnutzkurt 18 1.153 20.02.2016 01:30
Letzter Beitrag: SkobyMobil
  Probleme mit SPI - Ethernet und nRF24L01 itsy 35 2.982 21.11.2015 19:59
Letzter Beitrag: ardu_arne

Gehe zu:


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