现在在做一个实验,需要记录GPS数据和其他一些传感器的数据,现阶段只进行到GPS数据记录就被卡住了~
- #include <SD.h>
- const int chipSelect = 10;
- void setup()
- {
- Serial.begin(9600);
-
- pinMode(10, OUTPUT);
- if (!SD.begin(chipSelect)) {
-
- return;
- }
-
- }
- void loop()
- {
- char index = 0;
- char temp = 0;
- String dataString = "";
- File dataFile = SD.open("datalog.txt", FILE_WRITE);
- if(dataFile)
- {
- while(Serial.available())
- {
- temp = Serial.read();
- dataString += String(temp);
- index++;
- if(index>200)
- break;
- }
- dataFile.print(dataString);
- dataFile.close();
- }
- }
复制代码
利用上面的sketch,能够把GPS的数据记录下来,结果如下:
[pre lang="GPS" line="1"]$PSRFTXT,Version: GSD4e_4.0.4-P1_RPATCH.06-GS003*60
$PSRFTXT,VAS: Disabled*4A
$PSRFTXT,TOW: 0*25
$PSRFTXT,WK: 1596*6E
$PSRFTXT,POS: 6378137.0 0.0 0.0*34
$PSRFTXT,CLK: 96248*2C
$PSRFTXT,CHNL: 12,*73
$PSRFTXT,Baud rate: 9600,*66
$GPGGA,235946.013,,,,,0,00,,,M,0.0,M,,0000,*5B
$GPGLL,,,,,235946.013,V,N,*77
$GPGSA,A,1,,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,12,01,00,000,,02,00,000,,03,00,000,,04,00,000,,*7C
$GPGSV,3,2,12,05,00,000,,06,00,000,,07,00,000,,08,00,000,,*77
$GPGSV,3,3,12,09,00,000,,10,00,000,,11,00,000,,12,00,000,,*71
$GPRMC,235946.013,V,,,,,,,070810,,,N,*4E
$GPVTG,,T,,M,,N,,K,N,*2C
……………………………………[/code]
但如果按上面提供的sketch进行数据记录将产生非常庞大的数据量(24小时不到已经几十万行数据了),能告诉怎么设置时间间隔采样么?
我尝试过用delay(60000),但比较可惜是,虽然也能记录,但却不能把同一时间点的所有GPS数据记录下来,非常多的数据都丢失了~
有什么可以选择的方法么?
有朋友建议说用millis()进行时间间隔的判别,可是说实在,小弟真的不明白具体怎么个操作法{:soso_e118:}
小的编程程度大概是基本能读懂一些不太复杂的程序,可以把几个相似的程序做比较然后进行修改、模仿,仅此而已{:soso_e113:}
希望能得到大家的指点,也谢谢大家的赐教~{:soso_e183:} |