AMS, Franklin Lightning Sensor "AS3935" Library

Franklin Lightning Sensor

雷(落雷)センサー AS3935 用のライブラリです。

Sample

I2C接続

for LPC1114

main.cpp

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

Serial pc(USBTX, USBRX);
DigitalOut led1(LED1);

AS3935 as(dp5, dp27, dp26); // sda, scl, irq
//I2C i2c(dp5, dp27);
//AS3935 as(i2c, dp26); // i2c, irq

void lightning () {
    int energy, distance;
    as.read(energy, distance);
    pc.printf("Lightning energy=%d distance=%d\r\n", energy, distance);
}

int main() {
    pc.baud(115200);
    pc.printf("*** AS3935\r\n");
    as.init();
    as.attach(&lightning);
    for (;;) {
        led1 = ! led1;
        wait(0.2);
    }
}
Committer:
okini3939
Date:
Mon Apr 13 00:52:04 2015 +0000
Revision:
0:5a6d7a605d26
1st test build;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:5a6d7a605d26 1 /*
okini3939 0:5a6d7a605d26 2 * AMS, Franklin Lightning Sensor "AS3935" Library
okini3939 0:5a6d7a605d26 3 * Copyright (c) 2015 Hiroshi Suga
okini3939 0:5a6d7a605d26 4 * Released under the MIT License: http://mbed.org/license/mit
okini3939 0:5a6d7a605d26 5 */
okini3939 0:5a6d7a605d26 6 // http://ams.com/eng/Products/Lightning-Sensor/Franklin-Lightning-Sensor/AS3935
okini3939 0:5a6d7a605d26 7
okini3939 0:5a6d7a605d26 8 #ifndef _AS3935_h_
okini3939 0:5a6d7a605d26 9 #define _AS3935_h_
okini3939 0:5a6d7a605d26 10
okini3939 0:5a6d7a605d26 11 #include "mbed.h"
okini3939 0:5a6d7a605d26 12
okini3939 0:5a6d7a605d26 13 class AS3935 {
okini3939 0:5a6d7a605d26 14 public:
okini3939 0:5a6d7a605d26 15 /**
okini3939 0:5a6d7a605d26 16 * @param i2c I2C class
okini3939 0:5a6d7a605d26 17 * @param irq IRQ pin
okini3939 0:5a6d7a605d26 18 */
okini3939 0:5a6d7a605d26 19 AS3935 (I2C &i2c, PinName irq);
okini3939 0:5a6d7a605d26 20 /**
okini3939 0:5a6d7a605d26 21 * @param sda I2C SDA pin
okini3939 0:5a6d7a605d26 22 * @param scl I2C SCL pin
okini3939 0:5a6d7a605d26 23 * @param irq IRQ pin
okini3939 0:5a6d7a605d26 24 */
okini3939 0:5a6d7a605d26 25 AS3935 (PinName sda, PinName scl, PinName irq);
okini3939 0:5a6d7a605d26 26
okini3939 0:5a6d7a605d26 27 /** Initialize AS3935
okini3939 0:5a6d7a605d26 28 */
okini3939 0:5a6d7a605d26 29 void init ();
okini3939 0:5a6d7a605d26 30
okini3939 0:5a6d7a605d26 31 /** Read lightning signal validation
okini3939 0:5a6d7a605d26 32 * @param energy (return) Energy of the Single Lightning
okini3939 0:5a6d7a605d26 33 * @param distance (return) Distance estimation
okini3939 0:5a6d7a605d26 34 */
okini3939 0:5a6d7a605d26 35 void read (int &energy, int &distance);
okini3939 0:5a6d7a605d26 36
okini3939 0:5a6d7a605d26 37 /** Attach a function, lightning interrupt
okini3939 0:5a6d7a605d26 38 * @param fptr pointer to a void function, or 0 to set as none
okini3939 0:5a6d7a605d26 39 */
okini3939 0:5a6d7a605d26 40 void attach(void (*fptr)(void)) {
okini3939 0:5a6d7a605d26 41 _func.attach(fptr);
okini3939 0:5a6d7a605d26 42 }
okini3939 0:5a6d7a605d26 43 /** Attach a member function, lightning interrupt
okini3939 0:5a6d7a605d26 44 * @param tptr pointer to the object to call the member function on
okini3939 0:5a6d7a605d26 45 * @param mptr pointer to the member function to be called
okini3939 0:5a6d7a605d26 46 */
okini3939 0:5a6d7a605d26 47 template<typename T>
okini3939 0:5a6d7a605d26 48 void attach(T *tptr, void (T::*mptr)(void)) {
okini3939 0:5a6d7a605d26 49 _func.attach(tptr, mptr);
okini3939 0:5a6d7a605d26 50 }
okini3939 0:5a6d7a605d26 51
okini3939 0:5a6d7a605d26 52 private:
okini3939 0:5a6d7a605d26 53 I2C _i2c;
okini3939 0:5a6d7a605d26 54 InterruptIn _irq;
okini3939 0:5a6d7a605d26 55 int _freq;
okini3939 0:5a6d7a605d26 56 int _mode;
okini3939 0:5a6d7a605d26 57 int _type;
okini3939 0:5a6d7a605d26 58
okini3939 0:5a6d7a605d26 59 FunctionPointer _func;
okini3939 0:5a6d7a605d26 60
okini3939 0:5a6d7a605d26 61 void calib_lco ();
okini3939 0:5a6d7a605d26 62 void isr_freq ();
okini3939 0:5a6d7a605d26 63 void isr_lightning ();
okini3939 0:5a6d7a605d26 64 };
okini3939 0:5a6d7a605d26 65
okini3939 0:5a6d7a605d26 66 #endif