Home automation using Xbee radios
Dependencies: EthernetNetIf HTTPServer RPCInterface mbed C12832_lcd
main.cpp
- Committer:
- chrisisthefish
- Date:
- 2013-11-26
- Revision:
- 7:15cbbbe6105c
- Parent:
- 1:230c1ec1c9bb
- Parent:
- 6:438291b14122
File content as of revision 7:15cbbbe6105c:
#include "XbeeCommLib.h" PinDetect buttonUp ( p15 ); PinDetect buttonDown ( p12 ); PinDetect buttonRight ( p16 ); PinDetect buttonLeft ( p13 ); DigitalOut led1( LED1 ); DigitalOut led2( LED2 ); DigitalOut led3( LED3 ); DigitalOut led4( LED4 ); Serial xbee1(p9, p10); C12832_LCD lcd; LM75B sensor(p28,p27); PwmOut green(p24); PwmOut blue(p25); PwmOut red(p23); unsigned char data[500]; int dataCounter = 0; bool clear = false; unsigned int router0_addrHigh = 0x0013a200; unsigned int router0_addrLow = 0x4079d00b; unsigned int router1_addrHigh = 0x0013a200; unsigned int router1_addrLow = 0x4079d023; void xbeeSerialCallback() { if(clear){ dataCounter = 0; clear = false; } if(dataCounter < 500){ while(xbee1.readable() == true && dataCounter < 500){ data[dataCounter] = xbee1.getc(); dataCounter++; } } else{ printf("Serial data buffer overflow. Resetting buffer...\n"); dataCounter = 0; data[dataCounter] = xbee1.getc(); } } void up( void ) { led1 = 1; printf("Router1 Light On"); digitalWriteXbee(router1_addrHigh, router1_addrLow, 0, true); } void down( void ) { led1 = 0; printf("Router1 Light Off"); digitalWriteXbee(router1_addrHigh, router1_addrLow, 0, false); } void right(void) { led2 = 1; printf("Router0 Light On"); digitalWriteXbee(router0_addrHigh, router0_addrLow, 0, true); } void left(void) { led2 = 0; printf("Router0 Light Off"); digitalWriteXbee(router0_addrHigh, router0_addrLow, 0, false); } int main() { printf("\n\nStarting...\n\n"); xbee1.attach(&xbeeSerialCallback); blue = 0.7; green = 1.0; red = 1.0; buttonUp.mode( PullDown ); buttonUp.attach_asserted( &up ); buttonUp.setSampleFrequency(); // Defaults to 20ms. buttonDown.mode( PullDown ); buttonDown.attach_asserted( &down ); buttonDown.setSampleFrequency(); // Defaults to 20ms. buttonRight.mode( PullDown ); buttonRight.attach_asserted( &right ); buttonRight.setSampleFrequency(); // Defaults to 20ms. buttonLeft.mode( PullDown ); buttonLeft.attach_asserted( &left ); buttonLeft.setSampleFrequency(); // Defaults to 20ms. while( 1 ) { wait( 0.2 ); monitorXbee(); } }