Danius Kalvaitis
/
danBed_communicate
Communicate with danBed via UART
main.cpp
- Committer:
- DaniusKalv
- Date:
- 2015-03-10
- Revision:
- 2:4e81ddaec100
- Parent:
- 1:1d18a2a3e9a0
File content as of revision 2:4e81ddaec100:
#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); DigitalOut RGB(LED4); Serial pc(p28, p27); //Serial pc(USBTX, USBRX); void receive(); void extractCommand(char *buffer, int &value); int power(int pow); char temp[100]; int main() { RED = 1; GREEN = 1; BLUE = 1; RGB = 0; pc.baud(115200); pc.printf("\r\nWelcome to danBed communication v1.1!"); pc.printf("\r\nWrite 'Labas' to continue...\r\n"); GET: receive(); string labas = "Labas"; if (temp == labas) pc.printf("\r\nLabas!!!\r\n"); else{ pc.printf("\r\nTry again! Type 'Labas'...\r\n"); goto GET; } delete &labas; while(1) { receive(); char buffer[10]; int value = 0; memset(buffer, 0, sizeof(buffer)); extractCommand(buffer, value); 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(strcmp(buffer, "RED") == 0){ float tmp = ((float) (255 - value)) / 255; RED = tmp; pc.printf("\r\nRED value %i\r\n", value); } else if(strcmp(buffer, "GREEN") == 0){ float tmp = ((float) (255 - value)) / 255; GREEN = tmp; pc.printf("\r\nGREEN value %i\r\n", value); } else if(strcmp(buffer, "BLUE") == 0){ float tmp = ((float) (255 - value)) / 255; BLUE = tmp; pc.printf("\r\nBLUE value %i\r\n", value); } else if(strcmp(buffer, "P5") == 0){ P5 = value; pc.printf("\r\nP5 value %i\r\n", value); } else if(strcmp(buffer, "P6") == 0){ P6 = value; pc.printf("\r\nP6 value %i\r\n", value); } else if(strcmp(buffer, "P7") == 0){ P7 = value; pc.printf("\r\nP7 value %i\r\n", value); } else if(strcmp(buffer, "P8") == 0){ P8 = value; pc.printf("\r\nP8 value %i\r\n", value); } else if(strcmp(buffer, "P9") == 0){ P9 = value; pc.printf("\r\nP9 value %i\r\n", value); } else if(strcmp(buffer, "P10") == 0){ P10 = value; pc.printf("\r\nP10 value %i\r\n", value); } else if(strcmp(buffer, "P11") == 0){ P11 = value; pc.printf("\r\nP11 value %i\r\n", value); } else if(strcmp(buffer, "P12") == 0){ P12 = value; pc.printf("\r\nP12 value %i\r\n", value); } else if(strcmp(buffer, "P13") == 0){ P13 = value; pc.printf("\r\nP13 value %i\r\n", value); } else if(strcmp(buffer, "P14") == 0){ P14 = value; pc.printf("\r\nP14 value %i\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(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){ P27 = value; pc.printf("\r\nP27 value %i\r\n", value); } else if(strcmp(buffer, "P28") == 0){ P28 = value; pc.printf("\r\nP28 value %i\r\n", value); } else if(strcmp(buffer, "P29") == 0){ P29 = value; pc.printf("\r\nP29 value %i\r\n", value); } else if(strcmp(buffer, "P30") == 0){ P30 = value; pc.printf("\r\nP30 value %i\r\n", value); } else pc.printf("\r\nCommand not recognised!\r\n"); //else if(receiver == "RED"){ //pc.gets( } } void receive(){ memset(temp, 255, sizeof(temp)); char c; int i = 0; while(true){ if(pc.readable()){ c = pc.getc(); if (c == 13){ temp[i] = 0; break; } else temp[i] = c; pc.putc(c); i++; } } } 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; }