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);
     }
    
 
 }
Revision:
2:3b3b435ca8d9
Parent:
1:f2d9ed33c276
Child:
3:c536a9aa2a1c
--- a/AS3935.cpp	Thu Jun 11 15:47:29 2015 +0000
+++ b/AS3935.cpp	Thu Jun 11 15:53:51 2015 +0000
@@ -21,18 +21,6 @@
 #include "AS3935.h"
 #include "pinmap.h"
 
-#if 0
-AS3935::AS3935(PinName sda, PinName scl, int adress, int hz): i2c(sda, scl), _adress(adress), m_FREQ(hz) {        
-
-        wait_ms(11);
-        //Configure the SPI bus
-        m_Spi.format(8, 1);
-}
-    //~AS3935(){
-        
-    //}
-#endif
-#if 1
 AS3935::AS3935(PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name, PinName cd, int hz) :  m_Spi(mosi, miso, sclk), m_Cs(cs, 1), m_Cd(cd), m_FREQ(hz)
 {
  
@@ -42,15 +30,12 @@
     //Configure the SPI bus
     m_Spi.format(8, 1);
 }
-#endif        
- 
  
 char AS3935::_SPITransfer2(char high, char low)
 {
     m_Cs = 0;
     m_Spi.write(high);
     char regval = m_Spi.write(low);
-    // printf("raw transfer for reg %x is 0x%02x\r\n", high, regval);
     m_Cs = 1;
     return regval;  
 }
@@ -64,19 +49,12 @@
 char AS3935::_ffsz(char mask)
 {
     char i = 0;
-    //char temp;
-    
+       
     while(!(mask & 1)) {
-       //if (!(mask & 1)) {
-          mask >>= 1;
+           mask >>= 1;
           i++;
-       //}
     }
-    //if (mask){
-      //  for (i = 1; ~mask & 1 ; i++) {
-        //    mask >>= 1;
-          //  }
-       // }
+ 
     return i;
 }
 
@@ -86,13 +64,7 @@
     char regval;
     regval = _rawRegisterRead(reg);
     regval &= ~(mask);
-    //if (mask){
-        regval |= (data << (_ffsz(mask)));
-      //  }
-    //else {
-      //  regval |= data;
-       // }
-       
+    regval |= (data << (_ffsz(mask)));
     m_Cs = 0;
     m_Spi.write(reg);
     m_Spi.write(regval);
@@ -140,93 +112,93 @@
 }
 
 int AS3935::interruptSource()
-    {
+{
     return registerRead(AS3935_INT);
-    }
+}
 
 void AS3935::disableDisturbers()
-    {
+{
     registerWrite(AS3935_MASK_DIST,1);
-    }
+}
 
 void AS3935::enableDisturbers()
-    {
+{
     registerWrite(AS3935_MASK_DIST,0);
-    }
+} 
 
 int AS3935::getMinimumLightnings()
-    {
+{
     return registerRead(AS3935_MIN_NUM_LIGH);
-    }
+}
 
 int AS3935::setMinimumLightnings(int minlightning)
-    {
+{
     registerWrite(AS3935_MIN_NUM_LIGH,minlightning);
     return getMinimumLightnings();
-    }
+}
 
 int AS3935::lightningDistanceKm()
-    {
+{
     return registerRead(AS3935_DISTANCE);
-    }
+}
 
 void AS3935::setIndoors()
-    {
+{
     registerWrite(AS3935_AFE_GB,AS3935_AFE_INDOOR);
-    }
+}
 
 void AS3935::setOutdoors()
-    {
+{
     registerWrite(AS3935_AFE_GB,AS3935_AFE_OUTDOOR);
-    }
+}
 
 int AS3935::getNoiseFloor()
-    {
+{
     return registerRead(AS3935_NF_LEV);
-    }
+}
 
 int AS3935::setNoiseFloor(int noisefloor)
-    {
+{
     registerWrite(AS3935_NF_LEV,noisefloor);
     return getNoiseFloor();
-    }
+}
 
 int AS3935::getSpikeRejection()
-    {
+{
     return registerRead(AS3935_SREJ);
-    }
+}
 
 int AS3935::setSpikeRejection(int srej)
-    {
+{
     registerWrite(AS3935_SREJ, srej);
     return getSpikeRejection();
-    }
+}
 
 int AS3935::getWatchdogThreshold()
-    {
+{
     return registerRead(AS3935_WDTH);
-    }
+}
 
 int AS3935::setWatchdogThreshold(int wdth)
-    {
+{
     registerWrite(AS3935_WDTH,wdth);
     return getWatchdogThreshold();
-    }
+}
 
 int AS3935::getTuneCap()
-    {
+{
     return registerRead(AS3935_TUN_CAP);    
-    }
+}
         
 int AS3935::setTuneCap(int cap)
-    {
+{
     registerWrite(AS3935_TUN_CAP,cap);
-    return getTuneCap();    
-    }
+    return getTuneCap();   
+}
 
 void AS3935::clearStats()
-    {
+{
     registerWrite(AS3935_CL_STAT,1);
     registerWrite(AS3935_CL_STAT,0);
     registerWrite(AS3935_CL_STAT,1);
-    }
\ No newline at end of file
+}
\ No newline at end of file