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 mbed-rtos mbed
Fork of CNC_CONTROLLER by
Revision 2:835c883d81b0, committed 2017-12-15
- Comitter:
- kevencastro7
- Date:
- Fri Dec 15 19:40:41 2017 +0000
- Parent:
- 1:ef18c260ce02
- Commit message:
- This is a remote control tester, it uses a CNC, Ethernet Communication with a JAVAFX interface and a PLC in order to control some valves.
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Clp.cpp Fri Dec 15 19:40:41 2017 +0000
@@ -0,0 +1,39 @@
+#include "Clp.h"
+
+#define HIGH 1
+#define LOW 0
+#define DELAY 0.5
+
+
+Clp::Clp(PinName _receiverCnc,PinName _transmitterCnc,PinName _receiverElevator,PinName _transmitterElevatorEnable,PinName _transmitterElevatorSign){
+ receiverCnc = new DigitalIn(_receiverCnc);
+ transmitterCnc = new DigitalOut(_transmitterCnc);
+ receiverElevator = new DigitalIn(_receiverElevator);
+ transmitterElevatorEnable = new DigitalOut(_transmitterElevatorEnable);
+ transmitterElevatorSign = new DigitalOut(_transmitterElevatorSign);
+
+}
+
+int Clp::ReceiveCnc(){
+ return receiverCnc->read();
+}
+
+void Clp::TransmitCnc(){
+ transmitterCnc->write(HIGH);
+ wait(DELAY);
+ transmitterCnc->write(LOW);
+}
+
+int Clp::ReceiveElevator(){
+ return receiverElevator->read();
+}
+
+void Clp::TransmitElevator(int signal){
+ transmitterElevatorSign->write(signal);
+ wait(DELAY);
+ transmitterElevatorEnable->write(HIGH);
+ wait(DELAY);
+ transmitterElevatorEnable->write(LOW);
+ transmitterElevatorSign->write(LOW);
+
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Clp.h Fri Dec 15 19:40:41 2017 +0000
@@ -0,0 +1,21 @@
+#ifndef CLP_H
+#define CLP_H
+#include "mbed.h"
+
+
+class Clp{
+ public:
+ Clp(PinName,PinName,PinName,PinName,PinName);
+ int ReceiveCnc();
+ void TransmitCnc();
+ int ReceiveElevator();
+ void TransmitElevator(int);
+ private:
+ DigitalIn *receiverCnc;
+ DigitalOut *transmitterCnc;
+ DigitalIn *receiverElevator;
+ DigitalOut *transmitterElevatorEnable;
+ DigitalOut *transmitterElevatorSign;
+
+};
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Cnc.cpp Fri Dec 15 19:40:41 2017 +0000
@@ -0,0 +1,25 @@
+#include "Cnc.h"
+#define DELAY 0.075
+
+Cnc::Cnc(EixoController* eixoX, EixoController* eixoY, PinName pinValve, PCF8574* pcf, int sensorUp, int sensorDown) : eixoZ(pinValve) {
+ this->eixoX = eixoX;
+ this->eixoY = eixoY;
+ this->pcf = pcf;
+ this->sensorUp = sensorUp;
+ this->sensorDown = sensorDown;
+ debug = new Debug();
+}
+
+void Cnc::goToPosition(float posX, int dirX, float posY, int dirY, bool enable){
+ eixoX->goToPosition(posX, dirX);
+ eixoY->goToPosition(posY, dirY);
+ /*if (enable){
+ while(!pcf->read(sensorDown))eixoZ = 1;
+ eixoZ = 0;
+ }*/
+ if (enable){
+ eixoZ = 1;
+ wait(DELAY);
+ eixoZ = 0;
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Cnc.h Fri Dec 15 19:40:41 2017 +0000
@@ -0,0 +1,27 @@
+#ifndef CNC_H
+#define CNC_H
+
+#include "mbed.h"
+#include "Debug.h"
+#include "Stepp.h"
+#include "EixoController.h"
+#include "EixoMonitoring.h"
+#include "PCF8574.h"
+
+class Cnc{
+
+ public:
+ Cnc(EixoController*, EixoController*, PinName,PCF8574*,int,int );
+ void goToPosition(float, int, float, int , bool);
+
+ private:
+ PCF8574* pcf;
+ int sensorUp;
+ int sensorDown;
+ EixoController* eixoX;
+ EixoController* eixoY;
+ DigitalOut eixoZ;
+ Debug* debug;
+};
+
+#endif
--- a/EixoController.cpp Mon Sep 18 13:05:47 2017 +0000
+++ b/EixoController.cpp Fri Dec 15 19:40:41 2017 +0000
@@ -1,22 +1,23 @@
#include "EixoController.h"
-EixoController::EixoController(float totalPathPulse, float totalPathCm, Stepp *motor, PinName pinOrigin, PinName pinEnd): swOrigin(pinOrigin), swEnd(pinEnd) {
-
+EixoController::EixoController(float totalPathPulse, float totalPathCm, Stepp *motor,PCF8574 *pcf, int swOrigin, int swEnd){
+ this->pcf = pcf;
this->totalPathPulse = totalPathPulse;
this->totalPathCm = totalPathCm;
this->motor = motor;
-
- debug = new Debug();
+ this->swOrigin = swOrigin;
+ this->swEnd = swEnd;
+ debug = new Debug();
}
-bool EixoController:: goToOrigem(DigitalIn swOrigem, int dirOrigem){
- if(swOrigem == 1){ // já está na origem ?
+bool EixoController:: goToOrigem(int dirOrigem){
+ if(this->pcf->read(this->swOrigin) == 1){ // já está na origem ?
return true;
}
else{ // vá para a origem
- return motor->findLimits(30000, dirOrigem, swOrigem);
+ return motor->findLimits(30000, dirOrigem, this->pcf,this->swOrigin);
}
}
--- a/EixoController.h Mon Sep 18 13:05:47 2017 +0000
+++ b/EixoController.h Fri Dec 15 19:40:41 2017 +0000
@@ -4,13 +4,15 @@
#include "Debug.h"
#include "Stepp.h"
#include "mbed.h"
+#include "PCF8574.h"
+
class EixoController{
public:
- EixoController(float, float, Stepp*, PinName, PinName );
- bool goToOrigem(DigitalIn, int);
+ EixoController(float, float, Stepp*,PCF8574*, int, int );
+ bool goToOrigem(int);
void calibragem(int);
int conversao(int);
void goToPosition(int, int );
@@ -19,8 +21,9 @@
int totalPathPulse;
int totalPathCm;
- DigitalIn swOrigin;
- DigitalIn swEnd;
+ PCF8574* pcf;
+ int swOrigin;
+ int swEnd;
Stepp* motor ;
Debug* debug;
};
--- a/EixoMonitoring.cpp Mon Sep 18 13:05:47 2017 +0000
+++ b/EixoMonitoring.cpp Fri Dec 15 19:40:41 2017 +0000
@@ -4,17 +4,15 @@
bool EixoMonitoring::isCalibrated = false;
-EixoMonitoring::EixoMonitoring(PinName pinOrigin, PinName pinEnd) {
-
+EixoMonitoring::EixoMonitoring(PCF8574* pcf,int sensor_Origin, int sensor_End ) {
+ this->pcf = pcf;
this->stopMoviment = false;
this->stopMonitoring = false;
this->delayTimer = 700;
- PinName pin_End = pinEnd;
- PinName pin_Origin = pinOrigin;
+ this->sensor_Origin = sensor_Origin;
+ this->sensor_End = sensor_End;
- sensor_End = new DigitalIn(pin_End);
sensorInput_End = 0;
- sensor_Origin = new DigitalIn(pin_Origin);
sensorInput_Origin = 0;
debug = new Debug();
@@ -36,7 +34,7 @@
void EixoMonitoring::readSensor_End(){
while(stopMonitoring == false){
stdioMutex.lock();
- sensorInput_End = sensor_End->read();
+ sensorInput_End = pcf->read(sensor_End);
stdioMutex.unlock();
Thread::wait(50);
}
@@ -46,7 +44,7 @@
void EixoMonitoring::readSensor_Origin(){
while(stopMonitoring == false){
stdioMutex.lock();
- sensorInput_Origin = sensor_Origin->read();
+ sensorInput_Origin = pcf->read(sensor_Origin);
stdioMutex.unlock();
Thread::wait(50);
}
--- a/EixoMonitoring.h Mon Sep 18 13:05:47 2017 +0000
+++ b/EixoMonitoring.h Fri Dec 15 19:40:41 2017 +0000
@@ -4,6 +4,8 @@
#include "mbed.h"
#include "rtos.h"
#include "Debug.h"
+#include "PCF8574.h"
+
//#define DELAY_TIMER 500
@@ -14,6 +16,9 @@
int delayTimer;
int hitSensor;
Debug* debug;
+ PCF8574* pcf;
+ int sensor_Origin;
+ int sensor_End;
// Variáveis e Controle do Movimento do Eixo
@@ -24,10 +29,7 @@
// Switches e seu vetor de leitura
int sensorInput_End;
- DigitalIn* sensor_End;
- int sensorInput_Origin;
- DigitalIn* sensor_Origin;
-
+ int sensorInput_Origin;
// Threads
Mutex stdioMutex; // controle de Acesso Mútuo
@@ -36,7 +38,7 @@
Thread sensorThread_Origin; // threads de leitura dos sensores
Thread handleSensorThread_Origin; // threads para lidar com a leitur
- EixoMonitoring(PinName, PinName);
+ EixoMonitoring(PCF8574*,int,int);
void startThreads();
void stopThreads();
void readSensor_End();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EthernetInterface.lib Fri Dec 15 19:40:41 2017 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/EthernetInterface/#183490eb1b4a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/PCF8574.cpp Fri Dec 15 19:40:41 2017 +0000
@@ -0,0 +1,28 @@
+#include "PCF8574.h"
+#include "mbed.h"
+
+PCF8574::PCF8574(PinName sda, PinName scl, int address)
+ : _i2c(sda, scl) {
+ _address = address;
+}
+
+int PCF8574::read(int port) {
+ char foo[1];
+ int num,r,i=0;
+ int bin[8];
+ _i2c.read(_address, foo, 1);
+ num = foo[0];
+ while(num!=0){
+ r = num%2;
+ bin[i++] = r;
+ num /= 2;
+ }
+ return(bin[port]);
+}
+
+void PCF8574::write(int data) {
+ char foo[1];
+ foo[0] = data;
+ _i2c.write(_address, foo, 1);
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/PCF8574.h Fri Dec 15 19:40:41 2017 +0000
@@ -0,0 +1,16 @@
+#include "mbed.h"
+
+#ifndef MBED_PCF8574_H
+#define MBED_PCF8574_H
+
+class PCF8574 {
+public:
+ PCF8574(PinName sda, PinName scl, int address);
+ int read(int);
+ void write(int data);
+private:
+ I2C _i2c;
+ int _address;
+};
+
+#endif
--- a/Stepp.cpp Mon Sep 18 13:05:47 2017 +0000
+++ b/Stepp.cpp Fri Dec 15 19:40:41 2017 +0000
@@ -36,7 +36,7 @@
return 1;
}
-bool Stepp::findLimits(int n_steps, bool direction, DigitalIn sensor) {
+bool Stepp::findLimits(int n_steps, bool direction, PCF8574* sensor,int port) {
int accelspeed = 0;
if(this->acell) accelspeed = START_STOP_SPEED;
@@ -46,7 +46,7 @@
_en = 0; // habilita move
_dir = direction;
- while(sensor.read() == 0 && EixoMonitoring::stopAll == false){ // n chegou na origem
+ while(sensor->read(port) == 0 && EixoMonitoring::stopAll == false){ // n chegou na origem
if(this->acell){ //linear acceleration
if(i < START_STOP_SPEED) if (--accelspeed == this->speed) accelspeed ++;
@@ -64,7 +64,7 @@
_en = 1;
- if(sensor.read() == 0){
+ if(sensor->read(port) == 0){
return 0;
}
else{
--- a/Stepp.h Mon Sep 18 13:05:47 2017 +0000
+++ b/Stepp.h Fri Dec 15 19:40:41 2017 +0000
@@ -3,7 +3,9 @@
#include "mbed.h"
#include "Debug.h"
-#include "EixoMonitoring.h"
+#include "EixoMonitoring.h"
+#include "PCF8574.h"
+
#define START_STOP_SPEED 300 // define the Stepper Motor save start/stop speed
#define VERSION 0.3 // define Library version number
@@ -12,7 +14,7 @@
public:
Stepp(PinName clk, PinName dir, PinName en);
int step(int n_steps, bool direction);
- bool findLimits(int n_steps, bool direction, DigitalIn sensor);
+ bool findLimits(int n_steps, bool direction, PCF8574* sensor,int port);
float version(void);
private:
--- a/main.cpp Mon Sep 18 13:05:47 2017 +0000
+++ b/main.cpp Fri Dec 15 19:40:41 2017 +0000
@@ -3,62 +3,235 @@
#include "Stepp.h"
#include "EixoController.h"
#include "EixoMonitoring.h"
-
-#define LEFT 1
-#define RIGHT 0
-#define FRONT 1
-#define BACK 0
+#include "Cnc.h"
+#include "EthernetInterface.h"
+#include "Clp.h"
+#include "PCF8574.h"
-// =============== Pinos Driver ===============
-PinName clkPinX = p20;
-PinName dirPinX = p19;
-PinName enPinX = p18;
+ //=============ETHERNET==================
+#define MBED_DEV_IP "169.254.127.251"
+#define MBED_DEV_MASK "255.255.0.0"
+#define MBED_DEV_GW "0.0.0.0"
+#define ECHO_SERVER_PORT 5000
+//========================================
+ //=============PINOS PCF=================
+#define ADRESS 0x41
+#define swOrignX 0//X0 --> origem
+#define swEndX 1//Xf --> fim
+#define swOrignY 2//X0 --> origem
+#define swEndY 3//Xf --> fim
+#define swOrignE 4//X0 --> origem
+#define swEndE 5//Xf --> fim
+#define sensorUp 6
+#define sensorDown 7
+//========================================
+ //===========DISTANCIAS CNC==============
+#define RIGHT 1
+#define LEFT 0
+#define DOWN 1
+#define UP 0
+#define dHor1 1.3591
+#define dVer1 0.906
+#define dCirc 1.0948
+#define dVer2 0.9439
+#define dNetflix 0.4908
+#define dVer3 0.9816
+#define dSmartv 0.4153
+#define dVer4 1.2836
+#define dMute 0.132
+#define dHor2 3.058
+#define dVer5 0.9816
+#define dHor3 1.0948
+#define dVer6 0.8018
+#define dVoltaX 3.0202
+#define dVoltaY 15.2145
+#define noMove 0.0
+//========================================
-PinName swOrignX = p11;
-PinName swEndX = p6;
+// =============== Pinos CLP ===============
+PinName receiverCnc = p28;
+PinName transmitterCnc = p27;
+PinName receiverElevator = p8;
+//PinName transmitterElevatorEnable = p9;
+//PinName transmitterElevatorSign = p10;
+PinName transmitterElevatorEnable = LED2;
+PinName transmitterElevatorSign = LED4;
+// ============================================
+// =============== Pinos PCF ===============
+PinName sda = p9;
+PinName scl = p10;
+// ============================================
+// =============== Pinos Driver X ===============
+PinName clkPinX = p21;
+PinName dirPinX = p22;
+PinName enPinX = p14;
+
+// ============================================
+// =============== Pinos Driver Y ===============
+PinName clkPinY = p23;
+PinName dirPinY = p24;
+PinName enPinY = p13;
+
+// ===========================================
+// =============== Pinos Driver E ===============
+PinName clkPinE = p25;
+PinName dirPinE = p26;
+PinName enPinE = p12;
+
+// ===========================================
+//PinName valve = p11;
+PinName valve = LED3;
+DigitalOut eixoZ(valve);
-//PinName clkPinZ = p17;
-//PinName dirPinZ = p16;
-//PinName enPinZ = p15;
-
-//PinName swOrignZ = p7;
-//PinName swEndZ = p8;
-// ============================================
-
-// =============== Pinos Swtches ===============
-DigitalIn swLeft(p11); //X0 --> origem
-DigitalIn swRight(p6); //Xf --> fim
-//DigitalIn swBack(p7); //Z0 --> origem
-//DigitalIn swFront(p8); //Zf --> fim
-// ============================================
-
Debug *debug = new Debug();
+PCF8574* pcf = new PCF8574(sda,scl,ADRESS);
Stepp* motorX = new Stepp(clkPinX, dirPinX, enPinX);
-EixoController* eixoX = new EixoController( 55000, 14, motorX, swOrignX, swEndX);
-EixoMonitoring* eixoMonitoring = new EixoMonitoring( swOrignX, swEndX) ;
+EixoController* eixoX = new EixoController( 44500, 17, motorX, pcf,swOrignX, swEndX);
+EixoMonitoring* eixoMonitoringX = new EixoMonitoring( pcf,swOrignX, swEndX) ;
+Stepp* motorY = new Stepp(clkPinY, dirPinY, enPinY);
+EixoController* eixoY = new EixoController( 10000, 30, motorY,pcf, swOrignY, swEndY); //9483
+EixoMonitoring* eixoMonitoringY = new EixoMonitoring( pcf,swOrignY, swEndY) ;
+Stepp* motorE = new Stepp(clkPinE, dirPinE, enPinE);
+EixoController* eixoE = new EixoController( 10000, 30, motorE, pcf,swOrignE, swEndE);
+EixoMonitoring* eixoMonitoringE = new EixoMonitoring( pcf,swOrignE, swEndE) ;
+Cnc* cnc = new Cnc(eixoX, eixoY, valve,pcf,sensorUp,sensorDown);
+Clp* clp = new Clp(receiverCnc,transmitterCnc,receiverElevator,transmitterElevatorEnable,transmitterElevatorSign);
-// 0 - esquerda 1 - direita ---> Eixo X
-// 1 - frente 0 - trás ---> Eixo Z
-// 1 - pressionado 0 - solto ---> Switches
+Thread thread;
+Thread thread_2;
+Thread thread_3;
+bool control[6];
+Serial pc(USBTX,USBRX);
-int main() {
+void convert(int num,bool* bin){
+ int i=0,r;
+ while(num!=0){
+ r = num%2;
+ bin[i++] = r;
+ num /= 2;
+ }
+}
-
- bool teste = false;
- teste = eixoX->goToOrigem(swLeft , LEFT);
-
- /*EixoMonitoring::isCalibrated = false;
- eixoMonitoring->startThreads();
-
- if(teste == 1){// se está na origem
- eixoX->calibragem(RIGHT);
- EixoMonitoring::isCalibrated = true;
- eixoMonitoring->hitSensor = 0;
- eixoMonitoring->stopAll = false;
- eixoX->goToPosition(5,RIGHT);
+void cnc_thread() {
+ while(1){
+ debug->debugPin(1,0);
+ cnc->goToPosition(noMove,RIGHT,noMove,DOWN,1);//aoc1
+ cnc->goToPosition(2*dHor1,RIGHT,noMove,DOWN,1);//aoc2
+ cnc->goToPosition(noMove,LEFT,dVer1,DOWN,1);//aoc3
+ cnc->goToPosition(dHor1,LEFT,noMove,DOWN,1);//aoc4
+ cnc->goToPosition(dHor1,LEFT,noMove,DOWN,1);//aoc5
+ cnc->goToPosition(noMove,LEFT,dVer1,DOWN,1);//aoc6
+ cnc->goToPosition(dHor1,RIGHT,noMove,DOWN,1);//aoc7
+ cnc->goToPosition(dHor1,RIGHT,noMove,DOWN,1);//aoc8
+ cnc->goToPosition(noMove,LEFT,dVer1,DOWN,1);//aoc9
+ cnc->goToPosition(dHor1,LEFT,noMove,DOWN,1);//aoc10
+ cnc->goToPosition(dHor1,LEFT,noMove,DOWN,1);//aoc11
+ cnc->goToPosition(noMove,LEFT,dVer1,DOWN,1);//aoc12
+ cnc->goToPosition(dHor1,RIGHT,noMove,DOWN,1);//aoc13
+ cnc->goToPosition(dHor1,RIGHT,noMove,DOWN,1);//aoc14
+ cnc->goToPosition(noMove,LEFT,dVer1,DOWN,1);//aoc15
+ cnc->goToPosition(dHor1,LEFT,noMove,DOWN,1);//aoc16
+ cnc->goToPosition(dHor1,LEFT,noMove,DOWN,1);//aoc17
+ cnc->goToPosition(noMove,LEFT,dVer1,DOWN,1);//aoc18
+ cnc->goToPosition(2*dHor1,RIGHT,noMove,DOWN,1);//aoc19
+ cnc->goToPosition(dHor1,LEFT,dVer1,DOWN,1); //aoc20
+ cnc->goToPosition(dCirc,LEFT,dCirc,DOWN,1); //aoc21
+ cnc->goToPosition(dCirc,RIGHT,noMove,DOWN,1); //aoc22
+ cnc->goToPosition(dCirc,RIGHT,noMove,DOWN,1); //aoc23
+ cnc->goToPosition(dCirc,LEFT,dCirc,DOWN,1); //aoc24
+ cnc->goToPosition(dHor1,LEFT,dVer2,DOWN,1); //aoc25
+ cnc->goToPosition(dHor1,RIGHT,dNetflix,DOWN,1); //aoc26
+ cnc->goToPosition(dHor1,RIGHT,dNetflix,UP,1); //aoc27
+ cnc->goToPosition(noMove,LEFT,dVer3,DOWN,1); //aoc28
+ cnc->goToPosition(dHor1,LEFT,dSmartv,DOWN,1); //aoc29
+ cnc->goToPosition(dHor1,LEFT,dSmartv,UP,1); //aoc30
+ cnc->goToPosition(noMove,LEFT,dVer4,DOWN,1); //aoc31
+ cnc->goToPosition(dHor1,RIGHT,dMute,DOWN,1); //aoc32
+ cnc->goToPosition(dHor1,RIGHT,dMute,UP,1); //aoc33
+ cnc->goToPosition(dHor2-2*dHor1,RIGHT,dVer5,DOWN,1); //aoc34
+ cnc->goToPosition(dHor3,LEFT,noMove,DOWN,1);//aoc35
+ cnc->goToPosition(dHor3,LEFT,noMove,DOWN,1);//aoc36
+ cnc->goToPosition(dHor3,LEFT,noMove,DOWN,1);//aoc37
+ cnc->goToPosition(noMove,LEFT,dVer6,DOWN,1);//aoc38
+ cnc->goToPosition(dHor3,RIGHT,noMove,DOWN,1);//aoc39
+ cnc->goToPosition(dHor3,RIGHT,noMove,DOWN,1);//aoc40
+ cnc->goToPosition(dHor3,RIGHT,noMove,DOWN,1);//aoc41
+ cnc->goToPosition(noMove,LEFT,dVer6,DOWN,1);//aoc42
+ cnc->goToPosition(dHor3,LEFT,noMove,DOWN,1);//aoc43
+ cnc->goToPosition(dHor3,LEFT,noMove,DOWN,1);//aoc44
+ cnc->goToPosition(dHor3,LEFT,noMove,DOWN,1);//aoc45
+ cnc->goToPosition(noMove,LEFT,dVer6,DOWN,1);//aoc46
+ cnc->goToPosition(dHor3,RIGHT,noMove,DOWN,1);//aoc47
+ cnc->goToPosition(dHor3,RIGHT,noMove,DOWN,1);//aoc48
+ cnc->goToPosition(dHor3,RIGHT,noMove,DOWN,1);//aoc49
+
+ cnc->goToPosition(dVoltaX,LEFT,dVoltaY,UP,1);//RETORNAR
+ debug->debugPin(1,1);
+ wait(2);
}
-
- eixoMonitoring->stopThreads(); */
+}
+
+void ethernet_thread(){
+ EthernetInterface eth;
+ eth.init(MBED_DEV_IP, MBED_DEV_MASK, MBED_DEV_GW); //Assign a device ip, mask and gateway
+ eth.connect();
+ pc.printf("IP Address is %s\n", eth.getIPAddress());
+ TCPSocketServer server;
+ server.bind(ECHO_SERVER_PORT);
+ server.listen();
+ TCPSocketConnection client;
+
+ while (true) {
+ pc.printf("\nWait for new connection...\n");
+ server.accept(client);
+ client.set_blocking(false, 1500); // Timeout after (1.5)s
+ pc.printf("Connection from: %s\n", client.get_address());
+ int num;
+ char buffer[2];
+ while (client.is_connected()) {
+ int n = client.receive_all(buffer, sizeof(buffer));
+ num = buffer[0]*10+buffer[1]-528;
+ convert(num,control);
+ control[5] = num>31&&num<64;
+ num = 0;
+ buffer[0] = 0;
+ buffer[1] = 0;
+ //client.send("keven\n",5);
+ }
+ client.close();
+ }
+}
+
+void elevator_thread(){
+ while(1){
+ if(control[5]){
+ //eixoE->goToOrigem(swOrignE,LEFT);
+ clp->TransmitElevator(1);
+ pc.printf("primeiro controle: %d\n",control[4]);
+ eixoE->goToPosition(20,RIGHT);
+ clp->TransmitElevator(control[4]);
+ pc.printf("segundo controle: %d\n",control[3]);
+ eixoE->goToPosition(20,RIGHT);
+ clp->TransmitElevator(control[3]);
+ pc.printf("terceiro controle: %d\n",control[2]);
+ eixoE->goToPosition(20,RIGHT);
+ clp->TransmitElevator(control[2]);
+ pc.printf("quarto controle: %d\n",control[1]);
+ eixoE->goToPosition(20,RIGHT);
+ clp->TransmitElevator(control[1]);
+ pc.printf("quinto controle: %d\n",control[0]);
+ eixoE->goToPosition(20,RIGHT);
+ clp->TransmitElevator(control[0]);
+ control[5] = 0;
+ }
+ }
+}
+
+
+int main() {
+ thread.start(cnc_thread);
+ thread_2.start(ethernet_thread);
+ thread_3.start(elevator_thread);
}
\ No newline at end of file
