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); } }
AS3935.h@0:5a6d7a605d26, 2015-04-13 (annotated)
- Committer:
- okini3939
- Date:
- Mon Apr 13 00:52:04 2015 +0000
- Revision:
- 0:5a6d7a605d26
1st test build;
Who changed what in which revision?
User | Revision | Line number | New 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 |