text export
Dependencies: X_NUCLEO_IKS01A3
main.cpp
00001 /* mbed Microcontroller Library 00002 * Copyright (c) 2019 ARM Limited 00003 * SPDX-License-Identifier: Apache-2.0 00004 */ 00005 00006 #include "mbed.h" 00007 #include "BufferedSerial.h" 00008 #include "platform/mbed_thread.h" 00009 00010 BufferedSerial pc(USBTX, USBRX,115200); //Serial port for debug 00011 BufferedSerial COM2(PC_12, PD_2,115200); //Serial port COM2 00012 00013 00014 DigitalInOut MYPIO_0(PA_9); //D8 00015 DigitalInOut MYPIO_1(PC_7); //D9 00016 DigitalInOut MYPIO_2(PB_6); //D10 00017 DigitalInOut MYPIO_3(PA_7); //D11 00018 DigitalInOut MYPIO_4(PA_6); //D12 00019 00020 DigitalOut LED_FAB(PB_5); 00021 DigitalOut GREEN_LED(PA_5); 00022 DigitalIn WATER_DETECT(PB_1); //water detect 0=ok 1=Water 00023 00024 AnalogIn Analog_0(PA_0); 00025 AnalogIn Analog_1(PA_1); 00026 char strAdc[10]; 00027 00028 // Blinking rate in milliseconds 00029 #define BLINKING_RATE_MS 500 00030 00031 char cmdParams[10][10]; 00032 unsigned char cmdParamsCount = 0; 00033 00034 00035 /* Helper function for printing floats & doubles */ 00036 static char *print_double(char *str, double v, int decimalDigits = 2) 00037 { 00038 int i = 1; 00039 int intPart, fractPart; 00040 int len; 00041 char *ptr; 00042 uint8_t fracSign = 0; //0 = negativo 1=positivo 00043 00044 if(v<0){ fracSign = 0; } 00045 else{ fracSign=1; } 00046 00047 00048 /* prepare decimal digits multiplicator */ 00049 for (; decimalDigits != 0; i *= 10, decimalDigits--); 00050 00051 /* calculate integer & fractinal parts */ 00052 intPart = abs((int)v); 00053 fractPart = (int)((v - (double)(int)v) * i); 00054 fractPart = abs(fractPart); 00055 00056 /* fill in integer part */ 00057 if(fracSign == 0){ sprintf(str, "-%i.", intPart); } 00058 else{ sprintf(str, "%i.", intPart); } 00059 00060 00061 /* prepare fill in of fractional part */ 00062 len = strlen(str); 00063 ptr = &str[len]; 00064 00065 /* fill in leading fractional zeros */ 00066 for (i /= 10; i > 1; i /= 10, ptr++) { 00067 if (fractPart >= i) { 00068 break; 00069 } 00070 *ptr = '0'; 00071 } 00072 00073 /* fill in (rest of) fractional part */ 00074 sprintf(ptr, "%i", fractPart); 00075 00076 return str; 00077 } 00078 00079 00080 unsigned char splitString(char *textToSplit,const char *delimiter) 00081 { 00082 cmdParamsCount = 0; 00083 char * token = strtok(textToSplit,delimiter); 00084 00085 00086 while(token != NULL) 00087 { 00088 sprintf(cmdParams[cmdParamsCount],"%s",token); 00089 token = strtok(NULL, delimiter); 00090 cmdParamsCount++; 00091 } 00092 00093 return cmdParamsCount; 00094 } 00095 00096 bool startsWith(const char *pre, const char *str) 00097 { 00098 size_t lenpre = strlen(pre), 00099 lenstr = strlen(str); 00100 return lenstr < lenpre ? false : memcmp(pre, str, lenpre) == 0; 00101 } 00102 00103 00104 char outBuffer[255]; 00105 char inBuffer[255] = ""; 00106 char inChar[1]; 00107 char gpio_map[6] = "00000"; 00108 void execute_com1_cmd() 00109 { 00110 inBuffer[strlen(inBuffer)-1] = 0; 00111 if(startsWith("SET GPIO1_IN",inBuffer)){ MYPIO_0.input(); gpio_map[0] = '1'; } 00112 else if(startsWith("SET GPIO2_IN",inBuffer)){ MYPIO_1.input(); gpio_map[1] = '1';} 00113 else if(startsWith("SET GPIO3_IN",inBuffer)){ MYPIO_2.input(); gpio_map[2] = '1';} 00114 else if(startsWith("SET GPIO4_IN",inBuffer)){ MYPIO_3.input(); gpio_map[3] = '1';} 00115 else if(startsWith("SET GPIO5_IN",inBuffer)){ MYPIO_4.input(); gpio_map[4] = '1';} 00116 else if(startsWith("SET GPIO1_OUT",inBuffer)){ MYPIO_0.output(); gpio_map[0] = '0';} 00117 else if(startsWith("SET GPIO2_OUT",inBuffer)){ MYPIO_1.output(); gpio_map[1] = '0';} 00118 else if(startsWith("SET GPIO3_OUT",inBuffer)){ MYPIO_2.output(); gpio_map[2] = '0';} 00119 else if(startsWith("SET GPIO4_OUT",inBuffer)){ MYPIO_3.output(); gpio_map[3] = '0';} 00120 else if(startsWith("SET GPIO5_OUT",inBuffer)){ MYPIO_4.output(); gpio_map[4] = '0';} 00121 else if(startsWith("SET GPIO1 1",inBuffer)){ MYPIO_0.write(1); } 00122 else if(startsWith("SET GPIO1 0",inBuffer)){ MYPIO_0.write(0); } 00123 else if(startsWith("SET GPIO2 1",inBuffer)){ MYPIO_1.write(1); } 00124 else if(startsWith("SET GPIO2 0",inBuffer)){ MYPIO_1.write(0); } 00125 else if(startsWith("SET GPIO3 1",inBuffer)){ MYPIO_2.write(1); } 00126 else if(startsWith("SET GPIO3 0",inBuffer)){ MYPIO_2.write(0); } 00127 else if(startsWith("SET GPIO4 1",inBuffer)){ MYPIO_3.write(1); } 00128 else if(startsWith("SET GPIO4 0",inBuffer)){ MYPIO_3.write(0); } 00129 else if(startsWith("SET GPIO5 1",inBuffer)){ MYPIO_4.write(1); } 00130 else if(startsWith("SET GPIO5 0",inBuffer)){ MYPIO_4.write(0); } 00131 else if(startsWith("GET GPIO1",inBuffer)){ sprintf(outBuffer,"%d\r\n",MYPIO_0.read()); pc.write(outBuffer,strlen(outBuffer)); } 00132 else if(startsWith("GET GPIO2",inBuffer)){ sprintf(outBuffer,"%d\r\n",MYPIO_1.read()); pc.write(outBuffer,strlen(outBuffer)); } 00133 else if(startsWith("GET GPIO3",inBuffer)){ sprintf(outBuffer,"%d\r\n",MYPIO_2.read()); pc.write(outBuffer,strlen(outBuffer)); } 00134 else if(startsWith("GET GPIO4",inBuffer)){ sprintf(outBuffer,"%d\r\n",MYPIO_3.read()); pc.write(outBuffer,strlen(outBuffer)); } 00135 else if(startsWith("GET GPIO5",inBuffer)){ sprintf(outBuffer,"%d\r\n",MYPIO_4.read()); pc.write(outBuffer,strlen(outBuffer)); } 00136 else if(startsWith("GET GPIO_MAP",inBuffer)){ sprintf(outBuffer,"%s\r\n",gpio_map); pc.write(outBuffer,strlen(outBuffer)); } 00137 else if(startsWith("GET ADC0",inBuffer)){ sprintf(outBuffer,"%s\r\n",print_double(strAdc,Analog_0*3.3,4)); pc.write(outBuffer,strlen(outBuffer)); } 00138 else if(startsWith("GET ADC1",inBuffer)){ sprintf(outBuffer,"%s\r\n",print_double(strAdc,Analog_1*3.3,4)); pc.write(outBuffer,strlen(outBuffer));} 00139 else if(startsWith("SET LED 1",inBuffer)){ LED_FAB.write(1); } 00140 else if(startsWith("SET LED 0",inBuffer)){ LED_FAB.write(0); } 00141 } 00142 00143 00144 00145 int main() 00146 { 00147 // Initialise the digital pin LED1 as an output 00148 MYPIO_0.output(); MYPIO_0 = 0; 00149 MYPIO_1.output(); MYPIO_1 = 0; 00150 MYPIO_2.output(); MYPIO_2 = 0; 00151 MYPIO_3.output(); MYPIO_3 = 0; 00152 MYPIO_4.output(); MYPIO_4 = 0; 00153 LED_FAB = 1; 00154 while (true) { 00155 //led = !led; 00156 /* 00157 while(pc.readable()) 00158 { 00159 pc.read(inChar,1); 00160 if(inChar[0] == '\n') 00161 { 00162 execute_com1_cmd(); 00163 sprintf(inBuffer,""); 00164 } 00165 else{ 00166 sprintf(inBuffer,"%s%c",inBuffer,inChar[0]); 00167 } 00168 //pc.write(inBuffer,strlen(inBuffer)); 00169 } 00170 */ 00171 thread_sleep_for(1000); 00172 LED_FAB = !LED_FAB; 00173 GREEN_LED =!GREEN_LED; 00174 } 00175 }
Generated on Fri Jul 15 2022 07:01:47 by
1.7.2