Hauptprogramm
Dependencies: ILI9340_Driver_Lib PM2_Libary Lib_DFPlayerMini
Diff: Feuchtigkeitssensor/Chirp.cpp
- Revision:
- 27:bbcd157dcd63
- Child:
- 29:91df2c5fb297
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Feuchtigkeitssensor/Chirp.cpp Sun May 02 19:50:46 2021 +0000 @@ -0,0 +1,61 @@ +#include "mbed.h" +#include "Chirp.h" + +Chirp chirp(D14, D15); + +//Chirp Docs are at https://github.com/Miceuz/i2c-moisture-sensor and https://www.tindie.com/products/miceuz/i2c-soil-moisture-sensor/ +void getResults(); +Chirp::Chirp(PinName sda, PinName scl, char slave_adr) + :i2c_p(new I2C(sda, scl)), i2c(*i2c_p), address(slave_adr) +{ + i2c.frequency(10000); + +} + +float Chirp::getCapacitance(){ + i2c.frequency(10000); + short capacitance = 0; + char i2cData[2]= {0}; + + char dataReg = 1; //Capacitance is stored in 2 bytes at address 0 + i2c.write(address, &dataReg, 1); + int success = i2c.read(address, i2cData, 2); + + + if(success != 0) + return -1000000; + else + { + //I2C bytes are in different byte order, write into short bytes 0 and 1 in reverse order! + *((char*)&capacitance) = i2cData[1]; + *(((char*)(&capacitance)) + 1) = i2cData[0]; + return capacitance; + }} + +float Chirp::getTemperature(){ + i2c.frequency(10000); + short temperature = 0; + char i2cData[2]= {0}; + + + char dataReg = 4; //Temperature is stored in 2 bytes at address 5 + i2c.write(address, &dataReg, 1); + int success = i2c.read(address, i2cData, 2); + printf("%i\n\n", success); + + + if(success != 0) + return -1000000; + else + { + *((char*)&temperature) = i2cData[1]; + *(((char*)(&temperature)) + 1) = i2cData[0]; + return (float) temperature / 10.0; + } } + + +void getResults(){ + printf("test\n\n"); + printf("Capacitance = %.2f\n", chirp.getCapacitance()); + printf("Temperatur = %.2f\n", chirp.getTemperature()); +} \ No newline at end of file