Richard Cullen
/
as3935
This is a working demo of the AS3935 Lightning detector using the NUCLEO-L013K6.
main.cpp@0:75defe5eed80, 2017-06-20 (annotated)
- Committer:
- madelectroneng
- Date:
- Tue Jun 20 08:36:25 2017 +0000
- Revision:
- 0:75defe5eed80
Working demo on nucleo-l031k6
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
madelectroneng | 0:75defe5eed80 | 1 | #include "mbed.h" |
madelectroneng | 0:75defe5eed80 | 2 | #include "AS3935.h" |
madelectroneng | 0:75defe5eed80 | 3 | |
madelectroneng | 0:75defe5eed80 | 4 | AS3935 ld(D11, D12, D13, D10, "ld", 2000000); // MOSI, MISO, SCK, CS, SPI bus freq (hz) |
madelectroneng | 0:75defe5eed80 | 5 | InterruptIn IntLightning(D2); //IRQ AS3935 |
madelectroneng | 0:75defe5eed80 | 6 | Serial pc(USBTX, USBRX); |
madelectroneng | 0:75defe5eed80 | 7 | |
madelectroneng | 0:75defe5eed80 | 8 | void DetectLightning() |
madelectroneng | 0:75defe5eed80 | 9 | { |
madelectroneng | 0:75defe5eed80 | 10 | char OriginInt; |
madelectroneng | 0:75defe5eed80 | 11 | wait_ms(2); |
madelectroneng | 0:75defe5eed80 | 12 | OriginInt = ld.interruptSource(); |
madelectroneng | 0:75defe5eed80 | 13 | if (OriginInt == 1) { // |
madelectroneng | 0:75defe5eed80 | 14 | pc.printf(" Noise level too high\r\n"); |
madelectroneng | 0:75defe5eed80 | 15 | } |
madelectroneng | 0:75defe5eed80 | 16 | if (OriginInt == 4) { // |
madelectroneng | 0:75defe5eed80 | 17 | pc.printf(" Disturber\r\n"); |
madelectroneng | 0:75defe5eed80 | 18 | } |
madelectroneng | 0:75defe5eed80 | 19 | if (OriginInt == 8) { // detection |
madelectroneng | 0:75defe5eed80 | 20 | // pc.printf(" Lightning detection\r\n"); |
madelectroneng | 0:75defe5eed80 | 21 | pc.printf("Lightning detection, distance=%dkm\r\n", ld.lightningDistanceKm()); |
madelectroneng | 0:75defe5eed80 | 22 | pc.printf("Energy %d\r\n", ld.getEnergy()); |
madelectroneng | 0:75defe5eed80 | 23 | ld.clearStats(); |
madelectroneng | 0:75defe5eed80 | 24 | |
madelectroneng | 0:75defe5eed80 | 25 | } |
madelectroneng | 0:75defe5eed80 | 26 | } |
madelectroneng | 0:75defe5eed80 | 27 | |
madelectroneng | 0:75defe5eed80 | 28 | |
madelectroneng | 0:75defe5eed80 | 29 | int main() { |
madelectroneng | 0:75defe5eed80 | 30 | pc.baud(9600); |
madelectroneng | 0:75defe5eed80 | 31 | pc.printf("\r\nstart lightning detector\r\n"); |
madelectroneng | 0:75defe5eed80 | 32 | |
madelectroneng | 0:75defe5eed80 | 33 | //initialisations |
madelectroneng | 0:75defe5eed80 | 34 | // ld.reset(); |
madelectroneng | 0:75defe5eed80 | 35 | ld.setTuneCap(1); // 500kHz |
madelectroneng | 0:75defe5eed80 | 36 | // ld.powerUp(); |
madelectroneng | 0:75defe5eed80 | 37 | ld.setIndoors(); |
madelectroneng | 0:75defe5eed80 | 38 | ld.setMinimumLightnings(1); |
madelectroneng | 0:75defe5eed80 | 39 | //ld.setSpikeRejection(2); |
madelectroneng | 0:75defe5eed80 | 40 | ld.setNoiseFloor(2); |
madelectroneng | 0:75defe5eed80 | 41 | ld.disableDisturbers(); |
madelectroneng | 0:75defe5eed80 | 42 | // ld.enableDisturbers(); |
madelectroneng | 0:75defe5eed80 | 43 | ld.setWatchdogThreshold(2); |
madelectroneng | 0:75defe5eed80 | 44 | wait_ms(10); |
madelectroneng | 0:75defe5eed80 | 45 | IntLightning.rise(&DetectLightning); |
madelectroneng | 0:75defe5eed80 | 46 | int MinBlysk = ld.getMinimumLightnings(); |
madelectroneng | 0:75defe5eed80 | 47 | int Noise = ld.getNoiseFloor(); |
madelectroneng | 0:75defe5eed80 | 48 | int TuneCap = ld.getTuneCap(); |
madelectroneng | 0:75defe5eed80 | 49 | int SpikeRej = ld.getSpikeRejection(); |
madelectroneng | 0:75defe5eed80 | 50 | int WatchDog = ld.getWatchdogThreshold(); |
madelectroneng | 0:75defe5eed80 | 51 | |
madelectroneng | 0:75defe5eed80 | 52 | pc.printf(" Min wylad: %i", MinBlysk); |
madelectroneng | 0:75defe5eed80 | 53 | pc.printf("\r\n"); |
madelectroneng | 0:75defe5eed80 | 54 | pc.printf(" Noise: %i", Noise); |
madelectroneng | 0:75defe5eed80 | 55 | pc.printf("\r\n"); |
madelectroneng | 0:75defe5eed80 | 56 | pc.printf(" Tune CAP: %i", TuneCap); |
madelectroneng | 0:75defe5eed80 | 57 | pc.printf("\r\n"); |
madelectroneng | 0:75defe5eed80 | 58 | pc.printf(" Spike rej: %i", SpikeRej); |
madelectroneng | 0:75defe5eed80 | 59 | pc.printf("\r\n"); |
madelectroneng | 0:75defe5eed80 | 60 | pc.printf(" Watchdog: %i", WatchDog); |
madelectroneng | 0:75defe5eed80 | 61 | pc.printf("\r\n"); |
madelectroneng | 0:75defe5eed80 | 62 | while(1) { |
madelectroneng | 0:75defe5eed80 | 63 | // led1 = ! led1; |
madelectroneng | 0:75defe5eed80 | 64 | wait(0.2); |
madelectroneng | 0:75defe5eed80 | 65 | } |
madelectroneng | 0:75defe5eed80 | 66 | |
madelectroneng | 0:75defe5eed80 | 67 | |
madelectroneng | 0:75defe5eed80 | 68 | } |