weslley picone
/
APSSO_GeizieLucas
ethernet
main.cpp@0:2ebe78041ef8, 2018-12-12 (annotated)
- Committer:
- WessVP
- Date:
- Wed Dec 12 18:31:46 2018 +0000
- Revision:
- 0:2ebe78041ef8
ola
Who changed what in which revision?
User | Revision | Line number | New 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 | } |