Projet Long pour AGRAL
Dependencies: mbed OneWire DHT22 TSL2561 SSD1306
main.cpp
- Committer:
- Pipou
- Date:
- 2018-01-22
- Revision:
- 13:9a8b32c34787
- Parent:
- 11:7c872ac9da9a
File content as of revision 13:9a8b32c34787:
/******************************************************* Nom ......... : main.cpp Role ........ : Récupération de données, mises en forme, des capteurs de : Luminosité, Température de l'air, Humidité de l'air, Température du sol et Huminidité du sol. Affichage dans la console et sur l'écran OLED, ainsi que envoie sur le site ACTOBOARD via module Sigfox. Auteur ...... : GEORGE Pierre, LOUVION Quentin et FAISANT Pierre-Yves Version ..... : V0 du 17/10/2017 ********************************************************/ #include "mbed.h" #include "OneWire.h" #include "TSL2561.h" #include "DHT22.h" #include "ssd1306.h" #include "standard_font.h" #include "bold_font.h" //Déclaration variables TSL2561 Lum(PB_7,PB_6); // Luminosité (I2C:SDA,SCL) //DHT22 Tem_Hum_A(PA_11); // Température & Humidité air OneWire Tem_S(PA_8); // Température sol AnalogIn Hum_S(PA_0); // Huminidité sol Serial pc(PA_2,PA_3); //Serial : Tx,Rx SSD1306 oled(PB_0,PB_4,PB_5,PA_5,PA_7); // OLED : CS,Reset,DC,Clock,Data Serial sigfox(PA_9,PA_10,9600); // Module Sigfox LowPowerTicker t1; // Ticker pour la fonction d'interruption char _id[16]; DeviceAddresses* devAddresses; uint8_t foundNum; volatile uint8_t flag=1; void run() { I2C i2c(PB_7,PB_6); //OneWire Tem_S OneWireDeviceTemperature::startConversationForAll(&Tem_S, OWTEMP_11_BIT); for (uint8_t i = 0; i < foundNum; i++) { OneWireDevice* owDevice = OneWireDeviceFactory::init(&Tem_S, (*devAddresses)[i]); if (owDevice->getFamily() != ONEWIRE_DS18B20_FAMILY) // currently only DS18B20 supports continue; owDevice->generateId(_id); //Tem_Hum_A.sample(); // Calcul sur les données envoyées par les capteurs float Lumux = Lum.lux(); //float Temp_Air = Tem_Hum_A.getTemperature()/10.0; //float Hum_Air = Tem_Hum_A.getHumidity()/10.0; float Temp_Sol = owDevice->sendGetCommand(GET_TEMPERATURE); float Hum_Sol = Hum_S.read(); // Affichage données, mises en forme, sur la console printf( "Lum: %.2f \tTemp_A: %.2f \tHum_A: %.2f \tTemp_S: %.2f \tHum_S: %.2f\r\n", Lumux, 0, 0, Temp_Sol, Hum_Sol); // Envoie données, mises en forme, sur ACTOBOARD sigfox.printf("AT$SF="); sigfox.printf("%02x%02x%02x%02x%02x",(int)Lumux,(int)0,(int)0,(int)Temp_Sol,(int)Hum_Sol); sigfox.printf("\n\r"); delete owDevice; SPI spi(PA_7,NC, PA_5); // Affichage données, mises en forme, sur l'écran OLED wait(2); oled.set_font(bold_font, 8); oled.printf("Capteurs\r\n"); oled.printf("\r\n"); oled.set_font(standard_font, 6); oled.printf("Lum: %.2f\r\n", Lumux); oled.printf("Temp_A: %.2f\r\n", 1); oled.printf("Hum_A: %.2f\r\n", 1); oled.printf("Temp_S: %.2f\r\n",Temp_Sol); oled.printf("Hum_S: %.2f\r\n", Hum_Sol); oled.printf("\r\n"); oled.update(); } } void interruption(){ flag=1; } int main() { //OneWire Tem_S I2C i2c(PB_7,PB_6); devAddresses = Tem_S.getFoundDevAddresses(); foundNum = Tem_S.getFoundDevNum(); SPI spi(PA_7,NC, PA_5); //OLED oled.initialise(); oled.clear(); oled.set_contrast(255); // max contrast oled.set_font(bold_font, 8); oled.printf("Heading\r\n"); oled.set_font(standard_font, 6); oled.printf("Hello World!\r\n"); oled.printf("Some more text here.."); oled.update(); t1.attach(interruption,61); while(1) { if(flag) { run(); flag=0; } deepsleep(); } }