ContrllerSoftware

Dependencies:   mbed

Fork of XBee_write by Alex Louden

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?

UserRevisionLine numberNew 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 }