Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Controle_ventilo_ethernet_v1_2_4 by
main.cpp@12:b9ac1a23ac41, 2017-06-16 (annotated)
- Committer:
- YuK41
- Date:
- Fri Jun 16 17:41:25 2017 +0000
- Revision:
- 12:b9ac1a23ac41
- Parent:
- 11:aa1cb8df15dc
Modifications by WindShape ; - Add comments in the code; - Add functionality to get rpm by counting time between rising edges; - Add function to set a different PWM to all fans for debugging purpose
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Brutus | 0:5ca563ae05db | 1 | #include "mbed.h" |
Brutus | 0:5ca563ae05db | 2 | #include "EthernetInterface.h" |
Brutus | 0:5ca563ae05db | 3 | #include "SocketAddress.h" |
Brutus | 0:5ca563ae05db | 4 | #include "UDPSocket.h" |
Brutus | 11:aa1cb8df15dc | 5 | #include "lwip/ip.h" |
Brutus | 11:aa1cb8df15dc | 6 | #include "lwip/api.h" |
Brutus | 8:10dcb0846e2f | 7 | #include <string.h> |
Brutus | 3:6c54aa6db861 | 8 | |
YuK41 | 12:b9ac1a23ac41 | 9 | const char* ECHO_SERVER_ADDRESS = "192.168.1.148"; // addresse du PC home "192.168.1.2" sergio "169.254.61.104" or "129.194.185.33" or "192.168.137.1" liotard "10.136.134.73" |
YuK41 | 12:b9ac1a23ac41 | 10 | const int ECHO_SERVER_PORT = 1036; |
Brutus | 11:aa1cb8df15dc | 11 | //const int BROADCAST_PORT = 58083; |
Brutus | 8:10dcb0846e2f | 12 | |
Brutus | 8:10dcb0846e2f | 13 | Timer t; |
Brutus | 11:aa1cb8df15dc | 14 | Timer t1; |
Brutus | 11:aa1cb8df15dc | 15 | Timer t2; |
Brutus | 11:aa1cb8df15dc | 16 | Timer t3; |
Brutus | 8:10dcb0846e2f | 17 | DigitalOut PSU_DEAD(D8); // Kill PSU |
Brutus | 8:10dcb0846e2f | 18 | DigitalOut PSU_OFF(D9); // Power On PSU |
Brutus | 8:10dcb0846e2f | 19 | |
YuK41 | 12:b9ac1a23ac41 | 20 | volatile long int count = 0; |
Brutus | 11:aa1cb8df15dc | 21 | int tours = 5; |
Brutus | 8:10dcb0846e2f | 22 | double rpm[18] = {0.0}; |
Brutus | 8:10dcb0846e2f | 23 | bool readRpm = 0; |
Brutus | 8:10dcb0846e2f | 24 | bool readAllRpm = 0; |
Brutus | 11:aa1cb8df15dc | 25 | bool skipRead = 0; |
Brutus | 3:6c54aa6db861 | 26 | |
YuK41 | 12:b9ac1a23ac41 | 27 | // PWM PINS |
YuK41 | 12:b9ac1a23ac41 | 28 | PwmOut rearFans[9]={PB_5, PB_15, PC_8, PB_10, PB_8, PE_10, PE_14, PE_6, PB_1}; |
YuK41 | 12:b9ac1a23ac41 | 29 | PwmOut frontFans[9]= {PB_3, PB_9, PC_9, PB_11, PC_6, PD_13, PE_12, PE_5, PE_9}; |
Brutus | 3:6c54aa6db861 | 30 | |
YuK41 | 12:b9ac1a23ac41 | 31 | // F00 PINS |
YuK41 | 12:b9ac1a23ac41 | 32 | PinName counterFront[9]={PA_3,PC_3,PF_5,PF_7,PD_7,PE_4,PC_2,PB_2,PE_3}; |
Brutus | 11:aa1cb8df15dc | 33 | PinName counterRear[9]={PC_0,PF_3,PF_10,PF_9,PE_0,PG_0,PF_8,PD_11,PF_4}; |
catryus | 6:6567daa93121 | 34 | |
YuK41 | 12:b9ac1a23ac41 | 35 | // LEDS |
Brutus | 10:617194438c6b | 36 | DigitalOut greenLed(LED1); |
Brutus | 10:617194438c6b | 37 | DigitalOut bleuLed(LED2); |
Brutus | 10:617194438c6b | 38 | DigitalOut redLed(LED3); |
Brutus | 3:6c54aa6db861 | 39 | |
YuK41 | 12:b9ac1a23ac41 | 40 | // ARGUMENTS TO BE RECEIVED BY ETHERNET |
YuK41 | 12:b9ac1a23ac41 | 41 | char arg1_str[2] = {0}; |
YuK41 | 12:b9ac1a23ac41 | 42 | char arg2_str[10] = {0}; |
YuK41 | 12:b9ac1a23ac41 | 43 | char arg3_str[4] = {0}; |
YuK41 | 12:b9ac1a23ac41 | 44 | |
YuK41 | 12:b9ac1a23ac41 | 45 | int arg1 = 0; |
YuK41 | 12:b9ac1a23ac41 | 46 | int arg3 = 0; |
Brutus | 3:6c54aa6db861 | 47 | int fan[10] = {0}; |
YuK41 | 12:b9ac1a23ac41 | 48 | int fan_nb = 0; |
Brutus | 3:6c54aa6db861 | 49 | float pwm_f = 0.0; |
YuK41 | 12:b9ac1a23ac41 | 50 | |
YuK41 | 12:b9ac1a23ac41 | 51 | int arg1_len = 0; |
YuK41 | 12:b9ac1a23ac41 | 52 | int arg2_len = 0; |
YuK41 | 12:b9ac1a23ac41 | 53 | int arg3_len = 0; |
Brutus | 3:6c54aa6db861 | 54 | |
Brutus | 3:6c54aa6db861 | 55 | void splitString(char stringToSplit[]); |
Brutus | 5:cee119979b55 | 56 | int transString(char stringToTrans[]); |
Brutus | 8:10dcb0846e2f | 57 | void countFunction(); |
YuK41 | 12:b9ac1a23ac41 | 58 | |
Brutus | 3:6c54aa6db861 | 59 | |
Brutus | 3:6c54aa6db861 | 60 | int main(int argc, char *argv[]) { |
Brutus | 8:10dcb0846e2f | 61 | |
YuK41 | 12:b9ac1a23ac41 | 62 | // Turn off the PSU (Standby Mode) |
Brutus | 8:10dcb0846e2f | 63 | PSU_OFF = true; |
Brutus | 3:6c54aa6db861 | 64 | |
YuK41 | 12:b9ac1a23ac41 | 65 | // Set PWM timer frequency and set PWM to 0.0% |
Brutus | 8:10dcb0846e2f | 66 | for(int i = 0; i < 9; i++){ |
Brutus | 8:10dcb0846e2f | 67 | frontFans[i].period_ms(10); |
Brutus | 8:10dcb0846e2f | 68 | rearFans[i].period_ms(10); |
Brutus | 8:10dcb0846e2f | 69 | frontFans[i].write(0.0); |
Brutus | 8:10dcb0846e2f | 70 | rearFans[i].write(0.0); |
Brutus | 3:6c54aa6db861 | 71 | } |
YuK41 | 12:b9ac1a23ac41 | 72 | |
YuK41 | 12:b9ac1a23ac41 | 73 | // Initialize ethernet interface and UDP socket |
YuK41 | 12:b9ac1a23ac41 | 74 | EthernetInterface eth; |
YuK41 | 12:b9ac1a23ac41 | 75 | UDPSocket sock; |
Brutus | 3:6c54aa6db861 | 76 | SocketAddress echo_server; |
Brutus | 3:6c54aa6db861 | 77 | |
YuK41 | 12:b9ac1a23ac41 | 78 | // Connect to the ethernet port |
Brutus | 0:5ca563ae05db | 79 | eth.connect(); |
Brutus | 3:6c54aa6db861 | 80 | sock.open(ð); |
Brutus | 3:6c54aa6db861 | 81 | |
YuK41 | 12:b9ac1a23ac41 | 82 | // Get IP address of the board |
Brutus | 5:cee119979b55 | 83 | const char *local_ip = eth.get_ip_address(); |
YuK41 | 12:b9ac1a23ac41 | 84 | printf("\nClient IP Address is %s \n", local_ip); |
YuK41 | 12:b9ac1a23ac41 | 85 | |
YuK41 | 12:b9ac1a23ac41 | 86 | // Get the MAC address of the board |
Brutus | 5:cee119979b55 | 87 | const char *local_mac = eth.get_mac_address(); |
Brutus | 8:10dcb0846e2f | 88 | printf("Port num is %d \n", ECHO_SERVER_PORT); |
Brutus | 1:179393386b47 | 89 | |
Brutus | 1:179393386b47 | 90 | echo_server.set_ip_address(ECHO_SERVER_ADDRESS); |
Brutus | 1:179393386b47 | 91 | echo_server.set_port(ECHO_SERVER_PORT); |
Brutus | 0:5ca563ae05db | 92 | |
Brutus | 10:617194438c6b | 93 | greenLed = 1; |
Brutus | 3:6c54aa6db861 | 94 | wait(1); |
Brutus | 10:617194438c6b | 95 | greenLed = 0; |
Brutus | 3:6c54aa6db861 | 96 | wait(1); |
Brutus | 1:179393386b47 | 97 | |
YuK41 | 4:fb63da7601aa | 98 | bool ack = 0; |
Brutus | 1:179393386b47 | 99 | |
YuK41 | 4:fb63da7601aa | 100 | while(ack == 0){ |
Brutus | 5:cee119979b55 | 101 | char out_buffer[18]; |
YuK41 | 4:fb63da7601aa | 102 | snprintf(out_buffer, sizeof(out_buffer), "%s", eth.get_mac_address()); |
Brutus | 8:10dcb0846e2f | 103 | //sprintf(out_buffer, "%s", eth.get_mac_address()); |
YuK41 | 4:fb63da7601aa | 104 | sock.sendto(echo_server, out_buffer, sizeof(out_buffer)); |
YuK41 | 4:fb63da7601aa | 105 | |
Brutus | 5:cee119979b55 | 106 | printf("%s\n", out_buffer); |
YuK41 | 4:fb63da7601aa | 107 | |
YuK41 | 4:fb63da7601aa | 108 | sock.set_timeout(1000); |
YuK41 | 4:fb63da7601aa | 109 | |
YuK41 | 4:fb63da7601aa | 110 | char in_buffer[256]; |
YuK41 | 4:fb63da7601aa | 111 | int n = sock.recvfrom(&echo_server, in_buffer, sizeof(in_buffer)); |
YuK41 | 4:fb63da7601aa | 112 | in_buffer[n] = '\0'; |
YuK41 | 4:fb63da7601aa | 113 | |
YuK41 | 4:fb63da7601aa | 114 | printf("%s\n", in_buffer); |
YuK41 | 4:fb63da7601aa | 115 | |
Brutus | 5:cee119979b55 | 116 | int ack_message = transString(in_buffer); |
Brutus | 5:cee119979b55 | 117 | |
Brutus | 5:cee119979b55 | 118 | if(ack_message == 1){ |
YuK41 | 4:fb63da7601aa | 119 | ack = 1; |
YuK41 | 4:fb63da7601aa | 120 | sock.set_timeout(-1); |
YuK41 | 12:b9ac1a23ac41 | 121 | //PSU_OFF = false; // turns on the PSU if init is complet |
YuK41 | 4:fb63da7601aa | 122 | } |
YuK41 | 12:b9ac1a23ac41 | 123 | } |
YuK41 | 4:fb63da7601aa | 124 | |
YuK41 | 12:b9ac1a23ac41 | 125 | |
Brutus | 3:6c54aa6db861 | 126 | while(1){ |
YuK41 | 12:b9ac1a23ac41 | 127 | char out_buffer[] = ""; |
YuK41 | 12:b9ac1a23ac41 | 128 | printf("\n-----------------------------------\n"); |
Brutus | 3:6c54aa6db861 | 129 | sock.sendto(echo_server, out_buffer, sizeof(out_buffer)); |
Brutus | 3:6c54aa6db861 | 130 | |
YuK41 | 12:b9ac1a23ac41 | 131 | |
Brutus | 3:6c54aa6db861 | 132 | char in_buffer[256]; |
Brutus | 3:6c54aa6db861 | 133 | int n = sock.recvfrom(&echo_server, in_buffer, sizeof(in_buffer)); |
Brutus | 3:6c54aa6db861 | 134 | |
YuK41 | 12:b9ac1a23ac41 | 135 | // Add \0 as end of line character to the input message |
Brutus | 3:6c54aa6db861 | 136 | in_buffer[n] = '\0'; |
Brutus | 3:6c54aa6db861 | 137 | |
YuK41 | 12:b9ac1a23ac41 | 138 | // Split the input message and save value in FR_str, fan_str and pwm_str |
Brutus | 3:6c54aa6db861 | 139 | splitString(in_buffer); |
Brutus | 3:6c54aa6db861 | 140 | |
YuK41 | 12:b9ac1a23ac41 | 141 | // Print the order that was received |
YuK41 | 12:b9ac1a23ac41 | 142 | printf("ORDER RECEIVED : %s, %s, %s\n", arg1_str, arg2_str, arg3_str); |
YuK41 | 12:b9ac1a23ac41 | 143 | |
YuK41 | 12:b9ac1a23ac41 | 144 | switch(arg1){ |
YuK41 | 12:b9ac1a23ac41 | 145 | |
YuK41 | 12:b9ac1a23ac41 | 146 | // Set the PWM of a front fan in particular |
YuK41 | 12:b9ac1a23ac41 | 147 | case 0: |
YuK41 | 12:b9ac1a23ac41 | 148 | if(fan[0] == 0){ |
YuK41 | 12:b9ac1a23ac41 | 149 | for(int i = 0; i < 9; i++){ |
YuK41 | 12:b9ac1a23ac41 | 150 | frontFans[i].write(pwm_f); |
YuK41 | 12:b9ac1a23ac41 | 151 | } |
Brutus | 8:10dcb0846e2f | 152 | } |
YuK41 | 12:b9ac1a23ac41 | 153 | else{ |
YuK41 | 12:b9ac1a23ac41 | 154 | for(int i = 0; i < arg2_len; i++){ |
YuK41 | 12:b9ac1a23ac41 | 155 | frontFans[fan[i] - 1].write(pwm_f); |
YuK41 | 12:b9ac1a23ac41 | 156 | } |
Brutus | 8:10dcb0846e2f | 157 | } |
Brutus | 3:6c54aa6db861 | 158 | break; |
Brutus | 3:6c54aa6db861 | 159 | |
YuK41 | 12:b9ac1a23ac41 | 160 | // Set the PWM of a rear fan in particular |
YuK41 | 12:b9ac1a23ac41 | 161 | case 1: |
Brutus | 8:10dcb0846e2f | 162 | if(fan[0] == 0){ |
Brutus | 8:10dcb0846e2f | 163 | for(int i = 0; i < 9; i++){ |
Brutus | 8:10dcb0846e2f | 164 | rearFans[i].write(pwm_f); |
Brutus | 8:10dcb0846e2f | 165 | } |
Brutus | 8:10dcb0846e2f | 166 | } |
Brutus | 8:10dcb0846e2f | 167 | else{ |
YuK41 | 12:b9ac1a23ac41 | 168 | for(int i = 0; i < arg2_len; i++){ |
Brutus | 8:10dcb0846e2f | 169 | rearFans[fan[i] - 1].write(pwm_f); |
Brutus | 8:10dcb0846e2f | 170 | } |
Brutus | 3:6c54aa6db861 | 171 | } |
Brutus | 3:6c54aa6db861 | 172 | break; |
Brutus | 3:6c54aa6db861 | 173 | |
Brutus | 3:6c54aa6db861 | 174 | case 2: // both fans |
Brutus | 8:10dcb0846e2f | 175 | if(fan[0] == 0){ |
Brutus | 8:10dcb0846e2f | 176 | for(int i = 0; i < 9; i++){ |
Brutus | 8:10dcb0846e2f | 177 | frontFans[i].write(pwm_f); |
Brutus | 8:10dcb0846e2f | 178 | rearFans[i].write(pwm_f); |
Brutus | 8:10dcb0846e2f | 179 | } |
Brutus | 8:10dcb0846e2f | 180 | } |
Brutus | 8:10dcb0846e2f | 181 | else{ |
YuK41 | 12:b9ac1a23ac41 | 182 | for(int i = 0; i < arg2_len; i++){ |
Brutus | 8:10dcb0846e2f | 183 | frontFans[fan[i] - 1].write(pwm_f); |
Brutus | 8:10dcb0846e2f | 184 | rearFans[fan[i] - 1].write(pwm_f); |
Brutus | 8:10dcb0846e2f | 185 | } |
Brutus | 8:10dcb0846e2f | 186 | } |
Brutus | 8:10dcb0846e2f | 187 | break; |
Brutus | 8:10dcb0846e2f | 188 | |
Brutus | 8:10dcb0846e2f | 189 | case 3: // turns off PSU |
Brutus | 8:10dcb0846e2f | 190 | PSU_OFF = true; |
Brutus | 8:10dcb0846e2f | 191 | //char out_bufferF[] = "PSU OFF"; |
Brutus | 8:10dcb0846e2f | 192 | //sock.sendto(echo_server, out_bufferF, sizeof(out_bufferF)); |
Brutus | 8:10dcb0846e2f | 193 | break; |
Brutus | 8:10dcb0846e2f | 194 | |
Brutus | 8:10dcb0846e2f | 195 | case 4: // turns on PSU |
Brutus | 8:10dcb0846e2f | 196 | PSU_OFF = false; |
Brutus | 8:10dcb0846e2f | 197 | //char out_bufferN[] = "PSU ON"; |
Brutus | 8:10dcb0846e2f | 198 | //sock.sendto(echo_server, out_bufferN, sizeof(out_bufferN)); |
Brutus | 8:10dcb0846e2f | 199 | break; |
Brutus | 8:10dcb0846e2f | 200 | |
Brutus | 8:10dcb0846e2f | 201 | case 5: // kills the PSU |
Brutus | 8:10dcb0846e2f | 202 | PSU_DEAD = true; |
Brutus | 8:10dcb0846e2f | 203 | //char out_bufferK[] = "PSU KILLED"; |
Brutus | 8:10dcb0846e2f | 204 | //sock.sendto(echo_server, out_bufferK, sizeof(out_bufferK)); |
Brutus | 8:10dcb0846e2f | 205 | break; |
Brutus | 8:10dcb0846e2f | 206 | |
Brutus | 8:10dcb0846e2f | 207 | case 6: // revives the PSU |
Brutus | 8:10dcb0846e2f | 208 | PSU_DEAD = false; |
Brutus | 8:10dcb0846e2f | 209 | //char out_bufferR[] = "PSU REVIVED"; |
Brutus | 8:10dcb0846e2f | 210 | //sock.sendto(echo_server, out_bufferR, sizeof(out_bufferR)); |
Brutus | 8:10dcb0846e2f | 211 | break; |
Brutus | 8:10dcb0846e2f | 212 | |
YuK41 | 12:b9ac1a23ac41 | 213 | // Display F00 for front fans |
YuK41 | 12:b9ac1a23ac41 | 214 | case 20:{ |
YuK41 | 12:b9ac1a23ac41 | 215 | for (int i =0;i<9;i++){ |
YuK41 | 12:b9ac1a23ac41 | 216 | InterruptIn rpmIn1(counterFront[i]); |
Brutus | 11:aa1cb8df15dc | 217 | t1.reset(); |
YuK41 | 12:b9ac1a23ac41 | 218 | count = 0; |
YuK41 | 12:b9ac1a23ac41 | 219 | rpmIn1.rise(&countFunction); |
YuK41 | 12:b9ac1a23ac41 | 220 | int c = 0; |
YuK41 | 12:b9ac1a23ac41 | 221 | while(count<=4 && c<1000){ |
YuK41 | 12:b9ac1a23ac41 | 222 | c++; |
Brutus | 11:aa1cb8df15dc | 223 | } |
Brutus | 11:aa1cb8df15dc | 224 | rpmIn1.rise(NULL); |
YuK41 | 12:b9ac1a23ac41 | 225 | double rpm1 = 60*1000.0/(t1.read_ms()/2.0); |
YuK41 | 12:b9ac1a23ac41 | 226 | if (i%3==0) |
YuK41 | 12:b9ac1a23ac41 | 227 | printf("\n"); |
YuK41 | 12:b9ac1a23ac41 | 228 | printf(" %lf ", rpm1); |
YuK41 | 12:b9ac1a23ac41 | 229 | } |
YuK41 | 12:b9ac1a23ac41 | 230 | printf("\n"); |
YuK41 | 12:b9ac1a23ac41 | 231 | } |
YuK41 | 12:b9ac1a23ac41 | 232 | break; |
YuK41 | 12:b9ac1a23ac41 | 233 | |
YuK41 | 12:b9ac1a23ac41 | 234 | // Display F00 for rear fans |
YuK41 | 12:b9ac1a23ac41 | 235 | case 21:{ |
YuK41 | 12:b9ac1a23ac41 | 236 | for (int i =0;i<9;i++){ |
YuK41 | 12:b9ac1a23ac41 | 237 | InterruptIn rpmIn1(counterRear[i]); |
YuK41 | 12:b9ac1a23ac41 | 238 | t1.reset(); |
YuK41 | 12:b9ac1a23ac41 | 239 | count = 0; |
YuK41 | 12:b9ac1a23ac41 | 240 | rpmIn1.rise(&countFunction); |
YuK41 | 12:b9ac1a23ac41 | 241 | int c = 0; |
YuK41 | 12:b9ac1a23ac41 | 242 | while(count<=4 && c<1000){ |
YuK41 | 12:b9ac1a23ac41 | 243 | c++; |
Brutus | 11:aa1cb8df15dc | 244 | } |
YuK41 | 12:b9ac1a23ac41 | 245 | rpmIn1.rise(NULL); |
YuK41 | 12:b9ac1a23ac41 | 246 | double rpm1 = 60*1000.0/(t1.read_ms()/2.0); |
YuK41 | 12:b9ac1a23ac41 | 247 | if (i%3==0) |
YuK41 | 12:b9ac1a23ac41 | 248 | printf("\n"); |
YuK41 | 12:b9ac1a23ac41 | 249 | printf(" %lf ", rpm1); |
YuK41 | 12:b9ac1a23ac41 | 250 | } |
YuK41 | 12:b9ac1a23ac41 | 251 | printf("\n"); |
YuK41 | 12:b9ac1a23ac41 | 252 | |
YuK41 | 12:b9ac1a23ac41 | 253 | } |
YuK41 | 12:b9ac1a23ac41 | 254 | break; |
YuK41 | 12:b9ac1a23ac41 | 255 | |
YuK41 | 12:b9ac1a23ac41 | 256 | // Set a diffenrent PWM value to all fans from 8% to 32% for test purpose |
YuK41 | 12:b9ac1a23ac41 | 257 | case 30:{ |
YuK41 | 12:b9ac1a23ac41 | 258 | int pwm_17 = 8; |
YuK41 | 12:b9ac1a23ac41 | 259 | for(int i = 0; i < 9; i++){ |
YuK41 | 12:b9ac1a23ac41 | 260 | float p=(pwm_17+2*i)/100.0; |
YuK41 | 12:b9ac1a23ac41 | 261 | frontFans[i].write(p); |
YuK41 | 12:b9ac1a23ac41 | 262 | rearFans[i].write(p); |
Brutus | 8:10dcb0846e2f | 263 | } |
Brutus | 8:10dcb0846e2f | 264 | } |
Brutus | 8:10dcb0846e2f | 265 | break; |
Brutus | 8:10dcb0846e2f | 266 | |
Brutus | 8:10dcb0846e2f | 267 | case 99:{ |
Brutus | 8:10dcb0846e2f | 268 | |
Brutus | 3:6c54aa6db861 | 269 | } |
Brutus | 3:6c54aa6db861 | 270 | break; |
Brutus | 3:6c54aa6db861 | 271 | |
Brutus | 3:6c54aa6db861 | 272 | default: |
Brutus | 8:10dcb0846e2f | 273 | for(int i = 0; i < 9; i++){ |
Brutus | 8:10dcb0846e2f | 274 | frontFans[i].write(0.0); |
Brutus | 8:10dcb0846e2f | 275 | rearFans[i].write(0.0); |
Brutus | 8:10dcb0846e2f | 276 | } |
Brutus | 3:6c54aa6db861 | 277 | } |
Brutus | 8:10dcb0846e2f | 278 | for(int i = 0; i <= 2; i++){ |
YuK41 | 12:b9ac1a23ac41 | 279 | arg1_str[i] = '\0'; // "resets" the arg1_str |
Brutus | 8:10dcb0846e2f | 280 | } |
Brutus | 8:10dcb0846e2f | 281 | for(int i = 0; i <= 4; i++){ |
YuK41 | 12:b9ac1a23ac41 | 282 | arg3_str[i] = '\0'; // "resets" the arg3_str |
Brutus | 8:10dcb0846e2f | 283 | } |
Brutus | 3:6c54aa6db861 | 284 | } |
Brutus | 1:179393386b47 | 285 | } |
Brutus | 1:179393386b47 | 286 | |
Brutus | 3:6c54aa6db861 | 287 | void splitString(char stringToSplit[]){ |
Brutus | 3:6c54aa6db861 | 288 | char *comma_1 = strchr(stringToSplit, ',') + 1; |
Brutus | 3:6c54aa6db861 | 289 | char *comma_2 = strchr(comma_1, ',') + 1; |
Brutus | 3:6c54aa6db861 | 290 | char *comma_3 = strchr(comma_3, '\0'); |
Brutus | 3:6c54aa6db861 | 291 | |
YuK41 | 12:b9ac1a23ac41 | 292 | arg1_len = comma_1 - stringToSplit - 1; |
YuK41 | 12:b9ac1a23ac41 | 293 | arg2_len = comma_2 - comma_1 - 1; |
YuK41 | 12:b9ac1a23ac41 | 294 | arg3_len = comma_3 - comma_2; |
Brutus | 3:6c54aa6db861 | 295 | |
YuK41 | 12:b9ac1a23ac41 | 296 | // Argument 1 |
YuK41 | 12:b9ac1a23ac41 | 297 | strncpy(arg1_str, stringToSplit, arg1_len); |
YuK41 | 12:b9ac1a23ac41 | 298 | arg1 = strtol(arg1_str, NULL, 10); |
YuK41 | 12:b9ac1a23ac41 | 299 | |
YuK41 | 12:b9ac1a23ac41 | 300 | // Argument 2 |
YuK41 | 12:b9ac1a23ac41 | 301 | strncpy(arg2_str, comma_1, arg2_len); |
YuK41 | 12:b9ac1a23ac41 | 302 | for(int i = 0; i < arg2_len; i++){ |
YuK41 | 12:b9ac1a23ac41 | 303 | fan[i] = arg2_str[i] - '0'; |
Brutus | 3:6c54aa6db861 | 304 | } |
Brutus | 3:6c54aa6db861 | 305 | |
YuK41 | 12:b9ac1a23ac41 | 306 | // Save the last number of arg2 into fan_nb as int |
YuK41 | 12:b9ac1a23ac41 | 307 | for(int i = 0; i<arg2_len; i++){ |
YuK41 | 12:b9ac1a23ac41 | 308 | fan_nb = arg2_str[i] - '0'; |
YuK41 | 12:b9ac1a23ac41 | 309 | } |
YuK41 | 12:b9ac1a23ac41 | 310 | |
YuK41 | 12:b9ac1a23ac41 | 311 | // Argument 3 |
YuK41 | 12:b9ac1a23ac41 | 312 | strncpy(arg3_str, comma_2, arg3_len); |
YuK41 | 12:b9ac1a23ac41 | 313 | double arg3 = strtod(arg3_str, NULL); |
YuK41 | 12:b9ac1a23ac41 | 314 | pwm_f = arg3/100.0; |
Brutus | 5:cee119979b55 | 315 | } |
Brutus | 5:cee119979b55 | 316 | |
Brutus | 5:cee119979b55 | 317 | int transString(char stringToTrans[]){ |
Brutus | 5:cee119979b55 | 318 | char in_str[2] = {0}; |
Brutus | 5:cee119979b55 | 319 | strncpy(in_str, stringToTrans,1); |
Brutus | 8:10dcb0846e2f | 320 | return atoi(in_str); |
Brutus | 8:10dcb0846e2f | 321 | } |
Brutus | 8:10dcb0846e2f | 322 | |
Brutus | 8:10dcb0846e2f | 323 | void countFunction(){ |
YuK41 | 12:b9ac1a23ac41 | 324 | // Start timer when the first rising edge is reached |
YuK41 | 12:b9ac1a23ac41 | 325 | if (count == 0) |
YuK41 | 12:b9ac1a23ac41 | 326 | t1.start(); |
YuK41 | 12:b9ac1a23ac41 | 327 | |
YuK41 | 12:b9ac1a23ac41 | 328 | // Stop timer when the fourth rising edge is reached (2 rotation) |
YuK41 | 12:b9ac1a23ac41 | 329 | if (count == 4) |
YuK41 | 12:b9ac1a23ac41 | 330 | t1.stop(); |
YuK41 | 12:b9ac1a23ac41 | 331 | |
YuK41 | 12:b9ac1a23ac41 | 332 | count++; |
Brutus | 8:10dcb0846e2f | 333 | } |
Brutus | 8:10dcb0846e2f | 334 |