xbee Test, Serial communication with Arduino. transmit Data from an SHT15 connected to a arduino to the mbed
main.cpp
- Committer:
- Torsten
- Date:
- 2011-05-20
- Revision:
- 1:c9f84815139d
- Parent:
- 0:252e98aa671c
File content as of revision 1:c9f84815139d:
/** * 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" Serial xbee1(p28, p27); //Serielles Objekt für den XBEE TextLCD lcd(p26, p25, p24, p23, p22, p21); // rs, e, d4-d7 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; int main() { 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; while (1) {//Neverending Loop if (xbee1.readable()) {//Checking for serial comminication myled = 0; //Turn Led 3 Off v_char_temp[stelle]=xbee1.getc(); 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 } myled = 1; //Turn Led 3 on for succcessfull communication } if (lcd_update) { lcd_update=false; lcd.cls(); // 1234567890123456 lcd.printf("Aussen: T H\n"); lcd.printf(" %2.2f %2.2f",v_messwert[0],v_messwert[1]); } } }