diff --git a/DFRobot_AS3935_I2C.cpp b/DFRobot_AS3935_I2C.cpp index e5c924c..28345fa 100644 --- a/DFRobot_AS3935_I2C.cpp +++ b/DFRobot_AS3935_I2C.cpp @@ -10,7 +10,7 @@ DFRobot_AS3935_I2C::DFRobot_AS3935_I2C(uint8_t irqx, uint8_t devAddx) } -void DFRobot_AS3935_I2C::AS3935SetI2CAddress(uint8_t devAddx) +void DFRobot_AS3935_I2C::setI2CAddress(uint8_t devAddx) { if (devAddx == AS3935_ADD1) { @@ -52,7 +52,7 @@ void DFRobot_AS3935_I2C::singRegWrite(uint8_t regAdd, uint8_t dataMask, uint8_t Serial.println(singRegRead(regAdd),HEX); } -void DFRobot_AS3935_I2C::AS3935DefInit() +void DFRobot_AS3935_I2C::defInit() { AS3935Reset(); // reset registers to default } @@ -71,7 +71,7 @@ void DFRobot_AS3935_I2C::calRCO() delay(2); // wait 2ms to complete } -void DFRobot_AS3935_I2C::AS3935PowerUp(void) +void DFRobot_AS3935_I2C::powerUp(void) { // power-up sequence based on datasheet, pg 23/27 // register 0x00, PWD bit: 0 (clears PWD) @@ -82,27 +82,27 @@ void DFRobot_AS3935_I2C::AS3935PowerUp(void) singRegWrite(0x08, 0x20, 0x00); // set DISP_SRCO to 0 } -void DFRobot_AS3935_I2C::AS3935PowerDown(void) +void DFRobot_AS3935_I2C::powerDown(void) { // register 0x00, PWD bit: 0 (sets PWD) singRegWrite(0x00, 0x01, 0x01); Serial.println("AS3935 powered down"); } -void DFRobot_AS3935_I2C::AS3935DisturberEn(void) +void DFRobot_AS3935_I2C::disturberEn(void) { // register 0x03, PWD bit: 5 (sets MASK_DIST) singRegWrite(0x03, 0x20, 0x00); Serial.println("disturber detection enabled"); } -void DFRobot_AS3935_I2C::AS3935DisturberDis(void) +void DFRobot_AS3935_I2C::disturberDis(void) { // register 0x03, PWD bit: 5 (sets MASK_DIST) singRegWrite(0x03, 0x20, 0x20); } -void DFRobot_AS3935_I2C::AS3935SetIRQOutputSource(uint8_t irqSelect) +void DFRobot_AS3935_I2C::setIRQOutputSource(uint8_t irqSelect) { // set interrupt source - what to display on IRQ pin // reg 0x08, bits 5 (TRCO), 6 (SRCO), 7 (LCO) @@ -128,7 +128,7 @@ void DFRobot_AS3935_I2C::AS3935SetIRQOutputSource(uint8_t irqSelect) } -void DFRobot_AS3935_I2C::AS3935SetTuningCaps(uint8_t capVal) +void DFRobot_AS3935_I2C::setTuningCaps(uint8_t capVal) { // Assume only numbers divisible by 8 (because that's all the chip supports) if(120 < capVal) // cap_value out of range, assume highest capacitance @@ -143,7 +143,7 @@ void DFRobot_AS3935_I2C::AS3935SetTuningCaps(uint8_t capVal) Serial.println((singRegRead(0x08) & 0x0F)); } -uint8_t DFRobot_AS3935_I2C::AS3935GetInterruptSrc(void) +uint8_t DFRobot_AS3935_I2C::getInterruptSrc(void) { // definition of interrupt data on table 18 of datasheet // for this function: @@ -166,13 +166,13 @@ uint8_t DFRobot_AS3935_I2C::AS3935GetInterruptSrc(void) } -uint8_t DFRobot_AS3935_I2C::AS3935GetLightningDistKm(void) +uint8_t DFRobot_AS3935_I2C::getLightningDistKm(void) { uint8_t strikeDist = (singRegRead(0x07) & 0x3F); // read register, get rid of non-distance data return strikeDist; } -uint32_t DFRobot_AS3935_I2C::AS3935GetStrikeEnergyRaw(void) +uint32_t DFRobot_AS3935_I2C::getStrikeEnergyRaw(void) { uint32_t nrgyRaw = ((singRegRead(0x06) & 0x1F) << 8); // MMSB, shift 8 bits left, make room for MSB nrgyRaw |= singRegRead(0x05); // read MSB @@ -182,7 +182,7 @@ uint32_t DFRobot_AS3935_I2C::AS3935GetStrikeEnergyRaw(void) return nrgyRaw/16777; } -uint8_t DFRobot_AS3935_I2C::AS3935SetMinStrikes(uint8_t minStrk) +uint8_t DFRobot_AS3935_I2C::setMinStrikes(uint8_t minStrk) { // This function sets min strikes to the closest available number, rounding to the floor, // where necessary, then returns the physical value that was set. Options are 1, 5, 9 or 16 strikes. @@ -209,7 +209,7 @@ uint8_t DFRobot_AS3935_I2C::AS3935SetMinStrikes(uint8_t minStrk) } } -void DFRobot_AS3935_I2C::AS3935SetIndoors(void) +void DFRobot_AS3935_I2C::setIndoors(void) { // AFE settings addres 0x00, bits 5:1 (10010, based on datasheet, pg 19, table 15) // this is the default setting at power-up (AS3935 datasheet, table 9) @@ -217,14 +217,14 @@ void DFRobot_AS3935_I2C::AS3935SetIndoors(void) Serial.println("set up for indoor operation"); } -void DFRobot_AS3935_I2C::AS3935SetOutdoors(void) +void DFRobot_AS3935_I2C::setOutdoors(void) { // AFE settings addres 0x00, bits 5:1 (01110, based on datasheet, pg 19, table 15) singRegWrite(0x00, 0x3E, 0x1C); Serial.println("set up for outdoor operation"); } -void DFRobot_AS3935_I2C::AS3935ClearStatistics(void) +void DFRobot_AS3935_I2C::clearStatistics(void) { // clear is accomplished by toggling CL_STAT bit 'high-low-high' (then set low to move on) singRegWrite(0x02, 0x40, 0x40); // high @@ -232,7 +232,7 @@ void DFRobot_AS3935_I2C::AS3935ClearStatistics(void) singRegWrite(0x02, 0x40, 0x40); // high } -uint8_t DFRobot_AS3935_I2C::AS3935GetNoiseFloorLvl(void) +uint8_t DFRobot_AS3935_I2C::getNoiseFloorLvl(void) { // NF settings addres 0x01, bits 6:4 // default setting of 010 at startup (datasheet, table 9) @@ -240,7 +240,7 @@ uint8_t DFRobot_AS3935_I2C::AS3935GetNoiseFloorLvl(void) return ((regRaw & 0x70) >> 4); // should return value from 0-7, see table 16 for info } -void DFRobot_AS3935_I2C::AS3935SetNoiseFloorLvl(uint8_t nfSel) +void DFRobot_AS3935_I2C::setNoiseFloorLvl(uint8_t nfSel) { // NF settings addres 0x01, bits 6:4 // default setting of 010 at startup (datasheet, table 9) @@ -254,7 +254,7 @@ void DFRobot_AS3935_I2C::AS3935SetNoiseFloorLvl(uint8_t nfSel) } } -uint8_t DFRobot_AS3935_I2C::AS3935GetWatchdogThreshold(void) +uint8_t DFRobot_AS3935_I2C::getWatchdogThreshold(void) { // This function is used to read WDTH. It is used to increase robustness to disturbers, // though will make detection less efficient (see page 19, Fig 20 of datasheet) @@ -265,7 +265,7 @@ uint8_t DFRobot_AS3935_I2C::AS3935GetWatchdogThreshold(void) return (regRaw & 0x0F); } -void DFRobot_AS3935_I2C::AS3935SetWatchdogThreshold(uint8_t wdth) +void DFRobot_AS3935_I2C::setWatchdogThreshold(uint8_t wdth) { // This function is used to modify WDTH. It is used to increase robustness to disturbers, // though will make detection less efficient (see page 19, Fig 20 of datasheet) @@ -275,7 +275,7 @@ void DFRobot_AS3935_I2C::AS3935SetWatchdogThreshold(uint8_t wdth) singRegWrite(0x01, 0x0F, (wdth & 0x0F)); } -uint8_t DFRobot_AS3935_I2C::AS3935GetSpikeRejection(void) +uint8_t DFRobot_AS3935_I2C::getSpikeRejection(void) { // This function is used to read SREJ (spike rejection). Similar to the Watchdog threshold, // it is used to make the system more robust to disturbers, though will make general detection @@ -287,7 +287,7 @@ uint8_t DFRobot_AS3935_I2C::AS3935GetSpikeRejection(void) return (regRaw & 0x0F); } -void DFRobot_AS3935_I2C::AS3935SetSpikeRejection(uint8_t srej) +void DFRobot_AS3935_I2C::setSpikeRejection(uint8_t srej) { // This function is used to modify SREJ (spike rejection). Similar to the Watchdog threshold, // it is used to make the system more robust to disturbers, though will make general detection @@ -298,7 +298,7 @@ void DFRobot_AS3935_I2C::AS3935SetSpikeRejection(uint8_t srej) singRegWrite(0x02, 0x0F, (srej & 0x0F)); } -void DFRobot_AS3935_I2C::AS3935SetLcoFdiv(uint8_t fdiv) +void DFRobot_AS3935_I2C::setLcoFdiv(uint8_t fdiv) { // This function sets LCO_FDIV register. This is useful in the tuning of the antenna // LCO_FDIV register: add 0x03, bits 7:6 @@ -308,7 +308,7 @@ void DFRobot_AS3935_I2C::AS3935SetLcoFdiv(uint8_t fdiv) singRegWrite(0x03, 0xC0, ((fdiv & 0x03) << 6)); } -void DFRobot_AS3935_I2C::AS3935PrintAllRegs(void) +void DFRobot_AS3935_I2C::printAllRegs(void) { Serial.print("Reg 0x00: "); Serial.println(singRegRead(0x00)); @@ -328,40 +328,40 @@ void DFRobot_AS3935_I2C::AS3935PrintAllRegs(void) Serial.println(singRegRead(0x07)); Serial.print("Reg 0x08: "); Serial.println(singRegRead(0x08)); - uint32_t nrgyVal = AS3935GetStrikeEnergyRaw(); + uint32_t nrgyVal = getStrikeEnergyRaw(); Serial.println(nrgyVal); } -void DFRobot_AS3935_I2C::AS3935ManualCal(uint8_t capacitance, uint8_t location, uint8_t disturber) +void DFRobot_AS3935_I2C::manualCal(uint8_t capacitance, uint8_t location, uint8_t disturber) { // start by powering up - AS3935PowerUp(); + powerUp(); // indoors/outdoors next... if(1 == location) // set outdoors if 1 { - AS3935SetOutdoors(); + setOutdoors(); } else // set indoors if anything but 1 { - AS3935SetIndoors(); + setIndoors(); } // disturber cal if(0 == disturber) // disabled if 0 { - AS3935DisturberDis(); + disturberDis(); } else // enabled if anything but 0 { - AS3935DisturberEn(); + disturberEn(); } - AS3935SetIRQOutputSource(0); + setIRQOutputSource(0); delay(500); // capacitance first... directly write value here - AS3935SetTuningCaps(capacitance); + setTuningCaps(capacitance); Serial.println("AS3935 manual cal complete"); } diff --git a/DFRobot_AS3935_I2C.h b/DFRobot_AS3935_I2C.h index cc7d667..489773e 100644 --- a/DFRobot_AS3935_I2C.h +++ b/DFRobot_AS3935_I2C.h @@ -17,36 +17,36 @@ class DFRobot_AS3935_I2C public: DFRobot_AS3935_I2C(uint8_t irqx, uint8_t devAddx); /*! Set i2c address */ - void AS3935SetI2CAddress(uint8_t devAddx); + void setI2CAddress(uint8_t devAddx); /*! Manual calibration */ - void AS3935ManualCal(uint8_t capacitance, uint8_t location, uint8_t disturber); + void manualCal(uint8_t capacitance, uint8_t location, uint8_t disturber); /*! reset registers to default */ - void AS3935DefInit(void); - void AS3935PowerUp(void); - void AS3935PowerDown(void); - void AS3935DisturberEn(void); - void AS3935DisturberDis(void); - void AS3935SetIRQOutputSource(uint8_t irqSelect); - void AS3935SetTuningCaps(uint8_t capVal); + void defInit(void); + void powerUp(void); + void powerDown(void); + void disturberEn(void); + void disturberDis(void); + void setIRQOutputSource(uint8_t irqSelect); + void setTuningCaps(uint8_t capVal); /*! 0 = unknown src, 1 = lightning detected, 2 = disturber, 3 = Noise level too high */ - uint8_t AS3935GetInterruptSrc(void); + uint8_t getInterruptSrc(void); /*! Get rid of non-distance data */ - uint8_t AS3935GetLightningDistKm(void); + uint8_t getLightningDistKm(void); /*! Get lightning energy intensity */ - uint32_t AS3935GetStrikeEnergyRaw(void); - uint8_t AS3935SetMinStrikes(uint8_t minStrk); - void AS3935ClearStatistics(void); - void AS3935SetIndoors(void); - void AS3935SetOutdoors(void); - uint8_t AS3935GetNoiseFloorLvl(void); - void AS3935SetNoiseFloorLvl(uint8_t nfSel); - uint8_t AS3935GetWatchdogThreshold(void); - void AS3935SetWatchdogThreshold(uint8_t wdth); - uint8_t AS3935GetSpikeRejection(void); - void AS3935SetSpikeRejection(uint8_t srej); - void AS3935SetLcoFdiv(uint8_t fdiv); + uint32_t getStrikeEnergyRaw(void); + uint8_t setMinStrikes(uint8_t minStrk); + void clearStatistics(void); + void setIndoors(void); + void setOutdoors(void); + uint8_t getNoiseFloorLvl(void); + void setNoiseFloorLvl(uint8_t nfSel); + uint8_t getWatchdogThreshold(void); + void setWatchdogThreshold(uint8_t wdth); + uint8_t getSpikeRejection(void); + void setSpikeRejection(uint8_t srej); + void setLcoFdiv(uint8_t fdiv); /*! View register data */ - void AS3935PrintAllRegs(void); + void printAllRegs(void); private: uint8_t irq, devAdd; diff --git a/examples/DFRobot_AS3935_lightning_sensor/DFRobot_AS3935_lightning_sensor.ino b/examples/DFRobot_AS3935_lightning_sensor/DFRobot_AS3935_lightning_sensor.ino index d373b7e..a571777 100644 --- a/examples/DFRobot_AS3935_lightning_sensor/DFRobot_AS3935_lightning_sensor.ino +++ b/examples/DFRobot_AS3935_lightning_sensor/DFRobot_AS3935_lightning_sensor.ino @@ -12,8 +12,8 @@ Copyright [DFRobot](http://www.dfrobot.com), 2018 Copyright GNU Lesser General Public License - version V0.3 - date 2018-11-13 + version V0.4 + date 2018-11-15 */ #include "Lib_I2C.h" @@ -56,17 +56,17 @@ void setup() delay(2); // Set registers to default - lightning0.AS3935DefInit(); + lightning0.defInit(); // Configure sensor - lightning0.AS3935ManualCal(AS3935_CAPACITANCE, AS3935_MODE, AS3935_DIST); + lightning0.manualCal(AS3935_CAPACITANCE, AS3935_MODE, AS3935_DIST); // Enable interrupt (connect IRQ pin IRQ_PIN: 2, default) // Connect the IRQ and GND pin to the oscilloscope. // uncomment the following sentences to fine tune the antenna for better performance. // This will dispaly the antenna's resonance frequency/16 on IRQ pin (The resonance frequency will be divided by 16 on this pin) // Tuning AS3935_CAPACITANCE to make the frequency within 500/16 kHz ± 3.5% -// lightning0.AS3935_SetLCO_FDIV(0); -// lightning0.AS3935SetIRQOutputSource(3); +// lightning0.setLcoFdiv(0); +// lightning0.setIRQOutputSource(3); attachInterrupt(0, AS3935_ISR, RISING); @@ -82,18 +82,18 @@ void loop() AS3935IsrTrig = 0; // Get interrupt source - uint8_t intSrc = lightning0.AS3935GetInterruptSrc(); + uint8_t intSrc = lightning0.getInterruptSrc(); if (intSrc == 1) { // Get rid of non-distance data - uint8_t lightningDistKm = lightning0.AS3935GetLightningDistKm(); + uint8_t lightningDistKm = lightning0.getLightningDistKm(); Serial.println("Lightning occurs!"); Serial.print("Distance: "); Serial.print(lightningDistKm); Serial.println(" km"); // Get lightning energy intensity - uint32_t lightningEnergyVal = lightning0.AS3935GetStrikeEnergyRaw(); + uint32_t lightningEnergyVal = lightning0.getStrikeEnergyRaw(); Serial.print("Intensity: "); Serial.print(lightningEnergyVal); Serial.println(""); diff --git a/keywords.txt b/keywords.txt index 6a7dd09..287515d 100644 --- a/keywords.txt +++ b/keywords.txt @@ -24,30 +24,30 @@ read KEYWORD2 available KEYWORD2 receive KEYWORD2 -AS3935SetI2CAddress KEYWORD2 -AS3935ManualCal KEYWORD2 -AS3935DefInit KEYWORD2 -AS3935PowerUp KEYWORD2 -AS3935PowerDown KEYWORD2 -AS3935DisturberEn KEYWORD2 -AS3935DisturberDis KEYWORD2 -AS3935SetIRQOutputSource KEYWORD2 -AS3935SetTuningCaps KEYWORD2 -AS3935GetInterruptSrc KEYWORD2 -AS3935GetLightningDistKm KEYWORD2 -AS3935GetStrikeEnergyRaw KEYWORD2 -AS3935SetMinStrikes KEYWORD2 -AS3935ClearStatistics KEYWORD2 -AS3935SetIndoors KEYWORD2 -AS3935SetOutdoors KEYWORD2 -AS3935GetNoiseFloorLvl KEYWORD2 -AS3935SetNoiseFloorLvl KEYWORD2 -AS3935GetWatchdogThreshold KEYWORD2 -AS3935SetWatchdogThreshold KEYWORD2 -AS3935GetSpikeRejection KEYWORD2 -AS3935SetSpikeRejection KEYWORD2 -AS3935SetLcoFdiv KEYWORD2 -AS3935PrintAllRegs KEYWORD2 +setI2CAddress KEYWORD2 +manualCal KEYWORD2 +defInit KEYWORD2 +powerUp KEYWORD2 +powerDown KEYWORD2 +disturberEn KEYWORD2 +disturberDis KEYWORD2 +setIRQOutputSource KEYWORD2 +setTuningCaps KEYWORD2 +getInterruptSrc KEYWORD2 +getLightningDistKm KEYWORD2 +getStrikeEnergyRaw KEYWORD2 +setMinStrikes KEYWORD2 +clearStatistics KEYWORD2 +setIndoors KEYWORD2 +setOutdoors KEYWORD2 +getNoiseFloorLvl KEYWORD2 +setNoiseFloorLvl KEYWORD2 +getWatchdogThreshold KEYWORD2 +setWatchdogThreshold KEYWORD2 +getSpikeRejection KEYWORD2 +setSpikeRejection KEYWORD2 +setLcoFdiv KEYWORD2 +printAllRegs KEYWORD2 ####################################### # Constants (LITERAL1) diff --git a/readme.md b/readme.md index d0fb724..443222f 100644 --- a/readme.md +++ b/readme.md @@ -53,14 +53,14 @@ DFRobot_AS3935_I2C(uint8_t irqx, uint8_t devAddx); /* * @brief reset registers to default */ -void AS3935DefInit(void); +void defInit(void); /* * @brief set i2c address * * @param devAddx i2c address */ -void AS3935SetI2CAddress(uint8_t devAddx); +void setI2CAddress(uint8_t devAddx); /* * @brief manual calibration @@ -69,12 +69,12 @@ void AS3935SetI2CAddress(uint8_t devAddx); * location location * disturber disturber */ -void AS3935ManualCal(uint8_t capacitance, uint8_t location, uint8_t disturber); +void manualCal(uint8_t capacitance, uint8_t location, uint8_t disturber); /* * @brief view register data */ -void AS3935PrintAllRegs(void); +void printAllRegs(void); /* * @brief get interrupt source @@ -84,46 +84,55 @@ void AS3935PrintAllRegs(void); * 2 disturber detected * 3 Noise level too high */ -uint8_t AS3935GetInterruptSrc(void); +uint8_t getInterruptSrc(void); /* * @brief get lightning distance * * @return unit kilometer */ -uint8_t AS3935GetLightningDistKm(void); +uint8_t getLightningDistKm(void); /* * @brief get lightning energy intensity * * @return lightning energy intensity(0-1000) */ -uint32_t AS3935GetStrikeEnergyRaw(void); +uint32_t getStrikeEnergyRaw(void); /* * @brief Set to the outdoor model */ -void AS3935SetOutdoors(void); +void setOutdoors(void); /* * @brief Set to the indoor model */ -void AS3935SetIndoors(void); +void setIndoors(void); /* - * @brief Print all register values + * @brief Disturber detection enabled */ -void AS3935PrintAllRegs(void); +void disturberEn(void); /* - * @brief Disturber detection enabled + * @brief Disturber detection disenabled */ -void DFRobot_AS3935_I2C::AS3935DisturberEn(void); +void disturberDis(void); /* - * @brief Disturber detection disenabled + * @brief Sets LCO_FDIV register + * + * @param fdiv Set 0, 1, 2 or 3 for ratios of 16, 32, 64 and 128, respectively + */ +void setLcoFdiv(uint8_t fdiv); + +/* + * @brief Set interrupt source + * + * @param irqSelect 0 = NONE, 1 = TRCO, 2 = SRCO, 3 = LCO */ -void DFRobot_AS3935_I2C::AS3935DisturberDis(void); +void setIRQOutputSource(uint8_t irqSelect); ```