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.
Dependencies: EthernetInterface Servo mbed-rtos mbed
Diff: main.cpp
- Revision:
- 1:7b6dd8cc286d
- Parent:
- 0:3f38d4693786
- Child:
- 2:f3e4edf4d638
--- a/main.cpp Thu Dec 14 01:39:25 2017 +0000
+++ b/main.cpp Thu Dec 14 05:02:37 2017 +0000
@@ -1,52 +1,64 @@
#include "mbed.h"
-#include "rtos.h"
#include "EthernetInterface.h"
+#include <string.h>
-AnalogIn pot(A0);
-PwmOut motor(D7);
-PwmOut motor1(D6);
-Serial pc(USBTX, USBRX);
-EthernetInterface eth;
+#define POS_CENTRO 1750
+#define POS_MAX (POS_CENTRO + 110)
+#define POS_MIN (POS_CENTRO - 110)
+#define DIST_MIN 10
+#define DIST_MAX 56
+#define RESOL 1
+#define PERIODO 10
-Thread pot;
-Thread motor;
-Thread rede;
-Thread broadcast;
-
-const int ECHO_SERVER_PORT = 7;
-const char* ECHO_SERVER_ADDRESS = "100.43.2.200";
+const int ECHO_SERVER_PORT = 1234;
const int BROADCAST_PORT = 58083;
bool conectado = false;
-void pot_thread() {
- const int potenciometro;
+int setpoint;
+
+Thread tcp_server;
+Thread broadcast;
+EthernetInterface eth;
+
+Mutex m_dist;
+Mutex m_ref;
+
+unsigned int dist;
+//Servo Servo1(D6);
+
+void tcp_server_thread ();
+void udp_broadcast ();
+
+
+int main (void)
+{
+ //inicializa o módulo ethernet
+ eth.init();
+ eth.connect();
+
+ //Servo1.Enable(POS_CENTRO,20000);
+ // inicializa threads
+ tcp_server.start(tcp_server_thread);
+ broadcast.start(udp_broadcast);
+ //controle.start(controle_thread);
+
+ broadcast.join();
+ printf("Todas as thread iniciadas\n");
+
while (true) {
- potenciometro = pot.read();
- pc.printf("Pot Thread: %f \n", potenciometro);
-
- //Thread::wait(100);
- }
-}
-void pwm_thread() {
- motor.period(0.020);
- motor1.period(0.020);
- while (true) {
- pc.printf("PWM Thread ");
- motor.pulsewidth(pot.read());
- motor1.pulsewidth(pot.read());
- //Thread::wait(100);
+
}
}
-void lan_thread() {
-printf("\nServer IP Address is %s\n", eth.getIPAddress());
+void tcp_server_thread ()
+{
+ printf("\nServer IP Address is %s\n", eth.getIPAddress());
TCPSocketServer server;
server.bind(ECHO_SERVER_PORT);
server.listen();
-
- while (true) {
+
printf("\nWait for new connection...\n");
TCPSocketConnection client;
server.accept(client);
@@ -57,42 +69,47 @@
char buffer[256];
while (true) {
int n = client.receive(buffer, sizeof(buffer));
- if (n <= 0) break;
+
+ if (n <=1) {
+ //printf("Waiting messenger...");
+ //break;
+ }else{
// print received message to terminal
buffer[n] = '\0';
printf("Received message from Client :'%s'\n",buffer);
-
+
int pos = buffer[8] - '0';
-
+
if(pos == 1)setpoint = 20;
else if(pos == 2)setpoint = 35;
else if(pos == 3)setpoint = 50;
printf("Setpoint: %d\n", setpoint);
-
+
m_ref.lock();
// ref = atof(buffer);
sprintf (buffer, "%s", client.get_address());
m_ref.unlock();
-
+
m_ref.lock();
sprintf (buffer, "%s", client.get_address());
m_ref.unlock();
-
+
// print sending message to terminal
printf("Sending message to Client: '%s'\n",buffer);
-
+
// Echo received message back to client
//client.send_all(buffer, n);
// if (n <= 0) break;
memset(buffer,0,256);
+ }
}
- client.close();
- }
+ client.close();
}
-void udp_broadcast(){
+void udp_broadcast ()
+{
UDPSocket sock;
sock.init();
sock.set_broadcasting();
@@ -100,7 +117,7 @@
Endpoint broadcast;
broadcast.set_address("255.255.255.255", BROADCAST_PORT);
- char out_buffer[] = "diego";
+ char out_buffer[] = "Coppeti";
while (!conectado) {
printf("Broadcasting...\n");
@@ -108,20 +125,4 @@
Thread::wait(1000);
}
printf("Broadcast finalizado!\n");
- }
-
-int main() {
- pc.baud(115200);
- //inicializa o módulo ethernet
- eth.init();
- eth.connect();
-
- pot.start(pot_thread);
- motor.start(pwm_thread);
- rede.start(lan_thread);
- broadcast.start(udp_broadcast);
-
- while (true) {
- //Thread::wait(500);
- }
}
\ No newline at end of file