basic lightning detector with gps and sd card logging

Dependencies:   AS3935 AdafruitGPS SDFileSystem TSI mbed ConfigFile

Revision:
2:3edb129c60b2
Parent:
1:10d2a051285e
Child:
3:e3974328d808
diff -r 10d2a051285e -r 3edb129c60b2 main.cpp
--- a/main.cpp	Mon Jun 22 20:39:32 2015 +0000
+++ b/main.cpp	Tue Jun 23 21:01:40 2015 +0000
@@ -38,7 +38,7 @@
 //DigitalOut blue(LED_BLUE);  don't use the blue led, due to a board error, writing to the blue led kills spi
 bool debug;
 int day, month,year,hour,minute,seconds; 
-void writeLogFile(int interruptSource, int distance);
+void writeLogFile(int interruptSource, int distance, long energy);
 char logName[]="lightning_data.csv";
 int rdistance, rinterrupt;
 char directory[]="/sd/lightning_data";
@@ -47,6 +47,7 @@
 {
     int OriginInt;
     int distance=-1;
+    long energy =-1; 
     wait_ms(2); // 
     OriginInt = ld.interruptSource();
     pc.printf("%02d/%02d/20%02d_%02d:%02d:%02d ",month,day,year,hour,minute,seconds);
@@ -60,19 +61,21 @@
             break;     
         case 8:
             distance = ld.lightningDistanceKm();
-            pc.printf("Lightning detection, distance=%dkm\r\n", distance);
+            energy   = ld.getEnergy();
+            pc.printf("Lightning detection, distance=%dkm energy=%ld\r\n", distance, energy);
+                        
             ld.clearStats();
             break;
         default:
             pc.printf("Unknown interrupt %d\r\n", OriginInt);
 
     }
-    writeLogFile(OriginInt,distance);
+    writeLogFile(OriginInt,distance, energy);
     pc.printf("Resume wait for lightning detection...\r\n");
  
 }
  
- void writeLogFile(int interruptSource, int distance)
+ void writeLogFile(int interruptSource, int distance, long energy)
 {
     char logFilePath[128];
     static bool header=false;
@@ -97,7 +100,7 @@
     // write the log file header
     if (header == false)    
     {
-        fprintf(fp,"# date,time,raw timestamp,latitude,longitude,distance,interrupt\r\n");
+        fprintf(fp,"# date,time,raw timestamp,latitude,longitude,distance,interrupt,energy\r\n");
         header = true;
     }
     // write to the current log file
@@ -106,7 +109,8 @@
     fprintf(fp,"%7.0f,",gpsd.timef);
     fprintf(fp,"%5.7f,%5.7f,", gpsd.lat_deg, gpsd.lon_deg);
     fprintf(fp,"%d,",distance);
-    fprintf(fp,"%d",interruptSource);
+    fprintf(fp,"%d,",interruptSource);
+    fprintf(fp,"%ld",energy);
     fprintf(fp,"\r\n");
     fflush(fp);
     f_sync((FIL*)fp); 
@@ -157,10 +161,11 @@
     ld.init();
     ld.clearStats();
 
+    ld.calibrateRCOs(IntLightning);
     measFreq = ld.tuneAntenna(IntLightning);
     
-    ld.powerUp();
-    ld.calibrateRCOs(IntLightning);
+    //ld.powerUp(); 
+    
     //ld.setIndoors(); 
     ld.setOutdoors(); 
     ld.setMinimumLightnings(0);