ethernet

Dependencies:   LCDLib

Committer:
WessVP
Date:
Wed Dec 12 18:31:46 2018 +0000
Revision:
0:2ebe78041ef8
ola

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WessVP 0:2ebe78041ef8 1 #include "mbed.h"
WessVP 0:2ebe78041ef8 2 #include "rtos.h"
WessVP 0:2ebe78041ef8 3 //https://os.mbed.com/users/4180_1/notebook/using-a-speaker-for-audio-output/
WessVP 0:2ebe78041ef8 4 #include "EthernetInterface.h"
WessVP 0:2ebe78041ef8 5
WessVP 0:2ebe78041ef8 6
WessVP 0:2ebe78041ef8 7 const char* ECHO_SERVER_ADDRESS = "10.3.2.162";
WessVP 0:2ebe78041ef8 8 AnalogIn ain(A1);
WessVP 0:2ebe78041ef8 9 AnalogOut aout(DAC0_OUT);
WessVP 0:2ebe78041ef8 10 PwmOut speaker(D3);
WessVP 0:2ebe78041ef8 11
WessVP 0:2ebe78041ef8 12 int i,x=5000;
WessVP 0:2ebe78041ef8 13 int dist;
WessVP 0:2ebe78041ef8 14
WessVP 0:2ebe78041ef8 15 double temp,leitura,max=30;
WessVP 0:2ebe78041ef8 16
WessVP 0:2ebe78041ef8 17 EthernetInterface eth;
WessVP 0:2ebe78041ef8 18 // Threads
WessVP 0:2ebe78041ef8 19
WessVP 0:2ebe78041ef8 20 Thread thread1;
WessVP 0:2ebe78041ef8 21 Thread thread2;
WessVP 0:2ebe78041ef8 22 Thread thread3;
WessVP 0:2ebe78041ef8 23 Thread thread4;
WessVP 0:2ebe78041ef8 24
WessVP 0:2ebe78041ef8 25 // Mutex
WessVP 0:2ebe78041ef8 26 Mutex mut_temp;
WessVP 0:2ebe78041ef8 27 Mutex mut_temp_dese;
WessVP 0:2ebe78041ef8 28
WessVP 0:2ebe78041ef8 29 void temperatura(){
WessVP 0:2ebe78041ef8 30 while (true) {
WessVP 0:2ebe78041ef8 31 mut_temp.lock();
WessVP 0:2ebe78041ef8 32 leitura = ain.read();
WessVP 0:2ebe78041ef8 33 temp = (leitura*330); //
WessVP 0:2ebe78041ef8 34
WessVP 0:2ebe78041ef8 35 // temp = double((ain.read()*5)/1023)/0.01;
WessVP 0:2ebe78041ef8 36 printf("Valor calc %0.3f%\n\r", temp);
WessVP 0:2ebe78041ef8 37 printf("Valor lido %0.3f%\n\n\r", leitura);
WessVP 0:2ebe78041ef8 38 mut_temp.unlock();
WessVP 0:2ebe78041ef8 39 Thread::wait(1000);
WessVP 0:2ebe78041ef8 40 }
WessVP 0:2ebe78041ef8 41 }
WessVP 0:2ebe78041ef8 42
WessVP 0:2ebe78041ef8 43 void cooler(){
WessVP 0:2ebe78041ef8 44 while (true) {
WessVP 0:2ebe78041ef8 45 if(temp>max){
WessVP 0:2ebe78041ef8 46 printf("Liga o cooler\n\r");
WessVP 0:2ebe78041ef8 47 aout=1;
WessVP 0:2ebe78041ef8 48 }
WessVP 0:2ebe78041ef8 49 else{
WessVP 0:2ebe78041ef8 50 aout=0;
WessVP 0:2ebe78041ef8 51 printf("Desliga o cooler\n\r");
WessVP 0:2ebe78041ef8 52
WessVP 0:2ebe78041ef8 53 }
WessVP 0:2ebe78041ef8 54 Thread::wait(1000);
WessVP 0:2ebe78041ef8 55 }
WessVP 0:2ebe78041ef8 56 }
WessVP 0:2ebe78041ef8 57
WessVP 0:2ebe78041ef8 58 void speakerAlarm(){
WessVP 0:2ebe78041ef8 59 while(true){
WessVP 0:2ebe78041ef8 60 if(temp>max){
WessVP 0:2ebe78041ef8 61 printf("Liga o speaker\n\r");
WessVP 0:2ebe78041ef8 62 for (i=0; i<26; i=i+2) {
WessVP 0:2ebe78041ef8 63
WessVP 0:2ebe78041ef8 64 speaker.period(1.0/750.0);
WessVP 0:2ebe78041ef8 65 speaker = double(i)/50.0;
WessVP 0:2ebe78041ef8 66 wait(.25);
WessVP 0:2ebe78041ef8 67 speaker.period(1.0/550.0);
WessVP 0:2ebe78041ef8 68 wait(.25);
WessVP 0:2ebe78041ef8 69 }
WessVP 0:2ebe78041ef8 70 speaker=0;
WessVP 0:2ebe78041ef8 71 }
WessVP 0:2ebe78041ef8 72 else{speaker=0;}
WessVP 0:2ebe78041ef8 73 Thread::wait(1000);
WessVP 0:2ebe78041ef8 74 }
WessVP 0:2ebe78041ef8 75 }
WessVP 0:2ebe78041ef8 76 void udp_client_thread () {
WessVP 0:2ebe78041ef8 77
WessVP 0:2ebe78041ef8 78 EthernetInterface net;
WessVP 0:2ebe78041ef8 79
WessVP 0:2ebe78041ef8 80 while(1){printf("Ethernet socket example\n");
WessVP 0:2ebe78041ef8 81 if(flag==1){
WessVP 0:2ebe78041ef8 82 net.connect();
WessVP 0:2ebe78041ef8 83
WessVP 0:2ebe78041ef8 84 // Show the network address
WessVP 0:2ebe78041ef8 85 const char *ip = net.get_ip_address();
WessVP 0:2ebe78041ef8 86 printf("IP address is: %s\n", ip ? ip : "No IP");
WessVP 0:2ebe78041ef8 87
WessVP 0:2ebe78041ef8 88 // Open a socket on the network interface, and create a TCP connection to mbed.org
WessVP 0:2ebe78041ef8 89 TCPSocket socket;
WessVP 0:2ebe78041ef8 90 socket.open(&net);
WessVP 0:2ebe78041ef8 91 socket.connect("10.3.2.162", 5000);
WessVP 0:2ebe78041ef8 92
WessVP 0:2ebe78041ef8 93 char mensagem=dist+'0';
WessVP 0:2ebe78041ef8 94 char sbuffer[] = {mensagem};
WessVP 0:2ebe78041ef8 95
WessVP 0:2ebe78041ef8 96 // Send a simple http request
WessVP 0:2ebe78041ef8 97 char sbuffer[] = {mensagem};
WessVP 0:2ebe78041ef8 98 int scount = socket.send(sbuffer, sizeof sbuffer);
WessVP 0:2ebe78041ef8 99 printf("sent %d [%.*s]\n", scount, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);
WessVP 0:2ebe78041ef8 100
WessVP 0:2ebe78041ef8 101
WessVP 0:2ebe78041ef8 102 // Recieve a simple http response and print out the response line
WessVP 0:2ebe78041ef8 103 char rbuffer[64];
WessVP 0:2ebe78041ef8 104 int rcount = socket.recv(rbuffer, sizeof rbuffer);
WessVP 0:2ebe78041ef8 105 printf("recv %d [%.*s]\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);
WessVP 0:2ebe78041ef8 106
WessVP 0:2ebe78041ef8 107 if(rbuffer == "m")
WessVP 0:2ebe78041ef8 108 DigitalOut led(LED_RED);
WessVP 0:2ebe78041ef8 109 // Close the socket to return its memory and bring down the network interface
WessVP 0:2ebe78041ef8 110 socket.close();
WessVP 0:2ebe78041ef8 111
WessVP 0:2ebe78041ef8 112 // Bring down the ethernet interface
WessVP 0:2ebe78041ef8 113 net.disconnect();
WessVP 0:2ebe78041ef8 114 printf("Done\n");}
WessVP 0:2ebe78041ef8 115 }
WessVP 0:2ebe78041ef8 116 }
WessVP 0:2ebe78041ef8 117 }
WessVP 0:2ebe78041ef8 118 void digital_thread()
WessVP 0:2ebe78041ef8 119 {
WessVP 0:2ebe78041ef8 120 while (true) {
WessVP 0:2ebe78041ef8 121
WessVP 0:2ebe78041ef8 122 mut_temp.lock();
WessVP 0:2ebe78041ef8 123 leitura = ain.read();
WessVP 0:2ebe78041ef8 124 for(int i=0;i<10;i++){
WessVP 0:2ebe78041ef8 125 dist=i;
WessVP 0:2ebe78041ef8 126 flag=1;
WessVP 0:2ebe78041ef8 127 };
WessVP 0:2ebe78041ef8 128 //if(leitura != 1){
WessVP 0:2ebe78041ef8 129 //cont1 = cont2 + 1;
WessVP 0:2ebe78041ef8 130 //dist = cont1 * 19.5;
WessVP 0:2ebe78041ef8 131 //cont2 = cont2 + 1;
WessVP 0:2ebe78041ef8 132
WessVP 0:2ebe78041ef8 133 //if (dist == socket.recv(rbuffertemp, sizeof rbuffertemp) )
WessVP 0:2ebe78041ef8 134 //{socket.send(sbuffertemp, sizeof sbuffertemp)="5" ;}
WessVP 0:2ebe78041ef8 135
WessVP 0:2ebe78041ef8 136 }}
WessVP 0:2ebe78041ef8 137 int main (void)
WessVP 0:2ebe78041ef8 138 { printf("Teste inicializa \n\n");
WessVP 0:2ebe78041ef8 139 //---------Inicializa
WessVP 0:2ebe78041ef8 140 aout=0;
WessVP 0:2ebe78041ef8 141 speaker = 0;
WessVP 0:2ebe78041ef8 142 eth.connect();
WessVP 0:2ebe78041ef8 143 //---------Inicializando threads-----------
WessVP 0:2ebe78041ef8 144 thread1.start(digital_thread);
WessVP 0:2ebe78041ef8 145 thread2.start(cooler);
WessVP 0:2ebe78041ef8 146 thread3.start(speakerAlarm);
WessVP 0:2ebe78041ef8 147 thread4.start(udp_client_thread);
WessVP 0:2ebe78041ef8 148 while(true) { }
WessVP 0:2ebe78041ef8 149
WessVP 0:2ebe78041ef8 150 }