Gets serial communication from Xbee. Code should be on Coordinator. Will display distance in inches and if anything is within 2ft all BUS leds will illuminate.
Dependencies: C12832_lcd mbed xbeeLibDannelly
main.cpp@0:d7df8ffb24da, 2015-02-16 (annotated)
- Committer:
- dannellyz
- Date:
- Mon Feb 16 04:56:26 2015 +0000
- Revision:
- 0:d7df8ffb24da
round 1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dannellyz | 0:d7df8ffb24da | 1 | #include "mbed.h" |
dannellyz | 0:d7df8ffb24da | 2 | #include "xbee.h" // Include for xbee code |
dannellyz | 0:d7df8ffb24da | 3 | #include "C12832_lcd.h" // Include for LCD code |
dannellyz | 0:d7df8ffb24da | 4 | //For string maniputlation |
dannellyz | 0:d7df8ffb24da | 5 | #include <string> |
dannellyz | 0:d7df8ffb24da | 6 | #include <sstream> |
dannellyz | 0:d7df8ffb24da | 7 | #include <stdlib.h> //Include for atoi |
dannellyz | 0:d7df8ffb24da | 8 | |
dannellyz | 0:d7df8ffb24da | 9 | xbee xbee1(p9,p10,p30); //Initalise xbee_lib varName(rx,tx,reset) |
dannellyz | 0:d7df8ffb24da | 10 | DigitalOut rst1(p30); |
dannellyz | 0:d7df8ffb24da | 11 | Serial pc(USBTX, USBRX); //Initalise PC serial comms |
dannellyz | 0:d7df8ffb24da | 12 | C12832_LCD lcd; //Initialize LCD Screen |
dannellyz | 0:d7df8ffb24da | 13 | BusOut leds(LED1,LED2,LED3,LED4); |
dannellyz | 0:d7df8ffb24da | 14 | |
dannellyz | 0:d7df8ffb24da | 15 | //Code to send strings acsross xbee with xbee.h |
dannellyz | 0:d7df8ffb24da | 16 | //Code should be on the End Device |
dannellyz | 0:d7df8ffb24da | 17 | int main() |
dannellyz | 0:d7df8ffb24da | 18 | { |
dannellyz | 0:d7df8ffb24da | 19 | // reset the xbees (at least 200ns) |
dannellyz | 0:d7df8ffb24da | 20 | rst1 = 0; |
dannellyz | 0:d7df8ffb24da | 21 | wait_ms(1); |
dannellyz | 0:d7df8ffb24da | 22 | rst1 = 1; |
dannellyz | 0:d7df8ffb24da | 23 | wait_ms(1); |
dannellyz | 0:d7df8ffb24da | 24 | |
dannellyz | 0:d7df8ffb24da | 25 | //Establish a variable to receive data from End Device |
dannellyz | 0:d7df8ffb24da | 26 | //Max buffer is 202 |
dannellyz | 0:d7df8ffb24da | 27 | char receiveData[5]; |
dannellyz | 0:d7df8ffb24da | 28 | char clean[4]; |
dannellyz | 0:d7df8ffb24da | 29 | //Setup LCD screen |
dannellyz | 0:d7df8ffb24da | 30 | lcd.cls(); |
dannellyz | 0:d7df8ffb24da | 31 | lcd.locate(0,1); |
dannellyz | 0:d7df8ffb24da | 32 | |
dannellyz | 0:d7df8ffb24da | 33 | while(1) { |
dannellyz | 0:d7df8ffb24da | 34 | //Recieve data from Xbee |
dannellyz | 0:d7df8ffb24da | 35 | //Second argument is how many characters to read |
dannellyz | 0:d7df8ffb24da | 36 | //If zero it will read sizeof(firstArg) |
dannellyz | 0:d7df8ffb24da | 37 | xbee1.RecieveData(receiveData,5); |
dannellyz | 0:d7df8ffb24da | 38 | |
dannellyz | 0:d7df8ffb24da | 39 | //Clean data by removing leader R with String manipulation |
dannellyz | 0:d7df8ffb24da | 40 | strncpy ( clean, receiveData+2, 3); |
dannellyz | 0:d7df8ffb24da | 41 | |
dannellyz | 0:d7df8ffb24da | 42 | //Change value back to floats for possible use later |
dannellyz | 0:d7df8ffb24da | 43 | int inches = atoi (clean); |
dannellyz | 0:d7df8ffb24da | 44 | |
dannellyz | 0:d7df8ffb24da | 45 | //If something is closer than 2ft illumiate BUS leds |
dannellyz | 0:d7df8ffb24da | 46 | if(inches < 24){ |
dannellyz | 0:d7df8ffb24da | 47 | leds = 0xFFFF; |
dannellyz | 0:d7df8ffb24da | 48 | } |
dannellyz | 0:d7df8ffb24da | 49 | else{leds = 0;} |
dannellyz | 0:d7df8ffb24da | 50 | //Echo Locally... |
dannellyz | 0:d7df8ffb24da | 51 | pc.printf("Inches: %d\n", inches); |
dannellyz | 0:d7df8ffb24da | 52 | lcd.printf("Inches %d\n", inches); |
dannellyz | 0:d7df8ffb24da | 53 | } |
dannellyz | 0:d7df8ffb24da | 54 | } |