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); } }
Diff: AS3935.h
- Revision:
- 0:5a6d7a605d26
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/AS3935.h Mon Apr 13 00:52:04 2015 +0000 @@ -0,0 +1,66 @@ +/* + * AMS, Franklin Lightning Sensor "AS3935" Library + * Copyright (c) 2015 Hiroshi Suga + * Released under the MIT License: http://mbed.org/license/mit + */ +// http://ams.com/eng/Products/Lightning-Sensor/Franklin-Lightning-Sensor/AS3935 + +#ifndef _AS3935_h_ +#define _AS3935_h_ + +#include "mbed.h" + +class AS3935 { +public: + /** + * @param i2c I2C class + * @param irq IRQ pin + */ + AS3935 (I2C &i2c, PinName irq); + /** + * @param sda I2C SDA pin + * @param scl I2C SCL pin + * @param irq IRQ pin + */ + AS3935 (PinName sda, PinName scl, PinName irq); + + /** Initialize AS3935 + */ + void init (); + + /** Read lightning signal validation + * @param energy (return) Energy of the Single Lightning + * @param distance (return) Distance estimation + */ + void read (int &energy, int &distance); + + /** Attach a function, lightning interrupt + * @param fptr pointer to a void function, or 0 to set as none + */ + void attach(void (*fptr)(void)) { + _func.attach(fptr); + } + /** Attach a member function, lightning interrupt + * @param tptr pointer to the object to call the member function on + * @param mptr pointer to the member function to be called + */ + template<typename T> + void attach(T *tptr, void (T::*mptr)(void)) { + _func.attach(tptr, mptr); + } + +private: + I2C _i2c; + InterruptIn _irq; + int _freq; + int _mode; + int _type; + + FunctionPointer _func; + + void calib_lco (); + void isr_freq (); + void isr_lightning (); +}; + +#endif