Seit knapp 2 Wochen beschäfftige ich mich mit dem Arduino Duemilanove und frage mich warum ich nicht schon früher mit dem programmieren angefangen habe.
hab mir auch das Buch Arduino “Physical Computing für Bastler, Designer & Geeks” besorgt … muss leider aber sagen das das Buch eine Menge Fehler aufweisst und für Einsteiger wie mich … bei manchen Fehlern zur Weissglut führte ^^ aber das beiseite …
Ich probiere nun Seit Tagen den NMEA String von meinem UBLOX-GPS 4T auseinanderzunehmen was mir auch im einzelnen gelingt.
Der GPRMC String reicht für die meisten Aussagen ja aus … aber ich hätte gern nach Anzahl der erfassten Sateliten sowie momentane Genauigkeit dafür benötige ich aber noch GPGGA
Also die Auswertung des einzelnen Strings bekomme ich schon hin … aber immer nur von einem.
Was ich nicht schaffe ist Ihm zu sagen suche gleichzeitig nach “$GPRMC” und “$GPGGA” und schicke mir diese beiden Strings
Entweder entwickle ich immer solch eine logik das er mir garnix mehr ausspuckt weil er kein true mehr bekommt, oder er mir wild alles mögliche des NMEA Strings ausgibt.
Was ich halt nur schaffe ist die Suche nach einem von beiden, dies war mir natürlich nur möglich durch die vielen teils guten tutorials.
mir fällt es sogar schwer die Frage richtig zu formulieren weil ich nicht wirklich sagen kann warum er mich nicht versteht^^
vllt hier mal der momentane Programmstand:(der ist inzwischen ganzschön durcheinandergewürfelt durch die ständigen änderungen
#include <NewSoftSerial.h>
NewSoftSerial gpsSerial(2, 3); //wobei RX 2 TX 3
int ledPin = 13;
int byteGP=-1;
char HauptZeile[100] ="";
char HauptString[7] ="$GPRMC",NebenString[7]="$GPGGA";
int Hzaehl = 0;
int Hgut = 0;
int Hschlecht = 0;
int Hwerte[13];
//int byteGPGGA=-1;
//char NebenZeile[100] ="";
//char NebenString[7]="$GPGGA";
//int Nzaehl = 0;
//int Ngut = 0;
//int Nschlecht = 0;
//int HNerte[13];
void setup()
{
pinMode(ledPin,OUTPUT);
Serial.begin(38400);
Serial.println(“Warte auf Signal”);
delay(1000);
gpsSerial.begin(9600);
Serial.println(“intialisiere GPS-Port”);
delay(1000);
Serial.println(“Warte auf GPS-Signal”);
Serial.println("--------------------");
for (int i=0;i<100;i++)
{
HauptZeile*=’ ';*
- }[/color]*
// for (int j=0;j<100;j++)
// {
// NebenZeile[j]=’ ';
// }
}
void loop()
{ - digitalWrite(ledPin, HIGH);*
- byteGP=gpsSerial.read();*
- if (byteGP == -1)*
- {*
- delay(100);*
- }*
- else*
- {*
- HauptZeile[Hschlecht]=byteGP;*
- Hschlecht++;*
- if (byteGP==13)*
- {*
- digitalWrite(ledPin,LOW);*
- Hzaehl=0;*
- Hgut=0;*
- for (int i=1;i<7;i++)*
- {*
_ if(HauptZeile*==(HauptString[i-1]))//&&(NebenString[i-1]));_
_ {_
_ Hgut++;_
_ }_
_ }_
_ if(Hgut==6)_
_ {[/color]_
_ //for(int i=0;i<70;i++)_
_ //{_
_ // if(HauptZeile==’,’)
// {
// Hwerte[Hzaehl]=i;
// Hzaehl++;
// }
// if(HauptZeile[i++]==’’)
* // {
// Hwerte[12]=i;
// Hzaehl++;
// }
//}
Serial.println(HauptZeile);
//Serial.println(NebenZeile);
//Serial.println("");
//for(int i=0;i<12;i++)
//{
// switch(i)
// {
// case 0 :Serial.print("Zeit = ");//break;
// }
//for (int k=Hwerte;k<(Hwerte[i+1]-1);k++)
//{
// Serial.print(HauptZeile[k+1]);
//}
//}
}
Hschlecht=0;
for (int i=0;i<100;i++)
{
HauptZeile=’ ';
}
}
}
}[/color]*_