LightningDetector:48: error: 'AS3935' does not name a typeLightningDetector.pde: In function 'void setup()':LightningDetector:64: error: 'AS3935' was not declared in this scopeLightningDetector.pde: In function 'void loop()':LightningDetector:102: error: 'AS3935' was not declared in this scopeLightningDetector.pde: In function 'void printAS3935Registers()':LightningDetector:130: error: 'AS3935' was not declared in this scope

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA*/

#include <SPI.h>#include <AS3935.h>

void printAS3935Registers();

// Function prototype that provides SPI transfer and is passed to// AS3935 to be used from within library, it is defined later in main sketch.// That is up to user to deal with specific implementation of SPI// Note that AS3935 library requires this function to have exactly this signature// and it can not be member function of any C++ class, which happens// to be almost any Arduino library// Please make sure your implementation of choice does not deal with CS pin,// library takes care about it on it's ownbyte SPItransfer(byte sendByte);

// Iterrupt handler for AS3935 irqs// and flag variable that indicates interrupt has been triggered// Variables that get changed in interrupt routines need to be declared volatile// otherwise compiler can optimize them away, assuming they never get changedvoid AS3935Irq();volatile int AS3935IrqTriggered;

// First parameter - SPI transfer function, second - Arduino pin used for CS// and finally third argument - Arduino pin used for IRQ// It is good idea to chose pin that has interrupts attached, that way one can use// attachInterrupt in sketch to detect interrupt// Library internally polls this pin when doing calibration, so being an interrupt pin// is not a requirementAS3935 AS3935(SPItransfer,SS,2);

void setup(){ Serial.begin(9600); // first begin, then set parameters SPI.begin(); // NB! chip uses SPI MODE1 SPI.setDataMode(SPI_MODE1); // NB! max SPI clock speed that chip supports is 2MHz, // but never use 500kHz, because that will cause interference // to lightning detection circuit SPI.setClockDivider(SPI_CLOCK_DIV16); // and chip is MSB first SPI.setBitOrder(MSBFIRST); // reset all internal register values to defaults AS3935.reset(); // and run calibration // if lightning detector can not tune tank circuit to required tolerance, // calibration function will return false if(!AS3935.calibrate()) Serial.println("Tuning out of range, check your wiring, your sensor and make sure physics laws have not changed!");

// since this is demo code, we just go on minding our own business and ignore the fact that someone divided by zero

// first let's turn on disturber indication and print some register values from AS3935 // tell AS3935 we are indoors, for outdoors use setOutdoors() function AS3935.setIndoors(); // turn on indication of distrubers, once you have AS3935 all tuned, you can turn those off with disableDisturbers() AS3935.enableDisturbers(); printAS3935Registers(); AS3935IrqTriggered = 0; // Using interrupts means you do not have to check for pin being set continiously, chip does that for you and // notifies your code // demo is written and tested on ChipKit MAX32, irq pin is connected to max32 pin 2, that corresponds to interrupt 1 // look up what pins can be used as interrupts on your specific board and how pins map to int numbers

Your new library is the github folder "AS3935" copy that folder with all the files and examples folder.in the arduino install folder "xxx\arduino-1.0.x\libraries" make sure its "libraries" NOT "lib".

FYI:After install I used the example sketch and it verified fine on win7 64-bit, Arduino 1.0.2

That's not the correct place for third-party libraries. They should go, as PaulS said, in the libraries subdirectory of your sketchbook directory. If you don't know the location of the sketchbook directory, look in preferences.

That's not the correct place for third-party libraries. They should go, as PaulS said, in the libraries subdirectory of your sketchbook directory.

Just out of curiosity, what's the reasoning behind this advice?

Given that 3rd party libraries have, in the past, been Arduino-version-specific, doesn't it make more sense to keep the libraries within the relevant Arduino installation? By my understanding they behave the same in either case and it's just a question of whether you want to be able to upgrade the IDE and keep using the same copy of all the 3rd party libraries, or [need to] install a separate copy for each IDE version.

I only provide help via the forum - please do not contact me for private consultancy.

That's not the correct place for third-party libraries. They should go, as PaulS said, in the libraries subdirectory of your sketchbook directory.

Just out of curiosity, what's the reasoning behind this advice?

Given that 3rd party libraries have, in the past, been Arduino-version-specific, doesn't it make more sense to keep the libraries within the relevant Arduino installation? By my understanding they behave the same in either case and it's just a question of whether you want to be able to upgrade the IDE and keep using the same copy of all the 3rd party libraries, or [need to] install a separate copy for each IDE version.

Well I was thinking there should be an add-on library, but didnt know where it was.