Danius Kalvaitis
/
danBed_communicate
Communicate with danBed via UART
Diff: main.cpp
- Revision:
- 1:1d18a2a3e9a0
- Parent:
- 0:fc1ff02f51e1
- Child:
- 2:4e81ddaec100
--- a/main.cpp Thu Feb 12 12:34:29 2015 +0000 +++ b/main.cpp Thu Feb 19 12:01:30 2015 +0000 @@ -1,6 +1,36 @@ #include "mbed.h" #include <string> +DigitalOut P5(p5); +DigitalOut P6(p6); +DigitalOut P7(p7); +DigitalOut P8(p8); +DigitalOut P9(p9); +DigitalOut P10(p10); +DigitalOut P11(p11); +DigitalOut P12(p12); +DigitalOut P13(p13); +DigitalOut P14(p14); + +AnalogIn P15(p15); +AnalogIn P16(p16); +AnalogIn P17(p17); +AnalogIn P18(p18); +AnalogIn P19(p19); +AnalogIn P20(p20); + +PwmOut P21(p21); +PwmOut P22(p22); +PwmOut P23(p23); +PwmOut P24(p24); +PwmOut P25(p25); +PwmOut P26(p26); + +DigitalOut P27(p27); +DigitalOut P28(p28); +DigitalOut P29(p29); +DigitalOut P30(p30); + PwmOut RED(LED1); PwmOut BLUE(LED2); PwmOut GREEN(LED3); @@ -10,6 +40,8 @@ Serial pc(USBTX, USBRX); void receive(); +void extractCommand(char *buffer, int &value); +int power(int pow); char temp[100]; int main() { @@ -21,7 +53,7 @@ pc.baud(115200); - pc.printf("\r\nWelcome to danBed communication v1.0!"); + pc.printf("\r\nWelcome to danBed communication v1.1!"); pc.printf("\r\nWrite 'Labas' to continue...\r\n"); GET: @@ -39,28 +71,150 @@ while(1) { receive(); - char buffer[20]; - float value; + char buffer[10]; + int value = 0; - //sscanf(temp,"%s %f", buffer, &value); - for(int j = 0; j < 10; j++) pc.printf("\r\n%i", buffer[j]); + memset(buffer, 0, sizeof(buffer)); + extractCommand(buffer, value); - if(buffer == "RGB"){ + + if(strcmp(buffer, "RGB") == 0){ RGB = value; if(value == 1) pc.printf("\r\nRGB turned ON\r\n"); else pc.printf("\r\nRGB turned OFF\r\n"); } - else if(buffer == "RED"){ - RED = value; - pc.printf("\r\nRED value %0.2f\r\n", value); + else if(strcmp(buffer, "RED") == 0){ + float tmp = ((float) value) / 255; + RED = tmp; + pc.printf("\r\nRED value %i\r\n", value); + } + else if(strcmp(buffer, "GREEN") == 0){ + float tmp = ((float) value) / 255; + GREEN = tmp; + pc.printf("\r\nGREEN value %i\r\n", value); + } + else if(strcmp(buffer, "BLUE") == 0){ + float tmp = ((float) value) / 255; + BLUE = tmp; + pc.printf("\r\nBLUE value %i\r\n", value); + } + else if(strcmp(buffer, "P5") == 0){ + float tmp = ((float) value) / 255; + P5 = tmp; + pc.printf("\r\nP5 value %i\r\n", value); + } + else if(strcmp(buffer, "P6") == 0){ + float tmp = ((float) value) / 255; + P6 = tmp; + pc.printf("\r\nP6 value %i\r\n", value); + } + else if(strcmp(buffer, "P7") == 0){ + float tmp = ((float) value) / 255; + P7 = tmp; + pc.printf("\r\nP7 value %i\r\n", value); + } + else if(strcmp(buffer, "P8") == 0){ + float tmp = ((float) value) / 255; + P8 = tmp; + pc.printf("\r\nP8 value %i\r\n", value); + } + else if(strcmp(buffer, "P9") == 0){ + float tmp = ((float) value) / 255; + P9 = tmp; + pc.printf("\r\nP9 value %i\r\n", value); + } + else if(strcmp(buffer, "P10") == 0){ + float tmp = ((float) value) / 255; + P10 = tmp; + pc.printf("\r\nP10 value %i\r\n", value); + } + else if(strcmp(buffer, "P11") == 0){ + float tmp = ((float) value) / 255; + P11 = tmp; + pc.printf("\r\nP11 value %i\r\n", value); + } + else if(strcmp(buffer, "P12") == 0){ + float tmp = ((float) value) / 255; + P12 = tmp; + pc.printf("\r\nP12 value %i\r\n", value); + } + else if(strcmp(buffer, "P13") == 0){ + float tmp = ((float) value) / 255; + P13 = tmp; + pc.printf("\r\nP13 value %i\r\n", value); + } + else if(strcmp(buffer, "P14") == 0){ + float tmp = ((float) value) / 255; + P14 = tmp; + pc.printf("\r\nP14 value %i\r\n", value); } - else if(buffer == "GREEN"){ - GREEN = value; - pc.printf("\r\nGREEN value %0.2f\r\n", value); + else if(strcmp(buffer, "P15") == 0){ + pc.printf("\r\nRead analog P15 value = %fV\r\n", (P15 * 3.3)); + } + else if(strcmp(buffer, "P16") == 0){ + pc.printf("\r\nRead analog P16 value = %fV\r\n", (P16 * 3.3)); + } + else if(strcmp(buffer, "P17") == 0){ + pc.printf("\r\nRead analog P17 value = %fV\r\n", (P17 * 3.3)); + } + else if(strcmp(buffer, "P18") == 0){ + pc.printf("\r\nRead analog P18 value = %fV\r\n", (P18 * 3.3)); + } + else if(strcmp(buffer, "P19") == 0){ + pc.printf("\r\nRead analog P19 value = %fV\r\n", (P19 * 3.3)); + } + else if(strcmp(buffer, "P20") == 0){ + pc.printf("\r\nRead analog P20 value = %fV\r\n", (P20 * 3.3)); + } + else if(strcmp(buffer, "P21") == 0){ + float tmp = ((float) value) / 255; + P21 = tmp; + pc.printf("\r\nP21 value %i\r\n", value); + } + else if(strcmp(buffer, "P22") == 0){ + float tmp = ((float) value) / 255; + P22 = tmp; + pc.printf("\r\nP22 value %i\r\n", value); + } + else if(strcmp(buffer, "P23") == 0){ + float tmp = ((float) value) / 255; + P23 = tmp; + pc.printf("\r\nP23 value %i\r\n", value); } - else if(buffer == "BLUE"){ - BLUE = value; - pc.printf("\r\nBLUE value %0.2f\r\n", value); + else if(strcmp(buffer, "P24") == 0){ + float tmp = ((float) value) / 255; + P24 = tmp; + pc.printf("\r\nP24 value %i\r\n", value); + } + else if(strcmp(buffer, "P25") == 0){ + float tmp = ((float) value) / 255; + P25 = tmp; + pc.printf("\r\nP25 value %i\r\n", value); + } + else if(strcmp(buffer, "P26") == 0){ + float tmp = ((float) value) / 255; + P26 = tmp; + pc.printf("\r\nP26 value %i\r\n", value); + } + else if(strcmp(buffer, "P27") == 0){ + float tmp = ((float) value) / 255; + P27 = tmp; + pc.printf("\r\nP27 value %i\r\n", value); + } + else if(strcmp(buffer, "P28") == 0){ + float tmp = ((float) value) / 255; + P28 = tmp; + pc.printf("\r\nP28 value %i\r\n", value); + } + else if(strcmp(buffer, "P29") == 0){ + float tmp = ((float) value) / 255; + P29 = tmp; + pc.printf("\r\nP29 value %i\r\n", value); + } + else if(strcmp(buffer, "P30") == 0){ + float tmp = ((float) value) / 255; + P30 = tmp; + pc.printf("\r\nP30 value %i\r\n", value); } else pc.printf("\r\nCommand not recognised!\r\n"); //else if(receiver == "RED"){ @@ -71,7 +225,6 @@ void receive(){ memset(temp, 255, sizeof(temp)); char c; - int i = 0; while(true){ @@ -87,3 +240,55 @@ } } } + +void extractCommand(char *buffer, int &value){ + bool inNumber = false; + int difference = 0; + int number[10]; + for(int i = 0; i < 100; i++){ + + if(temp[i] == 0){ + value = 0; + return; + } + if(inNumber){ + if(temp[i] != 62){ + number[i - difference] = temp[i] - 48; + } + else{ + value = 0; + int decimals = i - difference; + //pc.printf("\r\nNumber of decimals = %i", decimals); + for(int i = 0; i < decimals; i++){ + int temp = decimals - i - 1; + //pc.printf("\r\nTemp = %i Number = %i Power = %i", temp, number[i], power(temp)); + value = value + (number[i] * power(temp)); + //pc.printf("\r\nValue = %i", value); + } + //pc.printf("\r\nFinal value = %i", value); + return; + } + } + + if((temp[i] != 60) && !(inNumber)){ + buffer[i] = temp[i]; + } + else if(!(inNumber)){ + inNumber = true; + difference = i + 1; + //pc.printf("\r\nIn number, difference = %i", difference); + } + } +} + +int power(int pow){ + + if(pow == 0) return 1; + + int rezult = 1; + + for(int i = 1; i <= pow; i++){ + rezult *= 10; + } + return rezult; +}