AS3935 Lightning sensor library

Dependents:   zeus

Fork of AS3935 by valentin spanu

include the mbed library with this snippet

#include "mbed.h"
#include "AS3935.h"

 // frdm-kl25z sd card connections for spi1 
 // ------------------------------------------------
 // Header -- kl25z -- SD/MMC          
 // J2-20  -- PTE1  -- MOSI
 // J9-13  -- PTE4  -- CS
 // J2-14  -- GND   -- Vss (GND) 
 // J9-9   -- PTE2  -- SCK
 // J9-11  -- PTE3  -- MISO
 
AS3935 ld(PTE1, PTE3, PTE2, PTE4, "ld", 100000); // MOSI, MISO, SCK, CS, SPI bus freq (hz) 
InterruptIn IntLightning(PTA12); //IRQ AS3935
DigitalOut led1(LED_RED);
Serial pc(USBTX, USBRX);

void DetectLightning()
{
    char OriginInt;
     wait_ms(2); 
    OriginInt = ld.interruptSource();
    if (OriginInt == 1) { //
        pc.printf(" Noise level too high\r\n");
        }
    if (OriginInt == 4) { //
        pc.printf(" Disturber\r\n");
        }
    if (OriginInt == 8) { // detection
        // pc.printf(" Lightning detection\r\n");
        pc.printf(" Lightning detection, distance=%dkm\r\n", ld.lightningDistanceKm());
        ld.clearStats();

        }
}

 
int main() {
    pc.baud(9600);
    pc.printf("\r\nstart lightning detector\r\n");
    
    //initialisations
    ld.reset();
    ld.setTuneCap(5); // 500kHz
    ld.powerUp();
    ld.setIndoors();  
    ld.setMinimumLightnings(1);
    //ld.setSpikeRejection(2);
    ld.setNoiseFloor(2);
    ld.disableDisturbers();
    //ld.enableDisturbers();
    ld.setWatchdogThreshold(2);
    wait_ms(10);
    IntLightning.rise(&DetectLightning);
    int MinBlysk = ld.getMinimumLightnings();
    int Noise = ld.getNoiseFloor();
    int TuneCap = ld.getTuneCap();
    int SpikeRej = ld.getSpikeRejection();
    int WatchDog = ld.getWatchdogThreshold();
     
    pc.printf(" Min wylad: %i", MinBlysk);
    pc.printf("\r\n");
    pc.printf(" Noise: %i", Noise);
    pc.printf("\r\n");
    pc.printf(" Tune CAP: %i", TuneCap);
    pc.printf("\r\n");
    pc.printf(" Spike rej: %i", SpikeRej);
    pc.printf("\r\n");
    pc.printf(" Watchdog: %i", WatchDog);
    pc.printf("\r\n");
    while(1) {
        led1 = ! led1;
        wait(0.2);
     }
    
 
 }

Files at this revision

API Documentation at this revision

Comitter:
cmkachur
Date:
Wed Jun 17 15:04:28 2015 +0000
Parent:
7:0d2586164d5b
Parent:
6:c9b9e7d3bced
Child:
9:19a323b1c508
Commit message:
Merge with tuneAntenna() method.

Changed in this revision

AS3935.cpp Show annotated file Show diff for this revision Revisions of this file
AS3935.h Show annotated file Show diff for this revision Revisions of this file
--- a/AS3935.cpp	Wed Jun 17 14:32:24 2015 +0000
+++ b/AS3935.cpp	Wed Jun 17 15:04:28 2015 +0000
@@ -137,7 +137,7 @@
     m_Spi.write(0x1c);
     m_Cs = 1;
     wait_ms(2);
-    #endif
+#endif
 }
 
 #if 0 
@@ -281,6 +281,11 @@
     registerWrite(AS3935_AFE_GB,AS3935_AFE_INDOOR);
 }
 
+int AS3935::getGain()
+{
+    return registerRead(AS3935_AFE_GB);
+}
+
 void AS3935::setOutdoors()
 {
     registerWrite(AS3935_AFE_GB,AS3935_AFE_OUTDOOR);
--- a/AS3935.h	Wed Jun 17 14:32:24 2015 +0000
+++ b/AS3935.h	Wed Jun 17 15:04:28 2015 +0000
@@ -44,7 +44,7 @@
 #define AS3935_TUN_CAP 0x08, 0x0F
 
 // other constants
-#define AS3935_AFE_INDOOR 0x12
+#define AS3935_AFE_INDOOR 0x10 
 #define AS3935_AFE_OUTDOOR 0x0E
 
 class AS3935 {
@@ -120,6 +120,9 @@
         
     //load gain preset to operate outdoors
     void setOutdoors();
+    
+    //get gain preset 
+    int getGain();
         
     //return noise floor setting - refer to datasheet for meaning and range
     int getNoiseFloor();