Dependencies: EthernetNetIf TextLCD mbed
main.cpp@0:48abe2923d34, 2011-06-20 (annotated)
- Committer:
- Torsten
- Date:
- Mon Jun 20 11:21:15 2011 +0000
- Revision:
- 0:48abe2923d34
Initial
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Torsten | 0:48abe2923d34 | 1 | /** |
Torsten | 0:48abe2923d34 | 2 | * XBeeBeispiel |
Torsten | 0:48abe2923d34 | 3 | * Eine kleine Testanwendung die von einem Arduino die Werte des SHT15 per xbee empf�ngt |
Torsten | 0:48abe2923d34 | 4 | * die daten werden im serielle AT Modus �bertragen |
Torsten | 0:48abe2923d34 | 5 | * Anschlie�end werden die Werte in Float convertiert und gespeichert |
Torsten | 0:48abe2923d34 | 6 | * Autor: Torsten Dillenburg |
Torsten | 0:48abe2923d34 | 7 | * erstellt: 11.05.2011 |
Torsten | 0:48abe2923d34 | 8 | */ |
Torsten | 0:48abe2923d34 | 9 | |
Torsten | 0:48abe2923d34 | 10 | #include "mbed.h" |
Torsten | 0:48abe2923d34 | 11 | #include "TextLCD.h" |
Torsten | 0:48abe2923d34 | 12 | #include "PachubeClient.h" |
Torsten | 0:48abe2923d34 | 13 | #include "EthernetNetIf.h" |
Torsten | 0:48abe2923d34 | 14 | #include "HTTPClient.h" |
Torsten | 0:48abe2923d34 | 15 | |
Torsten | 0:48abe2923d34 | 16 | #define API_KEY "YOUR_API_Key" |
Torsten | 0:48abe2923d34 | 17 | #define FEED_ID YOUR_FEED_ID |
Torsten | 0:48abe2923d34 | 18 | #define STREAM_ID "YOUR_STREAM_ID" |
Torsten | 0:48abe2923d34 | 19 | |
Torsten | 0:48abe2923d34 | 20 | Serial xbee1(p28, p27); //Serielles Objekt f�r den XBEE |
Torsten | 0:48abe2923d34 | 21 | TextLCD lcd(p26, p25, p24, p23, p22, p21); // rs, e, d4-d7 |
Torsten | 0:48abe2923d34 | 22 | PachubeClient pachube("API_KEY"); |
Torsten | 0:48abe2923d34 | 23 | EthernetNetIf eth; |
Torsten | 0:48abe2923d34 | 24 | |
Torsten | 0:48abe2923d34 | 25 | DigitalOut rst1(p11); //Digital reset f�r den XBee, 200ns zum reset |
Torsten | 0:48abe2923d34 | 26 | |
Torsten | 0:48abe2923d34 | 27 | DigitalOut myled(LED3);//Debug �ber Led 3 und 4 am mbed |
Torsten | 0:48abe2923d34 | 28 | DigitalOut myled2(LED4); |
Torsten | 0:48abe2923d34 | 29 | |
Torsten | 0:48abe2923d34 | 30 | Serial pc(USBTX, USBRX);//serial Schnittstelle �ber den USB port zum computer |
Torsten | 0:48abe2923d34 | 31 | |
Torsten | 0:48abe2923d34 | 32 | char v_char_temp[5]; // Buffer f�r die Seriellen werte |
Torsten | 0:48abe2923d34 | 33 | int stelle; |
Torsten | 0:48abe2923d34 | 34 | double v_messwert[3]; |
Torsten | 0:48abe2923d34 | 35 | bool debug = true; |
Torsten | 0:48abe2923d34 | 36 | bool lcd_update = false; |
Torsten | 0:48abe2923d34 | 37 | Ticker pachubeUpd; |
Torsten | 0:48abe2923d34 | 38 | Ticker lcdUpd; |
Torsten | 0:48abe2923d34 | 39 | |
Torsten | 0:48abe2923d34 | 40 | void send_update(void) { |
Torsten | 0:48abe2923d34 | 41 | double tx1, rx1; |
Torsten | 0:48abe2923d34 | 42 | if (debug) pc.printf("1."); |
Torsten | 0:48abe2923d34 | 43 | if (1) |
Torsten | 0:48abe2923d34 | 44 | { |
Torsten | 0:48abe2923d34 | 45 | if (debug) pc.printf("Sending to Pachube\n"); |
Torsten | 0:48abe2923d34 | 46 | const int feed_id = FEED_ID; |
Torsten | 0:48abe2923d34 | 47 | const std::string stream_id = STREAM_ID; |
Torsten | 0:48abe2923d34 | 48 | char val1_text[32]; |
Torsten | 0:48abe2923d34 | 49 | sprintf(val1_text, "%2.2f,%2.2f", v_messwert[0],v_messwert[1]); |
Torsten | 0:48abe2923d34 | 50 | if (debug) pc.printf("%c",val1_text); |
Torsten | 0:48abe2923d34 | 51 | pachube.PutCsv("25387", val1_text); |
Torsten | 0:48abe2923d34 | 52 | if (debug) printf("Pachube result / response : %d / %d\n", |
Torsten | 0:48abe2923d34 | 53 | pachube.Result(), pachube.Response()); |
Torsten | 0:48abe2923d34 | 54 | |
Torsten | 0:48abe2923d34 | 55 | wait(10); |
Torsten | 0:48abe2923d34 | 56 | } |
Torsten | 0:48abe2923d34 | 57 | } |
Torsten | 0:48abe2923d34 | 58 | |
Torsten | 0:48abe2923d34 | 59 | void lcdupdate(void) |
Torsten | 0:48abe2923d34 | 60 | { |
Torsten | 0:48abe2923d34 | 61 | lcd_update=false; |
Torsten | 0:48abe2923d34 | 62 | lcd.cls(); |
Torsten | 0:48abe2923d34 | 63 | // 1234567890123456 |
Torsten | 0:48abe2923d34 | 64 | lcd.printf("Aussen: T H\n"); |
Torsten | 0:48abe2923d34 | 65 | lcd.printf(" %2.2f %2.2f",v_messwert[0],v_messwert[1]); |
Torsten | 0:48abe2923d34 | 66 | } |
Torsten | 0:48abe2923d34 | 67 | |
Torsten | 0:48abe2923d34 | 68 | void setup(void) |
Torsten | 0:48abe2923d34 | 69 | { |
Torsten | 0:48abe2923d34 | 70 | eth.setup(); |
Torsten | 0:48abe2923d34 | 71 | pachubeUpd.attach(&send_update,900); |
Torsten | 0:48abe2923d34 | 72 | lcdUpd.attach(&lcdupdate,30); |
Torsten | 0:48abe2923d34 | 73 | rst1 = 0; //Set reset pin to 0 |
Torsten | 0:48abe2923d34 | 74 | myled = 0;//Set LED3 to 0 |
Torsten | 0:48abe2923d34 | 75 | myled2= 0;//Set LED4 to 0 |
Torsten | 0:48abe2923d34 | 76 | wait_ms(1);//Wait at least one millisecond |
Torsten | 0:48abe2923d34 | 77 | rst1 = 1;//Set reset pin to 1 |
Torsten | 0:48abe2923d34 | 78 | wait_ms(1);//Wait another millisecond |
Torsten | 0:48abe2923d34 | 79 | stelle =0; |
Torsten | 0:48abe2923d34 | 80 | } |
Torsten | 0:48abe2923d34 | 81 | |
Torsten | 0:48abe2923d34 | 82 | void decode(char p_zeichen) |
Torsten | 0:48abe2923d34 | 83 | { |
Torsten | 0:48abe2923d34 | 84 | v_char_temp[stelle]=p_zeichen; |
Torsten | 0:48abe2923d34 | 85 | if (debug) pc.putc(v_char_temp[stelle]); |
Torsten | 0:48abe2923d34 | 86 | switch(v_char_temp[stelle]) { |
Torsten | 0:48abe2923d34 | 87 | case '0': stelle++; break; |
Torsten | 0:48abe2923d34 | 88 | case '1': stelle++; break; |
Torsten | 0:48abe2923d34 | 89 | case '2': stelle++; break; |
Torsten | 0:48abe2923d34 | 90 | case '3': stelle++; break; |
Torsten | 0:48abe2923d34 | 91 | case '4': stelle++; break; |
Torsten | 0:48abe2923d34 | 92 | case '5': stelle++; break; |
Torsten | 0:48abe2923d34 | 93 | case '6': stelle++; break; |
Torsten | 0:48abe2923d34 | 94 | case '7': stelle++; break; |
Torsten | 0:48abe2923d34 | 95 | case '8': stelle++; break; |
Torsten | 0:48abe2923d34 | 96 | case '9': stelle++; break; |
Torsten | 0:48abe2923d34 | 97 | case '.': stelle++; break; |
Torsten | 0:48abe2923d34 | 98 | case 'T': v_messwert[0] = atof(v_char_temp); lcd_update = true; break; //temp |
Torsten | 0:48abe2923d34 | 99 | case 'H': v_messwert[1] = atof(v_char_temp); lcd_update = true; break; //hum |
Torsten | 0:48abe2923d34 | 100 | case 'D': v_messwert[2] = atof(v_char_temp); lcd_update = true; break; //dew |
Torsten | 0:48abe2923d34 | 101 | default : for(int i=stelle; i>=0; i--) {v_char_temp[i]='0';} stelle=0;//puffer l�schen |
Torsten | 0:48abe2923d34 | 102 | } |
Torsten | 0:48abe2923d34 | 103 | } |
Torsten | 0:48abe2923d34 | 104 | |
Torsten | 0:48abe2923d34 | 105 | int main() { |
Torsten | 0:48abe2923d34 | 106 | setup(); |
Torsten | 0:48abe2923d34 | 107 | while (1) {//Neverending Loop |
Torsten | 0:48abe2923d34 | 108 | if (xbee1.readable()) {//Checking for serial comminication |
Torsten | 0:48abe2923d34 | 109 | decode(xbee1.getc()); |
Torsten | 0:48abe2923d34 | 110 | } |
Torsten | 0:48abe2923d34 | 111 | } |
Torsten | 0:48abe2923d34 | 112 | } |