
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.
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