Dependencies:   EthernetNetIf TextLCD mbed

main.cpp

Committer:
Torsten
Date:
2011-06-20
Revision:
0:48abe2923d34

File content as of revision 0:48abe2923d34:

/**
 * XBeeBeispiel
 * Eine kleine Testanwendung die von einem Arduino die Werte des SHT15 per xbee empf�ngt
 * die daten werden im serielle AT Modus �bertragen
 * Anschlie�end werden die Werte in Float convertiert und gespeichert
 * Autor: Torsten Dillenburg
 * erstellt: 11.05.2011
 */

#include "mbed.h"
#include "TextLCD.h"
#include "PachubeClient.h"
#include "EthernetNetIf.h"
#include "HTTPClient.h"

#define API_KEY "YOUR_API_Key"
#define FEED_ID YOUR_FEED_ID
#define STREAM_ID "YOUR_STREAM_ID"

Serial xbee1(p28, p27); //Serielles Objekt f�r den XBEE
TextLCD    lcd(p26, p25, p24, p23, p22, p21);  // rs, e, d4-d7
PachubeClient pachube("API_KEY");
EthernetNetIf eth;

DigitalOut rst1(p11); //Digital reset f�r den XBee, 200ns zum reset

DigitalOut myled(LED3);//Debug �ber Led 3 und 4 am mbed
DigitalOut myled2(LED4);

Serial pc(USBTX, USBRX);//serial Schnittstelle �ber den  USB port zum computer

char v_char_temp[5]; // Buffer f�r die Seriellen werte
int stelle;
double v_messwert[3];
bool debug = true;
bool lcd_update = false;
Ticker pachubeUpd;
Ticker lcdUpd;

void send_update(void) {
    double tx1, rx1;
    if (debug) pc.printf("1.");
    if (1)
    {
        if (debug) pc.printf("Sending to Pachube\n");
        const int feed_id = FEED_ID;
        const std::string stream_id = STREAM_ID;
        char val1_text[32];
        sprintf(val1_text, "%2.2f,%2.2f", v_messwert[0],v_messwert[1]);
        if (debug) pc.printf("%c",val1_text);
        pachube.PutCsv("25387", val1_text);
         if (debug) printf("Pachube result  / response : %d / %d\n", 
           pachube.Result(), pachube.Response());
       
        wait(10);
    }
}

void lcdupdate(void)
{
            lcd_update=false;
            lcd.cls();
            //          1234567890123456
            lcd.printf("Aussen: T H\n");
            lcd.printf("   %2.2f %2.2f",v_messwert[0],v_messwert[1]);
}

void setup(void)
{
    eth.setup();
    pachubeUpd.attach(&send_update,900);
    lcdUpd.attach(&lcdupdate,30);
    rst1 = 0; //Set reset pin to 0
    myled = 0;//Set LED3 to 0
    myled2= 0;//Set LED4 to 0
    wait_ms(1);//Wait at least one millisecond
    rst1 = 1;//Set reset pin to 1
    wait_ms(1);//Wait another millisecond
    stelle =0;
}

void decode(char p_zeichen)
{
            v_char_temp[stelle]=p_zeichen;
            if (debug) pc.putc(v_char_temp[stelle]);
            switch(v_char_temp[stelle]) {
                case '0': stelle++; break;
                case '1': stelle++; break;
                case '2': stelle++; break;
                case '3': stelle++; break;
                case '4': stelle++; break;
                case '5': stelle++; break;
                case '6': stelle++; break;
                case '7': stelle++; break;
                case '8': stelle++; break;
                case '9': stelle++; break;
                case '.': stelle++; break;
                case 'T': v_messwert[0] = atof(v_char_temp); lcd_update = true; break; //temp
                case 'H': v_messwert[1] = atof(v_char_temp); lcd_update = true; break; //hum
                case 'D': v_messwert[2] = atof(v_char_temp); lcd_update = true; break; //dew
                default : for(int i=stelle; i>=0; i--) {v_char_temp[i]='0';} stelle=0;//puffer l�schen
            }              
}

int main() {
    setup();
    while (1) {//Neverending Loop
        if (xbee1.readable()) {//Checking for serial comminication
           decode(xbee1.getc());
        }
    }
}