Dependencies:   SSD1306 TSL2561 mbed DHT22 OneWire

main.cpp

Committer:
Aureb29
Date:
2017-11-10
Revision:
3:4e142bba2a8e
Parent:
2:34f81c0f5176
Child:
4:5ba5931b57db

File content as of revision 3:4e142bba2a8e:

#include "mbed.h"
#define p_scl PA_9
#define p_sda PA_10
#include "TSL2561.h"
#include "ssd1306.h"
#include "standard_font.h"
#include "bold_font.h"
#include "DHT22.h"
#include "OneWire.h"
#include "OneWireDevice.h"
#include "OneWireDeviceFactory.h"
#include "OneWireDeviceTemperature.h"
 
DigitalOut myled(LED1);
SSD1306 oled(D3 /* cs */, A0 /* reset */, A7 /* dc */,
             A1 /* clock */, A6 /* data */);
Serial serial(USBTX, USBRX);
TSL2561      lum(PA_10,PA_9);
AnalogIn moisture(A3);
Serial sigfox(PB_6, PB_7);
DHT22 Capt_temp_hum(A2);
OneWire OneWire(A4);    // substitute A4 with actual mbed pin name connected to the DS1820 data pin

int main()
{
    oled.initialise();
    oled.clear();
    oled.set_contrast(255); // max contrast
    oled.set_font(bold_font, 8);
    oled.update();
    DeviceAddresses* devAddresses = OneWire.getFoundDevAddresses();
    uint8_t foundNum = OneWire.getFoundDevNum();
    printf("OneWire: found %d devices\r\n", foundNum);
    char _id[16];
    int temp, hum, temp_sol, lumi, moist;
    char a;
    while (1)
    {
        myled = 1; // LED is ON
        //temp = (int) (Capt_temp_hum.getTemperature()/10);
        //hum = (int) (Capt_temp_hum.getHumidity()/10);
        moist = (int) (moisture*100);
        lumi = (int) lum.lux();
        lumi=((lumi & 0xff)<<8) | ((lumi & 0xff00)>>8); //Swipping bytes for Actoboard reception
        OneWireDeviceTemperature::startConversationForAll(&OneWire, OWTEMP_11_BIT);
        for (uint8_t i = 0; i < foundNum; i++) {
            OneWireDevice* owDevice = OneWireDeviceFactory::init(&OneWire, (*devAddresses)[i]);
            
            if (owDevice->getFamily() != ONEWIRE_DS18B20_FAMILY)    // currently only DS18B20 supports
                continue;
 
            owDevice->generateId(_id);
            temp_sol = (int) owDevice->sendGetCommand(GET_TEMPERATURE);
            oled.printf("OneWire: device #%s = %.4f*C\r\n", _id, (float) owDevice->sendGetCommand(GET_TEMPERATURE));
            delete owDevice;
        }
        a='%';
        oled.set_font(bold_font, 8);
        oled.scroll_up();
        oled.update();
        Capt_temp_hum.sample();
        oled.printf("Moisture is %2.2f\r\n", (float) moisture);
        oled.printf("Lum : %+4.1f lux\r\n", lum.lux());
        oled.printf("Temp : %d oC\r\n", temp);
        oled.printf("Humidite : %d%c\r\n", hum, a);
        oled.printf("Temp sol : %d\r\n", temp_sol);
        oled.printf("\n");
        sigfox.printf("AT$SF=");
        sigfox.printf("%02x ", temp);
        sigfox.printf("%02x ", hum);
        sigfox.printf("%02x ", temp_sol);
        sigfox.printf("%02x ", moist);
        sigfox.printf("%04x ", lumi);
        sigfox.printf("\r\n");
        wait(15);
        myled = 0; // LED is OFF
        wait(15);
    }
}