Windshape control / Mbed OS Controle_ventilo_ethernet_v1_2_4

Fork of Controle_ventilo_ethernet_v1_2_4 by Sergio Márquez

Committer:
Brutus
Date:
Thu May 18 23:43:30 2017 +0000
Revision:
7:3bdc6538ef40
Parent:
6:6567daa93121
Child:
8:10dcb0846e2f
derniere version avec l'init qui fonctionne, mais fan 5 rear qui tourne pas

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Brutus 0:5ca563ae05db 1 #include "mbed.h"
Brutus 0:5ca563ae05db 2 #include "EthernetInterface.h"
Brutus 0:5ca563ae05db 3 #include "Ethernet.h"
Brutus 0:5ca563ae05db 4
Brutus 0:5ca563ae05db 5 #include "SocketAddress.h"
Brutus 0:5ca563ae05db 6 #include "Socket.h"
Brutus 0:5ca563ae05db 7 #include "UDPSocket.h"
Brutus 0:5ca563ae05db 8
Brutus 3:6c54aa6db861 9 #include <string.h>
Brutus 3:6c54aa6db861 10 //using namespace std;
Brutus 3:6c54aa6db861 11
Brutus 7:3bdc6538ef40 12 const char* ECHO_SERVER_ADDRESS = "131.215.118.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"
Brutus 3:6c54aa6db861 13 //#define IP "10.136.134.100"
Brutus 3:6c54aa6db861 14 //#define GATEWAY "10.136.132.1" //"129.194.184.1"
Brutus 3:6c54aa6db861 15 //#define MASK "255.255.252.0"
catryus 6:6567daa93121 16 const int ECHO_SERVER_PORT = 1039;
Brutus 3:6c54aa6db861 17
Brutus 3:6c54aa6db861 18 // Front fans
Brutus 3:6c54aa6db861 19 //PwmOut frontFans[] = {(PB_11), (PE_14), (PE_9), (PB_3), (PB_15), (PB_6), (PB_13), (PE_5), (PC_8)}; // PE_11 also possible for front fan n°5
Brutus 3:6c54aa6db861 20
Brutus 3:6c54aa6db861 21 // Rear fans
Brutus 3:6c54aa6db861 22 //PwmOut rearFans[] = {(PB_10), (PE_12), (PE_10), (PE_11), (PC_6), (PD_13), (PC_7), (PE_6), (PC_9)}; // PE_10 also possible for rear fans n°5
Brutus 3:6c54aa6db861 23
catryus 6:6567daa93121 24 PwmOut frontFans[9]={PB_11,PE_14,PB_8,PB_3,PB_15,PB_6,PB_13,PE_5,PC_8};
catryus 6:6567daa93121 25 PwmOut rearFans[9]={PB_10,PE_12,PB_9,PE_11,PC_6,PD_13,PC_7,PE_6,PC_9};
catryus 6:6567daa93121 26
catryus 6:6567daa93121 27
catryus 6:6567daa93121 28 //PwmOut frontFans[9]={PB_11,PE_14,PE_9,PB_3,PB_15,PB_6,PB_13,PE_5,PC_8};
catryus 6:6567daa93121 29 //PwmOut rearFans[9]={PB_10,PE_12,PE_10,PE_11,PC_6,PD_13,PC_7,PE_6,PC_9};
Brutus 3:6c54aa6db861 30
Brutus 3:6c54aa6db861 31 DigitalOut fantest(LED1);
Brutus 3:6c54aa6db861 32
Brutus 3:6c54aa6db861 33 // Receive string
Brutus 3:6c54aa6db861 34 char FR_str[2] = {0};
Brutus 3:6c54aa6db861 35 char fan_str[10] = {0};
Brutus 3:6c54aa6db861 36 char pwm_str[4] = {0};
Brutus 3:6c54aa6db861 37 int FR = 0;
Brutus 3:6c54aa6db861 38 int fan[10] = {0};
Brutus 3:6c54aa6db861 39 float pwm_f = 0.0;
Brutus 3:6c54aa6db861 40 int FR_len = 0;
Brutus 3:6c54aa6db861 41 int fan_len = 0;
Brutus 3:6c54aa6db861 42 int pwm_len = 0;
Brutus 3:6c54aa6db861 43
Brutus 3:6c54aa6db861 44 void splitString(char stringToSplit[]);
Brutus 5:cee119979b55 45 int transString(char stringToTrans[]);
Brutus 3:6c54aa6db861 46
Brutus 3:6c54aa6db861 47 int main(int argc, char *argv[]) {
Brutus 3:6c54aa6db861 48
Brutus 3:6c54aa6db861 49 for(int j = 0; j < 9; j++){
Brutus 3:6c54aa6db861 50 frontFans[j].period_ms(10);
Brutus 3:6c54aa6db861 51 rearFans[j].period_ms(10);
Brutus 3:6c54aa6db861 52 frontFans[j].write(0.0);
Brutus 3:6c54aa6db861 53 rearFans[j].write(0.0);
Brutus 3:6c54aa6db861 54 }
Brutus 3:6c54aa6db861 55
Brutus 3:6c54aa6db861 56 /*fantest.period_ms(10);
Brutus 3:6c54aa6db861 57 fantest.write(0.1);*/
Brutus 3:6c54aa6db861 58
Brutus 3:6c54aa6db861 59 EthernetInterface eth; // init interface ethernet de la carte
Brutus 3:6c54aa6db861 60 UDPSocket sock; // init le socket en UDP de la carte
Brutus 3:6c54aa6db861 61 SocketAddress echo_server;
Brutus 3:6c54aa6db861 62
Brutus 0:5ca563ae05db 63 eth.connect();
Brutus 3:6c54aa6db861 64 sock.open(&eth);
Brutus 3:6c54aa6db861 65
Brutus 3:6c54aa6db861 66 //eth.set_network(IP,MASK,GATEWAY);
Brutus 3:6c54aa6db861 67
Brutus 5:cee119979b55 68 const char *local_ip = eth.get_ip_address();
Brutus 5:cee119979b55 69 const char *local_mac = eth.get_mac_address();
Brutus 5:cee119979b55 70
Brutus 5:cee119979b55 71 printf("\nClient IP Address is %s \n", local_ip);
Brutus 1:179393386b47 72
Brutus 1:179393386b47 73 echo_server.set_ip_address(ECHO_SERVER_ADDRESS);
Brutus 1:179393386b47 74 echo_server.set_port(ECHO_SERVER_PORT);
Brutus 0:5ca563ae05db 75
Brutus 3:6c54aa6db861 76 fantest = 1;
Brutus 3:6c54aa6db861 77 wait(1);
Brutus 3:6c54aa6db861 78 fantest = 0;
Brutus 3:6c54aa6db861 79 wait(1);
Brutus 1:179393386b47 80
YuK41 4:fb63da7601aa 81 bool ack = 0;
Brutus 3:6c54aa6db861 82 //wait(10);
Brutus 1:179393386b47 83
YuK41 4:fb63da7601aa 84 while(ack == 0){
Brutus 5:cee119979b55 85 char out_buffer[18];
YuK41 4:fb63da7601aa 86 snprintf(out_buffer, sizeof(out_buffer), "%s", eth.get_mac_address());
YuK41 4:fb63da7601aa 87 sock.sendto(echo_server, out_buffer, sizeof(out_buffer));
YuK41 4:fb63da7601aa 88
Brutus 5:cee119979b55 89 printf("%s\n", out_buffer);
YuK41 4:fb63da7601aa 90
YuK41 4:fb63da7601aa 91 sock.set_timeout(1000);
YuK41 4:fb63da7601aa 92
YuK41 4:fb63da7601aa 93 char in_buffer[256];
YuK41 4:fb63da7601aa 94 int n = sock.recvfrom(&echo_server, in_buffer, sizeof(in_buffer));
YuK41 4:fb63da7601aa 95 in_buffer[n] = '\0';
YuK41 4:fb63da7601aa 96
YuK41 4:fb63da7601aa 97 printf("%s\n", in_buffer);
YuK41 4:fb63da7601aa 98
Brutus 5:cee119979b55 99 int ack_message = transString(in_buffer);
Brutus 5:cee119979b55 100
Brutus 5:cee119979b55 101 if(ack_message == 1){
YuK41 4:fb63da7601aa 102 ack = 1;
YuK41 4:fb63da7601aa 103 sock.set_timeout(-1);
YuK41 4:fb63da7601aa 104 }
YuK41 4:fb63da7601aa 105 }
YuK41 4:fb63da7601aa 106
YuK41 4:fb63da7601aa 107 //printf(out_buffer);
YuK41 4:fb63da7601aa 108
Brutus 3:6c54aa6db861 109 while(1){
Brutus 3:6c54aa6db861 110 char out_buffer[] = "Envoyez moi une vitesse plz !";
Brutus 3:6c54aa6db861 111 printf("Sending message '%s' to server (%s)\n",out_buffer,ECHO_SERVER_ADDRESS);
Brutus 3:6c54aa6db861 112 sock.sendto(echo_server, out_buffer, sizeof(out_buffer));
Brutus 3:6c54aa6db861 113
Brutus 3:6c54aa6db861 114 char in_buffer[256];
Brutus 3:6c54aa6db861 115 int n = sock.recvfrom(&echo_server, in_buffer, sizeof(in_buffer));
Brutus 3:6c54aa6db861 116
Brutus 3:6c54aa6db861 117 in_buffer[n] = '\0';
Brutus 3:6c54aa6db861 118
Brutus 3:6c54aa6db861 119 printf("%s\n", in_buffer);
Brutus 3:6c54aa6db861 120
Brutus 3:6c54aa6db861 121 //int buff_in = atoi(in_buffer);
Brutus 3:6c54aa6db861 122 splitString(in_buffer);
Brutus 3:6c54aa6db861 123
Brutus 3:6c54aa6db861 124 printf("%d\n%d\n%lf\n", FR, fan[2], pwm_f);
Brutus 3:6c54aa6db861 125
Brutus 3:6c54aa6db861 126 //wait(10);
Brutus 3:6c54aa6db861 127
Brutus 3:6c54aa6db861 128 switch(FR){
Brutus 3:6c54aa6db861 129 case 0: // front fans
Brutus 3:6c54aa6db861 130 for(int i = 0; i < fan_len; i++){
Brutus 3:6c54aa6db861 131 frontFans[fan[i] - 1].write(pwm_f);
Brutus 3:6c54aa6db861 132 }
Brutus 3:6c54aa6db861 133 break;
Brutus 3:6c54aa6db861 134
Brutus 3:6c54aa6db861 135 case 1: // rear fans
Brutus 3:6c54aa6db861 136 for(int i = 0; i < fan_len; i++){
Brutus 3:6c54aa6db861 137 rearFans[fan[i] - 1].write(pwm_f);
Brutus 3:6c54aa6db861 138 }
Brutus 3:6c54aa6db861 139 break;
Brutus 3:6c54aa6db861 140
Brutus 3:6c54aa6db861 141 case 2: // both fans
Brutus 3:6c54aa6db861 142 for(int i = 0; i < fan_len; i++){
Brutus 3:6c54aa6db861 143 frontFans[fan[i] - 1].write(pwm_f);
Brutus 3:6c54aa6db861 144 rearFans[fan[i] - 1].write(pwm_f);
Brutus 3:6c54aa6db861 145 }
Brutus 3:6c54aa6db861 146 break;
Brutus 3:6c54aa6db861 147
Brutus 3:6c54aa6db861 148 default:
Brutus 3:6c54aa6db861 149 for(int j = 0; j < 9; j++){
Brutus 3:6c54aa6db861 150 frontFans[j].write(0.0);
Brutus 3:6c54aa6db861 151 rearFans[j].write(0.0);
Brutus 3:6c54aa6db861 152 }
Brutus 3:6c54aa6db861 153 }
Brutus 3:6c54aa6db861 154
Brutus 3:6c54aa6db861 155 //wait(5);
Brutus 3:6c54aa6db861 156 }
Brutus 1:179393386b47 157 }
Brutus 1:179393386b47 158
Brutus 3:6c54aa6db861 159 void splitString(char stringToSplit[]){
Brutus 3:6c54aa6db861 160 char *comma_1 = strchr(stringToSplit, ',') + 1;
Brutus 3:6c54aa6db861 161 char *comma_2 = strchr(comma_1, ',') + 1;
Brutus 3:6c54aa6db861 162 char *comma_3 = strchr(comma_3, '\0');
Brutus 3:6c54aa6db861 163
Brutus 3:6c54aa6db861 164 FR_len = comma_1 - stringToSplit - 1;
Brutus 3:6c54aa6db861 165 fan_len = comma_2 - comma_1 - 1;
Brutus 3:6c54aa6db861 166 pwm_len = comma_3 - comma_2;
Brutus 3:6c54aa6db861 167
Brutus 3:6c54aa6db861 168 strncpy(FR_str, stringToSplit, 1);
Brutus 3:6c54aa6db861 169 FR = atoi(FR_str);
Brutus 3:6c54aa6db861 170
Brutus 3:6c54aa6db861 171 strncpy(fan_str, comma_1, fan_len);
Brutus 3:6c54aa6db861 172 for(int i = 0; i < fan_len; i++){
Brutus 3:6c54aa6db861 173 fan[i] = fan_str[i] - '0';
Brutus 3:6c54aa6db861 174 }
Brutus 3:6c54aa6db861 175
Brutus 3:6c54aa6db861 176 strncpy(pwm_str, comma_2, pwm_len);
Brutus 3:6c54aa6db861 177 int pwm = atoi(pwm_str);
Brutus 3:6c54aa6db861 178 pwm_f = (float)pwm/100.0;
Brutus 5:cee119979b55 179 }
Brutus 5:cee119979b55 180
Brutus 5:cee119979b55 181 int transString(char stringToTrans[]){
Brutus 5:cee119979b55 182 char in_str[2] = {0};
Brutus 5:cee119979b55 183 strncpy(in_str, stringToTrans,1);
Brutus 5:cee119979b55 184 int in = atoi(in_str);
Brutus 5:cee119979b55 185 return in;
Brutus 5:cee119979b55 186 }