Emiel Estiévenart
/
ContrllerSoftware
ContrllerSoftware
Fork of XBee_write by
main.cpp@1:f4b793d840db, 2016-03-24 (annotated)
- Committer:
- Perijah
- Date:
- Thu Mar 24 14:46:30 2016 +0000
- Revision:
- 1:f4b793d840db
- Parent:
- 0:74b4b9fc9480
Controller software
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alex89 | 0:74b4b9fc9480 | 1 | #include "main.h" |
alex89 | 0:74b4b9fc9480 | 2 | |
alex89 | 0:74b4b9fc9480 | 3 | Serial xbee1(p9, p10); |
Perijah | 1:f4b793d840db | 4 | Serial pc(USBTX, USBRX); |
Perijah | 1:f4b793d840db | 5 | DigitalOut rst1(p30); |
Perijah | 1:f4b793d840db | 6 | int adress = 0x55; //Adress of this controller |
Perijah | 1:f4b793d840db | 7 | int createdDataArray[1]; //Array that stores the data created by the getData() method |
Perijah | 1:f4b793d840db | 8 | |
Perijah | 1:f4b793d840db | 9 | |
Perijah | 1:f4b793d840db | 10 | DigitalIn right(p16); //Joystick pins on application board |
Perijah | 1:f4b793d840db | 11 | DigitalIn up(p15); |
Perijah | 1:f4b793d840db | 12 | DigitalIn down(p12); |
Perijah | 1:f4b793d840db | 13 | DigitalIn left(p13); |
Perijah | 1:f4b793d840db | 14 | |
Perijah | 1:f4b793d840db | 15 | DigitalIn btn1(p14); //extra buttons connected with internal pull up |
Perijah | 1:f4b793d840db | 16 | DigitalIn btn2(p11); |
Perijah | 1:f4b793d840db | 17 | DigitalIn btn3(p8); |
Perijah | 1:f4b793d840db | 18 | DigitalIn btn4(p7); |
Perijah | 1:f4b793d840db | 19 | |
Perijah | 1:f4b793d840db | 20 | void getData() //This method reads the data from to user controlls and stores it in a single byte. If a button is pressed it sets the corresponding bit to 1. |
Perijah | 1:f4b793d840db | 21 | //It is stored in createdDataArray[0]; |
alex89 | 0:74b4b9fc9480 | 22 | |
Perijah | 1:f4b793d840db | 23 | { |
Perijah | 1:f4b793d840db | 24 | int createdData = 0x00; |
Perijah | 1:f4b793d840db | 25 | if (down) { |
Perijah | 1:f4b793d840db | 26 | createdData = createdData | 0x01; |
Perijah | 1:f4b793d840db | 27 | } else { |
Perijah | 1:f4b793d840db | 28 | createdData= createdData & 0xfe; |
Perijah | 1:f4b793d840db | 29 | } |
Perijah | 1:f4b793d840db | 30 | if (up) { |
Perijah | 1:f4b793d840db | 31 | createdData = createdData |= 0x02; |
Perijah | 1:f4b793d840db | 32 | } else { |
Perijah | 1:f4b793d840db | 33 | createdData= createdData & 0xfd; |
Perijah | 1:f4b793d840db | 34 | } |
Perijah | 1:f4b793d840db | 35 | |
Perijah | 1:f4b793d840db | 36 | if (right) { |
Perijah | 1:f4b793d840db | 37 | createdData = createdData |= 0x04; |
Perijah | 1:f4b793d840db | 38 | } else { |
Perijah | 1:f4b793d840db | 39 | createdData= createdData & 0xfb; |
Perijah | 1:f4b793d840db | 40 | } |
Perijah | 1:f4b793d840db | 41 | if (left) { |
Perijah | 1:f4b793d840db | 42 | createdData = createdData |= 0x08; |
Perijah | 1:f4b793d840db | 43 | } else { |
Perijah | 1:f4b793d840db | 44 | createdData= createdData & 0xf7; |
Perijah | 1:f4b793d840db | 45 | } |
Perijah | 1:f4b793d840db | 46 | |
Perijah | 1:f4b793d840db | 47 | if (! btn1) { |
Perijah | 1:f4b793d840db | 48 | createdData = createdData | 0x10; |
Perijah | 1:f4b793d840db | 49 | } else { |
Perijah | 1:f4b793d840db | 50 | createdData= createdData & 0xef; |
Perijah | 1:f4b793d840db | 51 | } |
Perijah | 1:f4b793d840db | 52 | if (! btn2) { |
Perijah | 1:f4b793d840db | 53 | createdData = createdData |= 0x20; |
Perijah | 1:f4b793d840db | 54 | } else { |
Perijah | 1:f4b793d840db | 55 | createdData= createdData & 0xdf; |
Perijah | 1:f4b793d840db | 56 | } |
alex89 | 0:74b4b9fc9480 | 57 | |
Perijah | 1:f4b793d840db | 58 | if (! btn3) { |
Perijah | 1:f4b793d840db | 59 | createdData = createdData |= 0x40; |
Perijah | 1:f4b793d840db | 60 | } else { |
Perijah | 1:f4b793d840db | 61 | createdData= createdData & 0xbf; |
Perijah | 1:f4b793d840db | 62 | } |
Perijah | 1:f4b793d840db | 63 | if (! btn4) { |
Perijah | 1:f4b793d840db | 64 | createdData = createdData |= 0x80; |
Perijah | 1:f4b793d840db | 65 | } else { |
Perijah | 1:f4b793d840db | 66 | createdData= createdData & 0x7f; |
Perijah | 1:f4b793d840db | 67 | } |
Perijah | 1:f4b793d840db | 68 | createdDataArray[0] = createdData; |
Perijah | 1:f4b793d840db | 69 | |
Perijah | 1:f4b793d840db | 70 | } |
Perijah | 1:f4b793d840db | 71 | |
Perijah | 1:f4b793d840db | 72 | void sendData(int adress, int dataToSend[]) //Sends the data. make sure that the size of the array giving is adjusted properly. |
Perijah | 1:f4b793d840db | 73 | { |
Perijah | 1:f4b793d840db | 74 | |
Perijah | 1:f4b793d840db | 75 | int size = 1; //Size of the dataToSend array is 1 |
Perijah | 1:f4b793d840db | 76 | int checkSum = 0; |
Perijah | 1:f4b793d840db | 77 | for(int n=0 ; n<size ; n++) { //build a checksum witht the data from the array dataToSend |
Perijah | 1:f4b793d840db | 78 | checkSum += dataToSend[n]; |
Perijah | 1:f4b793d840db | 79 | } |
Perijah | 1:f4b793d840db | 80 | checkSum += adress; |
Perijah | 1:f4b793d840db | 81 | checkSum = checkSum % 256; |
Perijah | 1:f4b793d840db | 82 | |
Perijah | 1:f4b793d840db | 83 | |
Perijah | 1:f4b793d840db | 84 | xbee1.putc(0x7E); //send flag to signal start of data transfer |
Perijah | 1:f4b793d840db | 85 | |
Perijah | 1:f4b793d840db | 86 | xbee1.putc(adress); //adress of the functionality that will be adressed. (buttons, lcd or speaker) |
Perijah | 1:f4b793d840db | 87 | |
Perijah | 1:f4b793d840db | 88 | xbee1.putc(size); //Size of the following data (is the length of the array) |
Perijah | 1:f4b793d840db | 89 | |
Perijah | 1:f4b793d840db | 90 | for(int n=0 ; n<size ; n++) { //send a byte for every databyte stored in the array. Size determines the amount of bytes send here |
Perijah | 1:f4b793d840db | 91 | xbee1.putc(dataToSend[n]); |
Perijah | 1:f4b793d840db | 92 | |
Perijah | 1:f4b793d840db | 93 | } |
Perijah | 1:f4b793d840db | 94 | xbee1.putc(checkSum); //send the checksum |
Perijah | 1:f4b793d840db | 95 | |
Perijah | 1:f4b793d840db | 96 | pc.printf("%x,%x,%x,%x \n\r",adress,dataToSend[0],size,checkSum); //show data on the terminal |
Perijah | 1:f4b793d840db | 97 | |
Perijah | 1:f4b793d840db | 98 | |
Perijah | 1:f4b793d840db | 99 | } |
Perijah | 1:f4b793d840db | 100 | |
Perijah | 1:f4b793d840db | 101 | |
Perijah | 1:f4b793d840db | 102 | |
Perijah | 1:f4b793d840db | 103 | |
Perijah | 1:f4b793d840db | 104 | int main() |
Perijah | 1:f4b793d840db | 105 | { |
Perijah | 1:f4b793d840db | 106 | btn1.mode(PullUp); //configure internal pull up mode |
Perijah | 1:f4b793d840db | 107 | btn2.mode(PullUp); |
Perijah | 1:f4b793d840db | 108 | btn3.mode(PullUp); |
Perijah | 1:f4b793d840db | 109 | btn4.mode(PullUp); |
Perijah | 1:f4b793d840db | 110 | |
Perijah | 1:f4b793d840db | 111 | wait_ms(3000); |
alex89 | 0:74b4b9fc9480 | 112 | rst1 = 0; //Set reset pin to 0 |
alex89 | 0:74b4b9fc9480 | 113 | wait_ms(1); |
alex89 | 0:74b4b9fc9480 | 114 | rst1 = 1; //Set reset pin to 1 |
alex89 | 0:74b4b9fc9480 | 115 | wait_ms(1); |
Perijah | 1:f4b793d840db | 116 | xbee1.baud(57600); |
Perijah | 1:f4b793d840db | 117 | |
Perijah | 1:f4b793d840db | 118 | |
alex89 | 0:74b4b9fc9480 | 119 | |
alex89 | 0:74b4b9fc9480 | 120 | while (1) { |
Perijah | 1:f4b793d840db | 121 | |
Perijah | 1:f4b793d840db | 122 | getData(); //store data in the array CreatedDataArray |
Perijah | 1:f4b793d840db | 123 | sendData(adress, createdDataArray); //send the data |
Perijah | 1:f4b793d840db | 124 | |
Perijah | 1:f4b793d840db | 125 | wait_ms(100); |
Perijah | 1:f4b793d840db | 126 | |
alex89 | 0:74b4b9fc9480 | 127 | } |
alex89 | 0:74b4b9fc9480 | 128 | } |