Código final do sistema para movimentar recipientes e escolher pela cor e presença de água
Dependencies: TCS3200 TextLCD mbed
Revision 0:924ec4a5d21b, committed 2017-06-09
- Comitter:
- felipeto1
- Date:
- Fri Jun 09 18:04:33 2017 +0000
- Commit message:
- Final
Changed in this revision
diff -r 000000000000 -r 924ec4a5d21b TCS3200.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TCS3200.lib Fri Jun 09 18:04:33 2017 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/grantphillips/code/TCS3200/#b98e768bc655
diff -r 000000000000 -r 924ec4a5d21b TextLCD.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Fri Jun 09 18:04:33 2017 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/simon/code/TextLCD/#308d188a2d3a
diff -r 000000000000 -r 924ec4a5d21b main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Jun 09 18:04:33 2017 +0000 @@ -0,0 +1,635 @@ + +/* Includes ------------------------------------------------------------------*/ + +/* mbed specific header files. */ +#include "mbed.h" +//#include "TCS3200.h" + +#include "TextLCD.h" + + +TextLCD lcd(PC_13, PB_7, PA_14, PB_12, PB_2, PB_11, TextLCD::LCD20x4); // rs, e, d4-d7 + + //lcd.setBacklight(TextLCD::LightOn); + //lcd.printf("Billy gordo"); + +//#include "TCS3200.h" +//TCS3200 color(PC_4, PB_13, PB_14, PB_15, PA_15); //Create a TCS3200 object +// S0 S1 S2 S3 OUT + + +/*------------------------- Implementação LCD --------------------------------*/ + +//#include "TextLCD.h" + +// Host PC Communication channels +//Serial pc(USBTX, USBRX); // tx, rx + +// I2C Communication +//I2C i2c_lcd(D14,D15); // SDA, SCL + +//TextLCD_I2C lcd(&i2c_lcd, 0x7E, TextLCD::LCD20x4); + + +/* Definitions ---------------------------------------------------------------*/ + + + +/* Variables -----------------------------------------------------------------*/ +//InterruptIn Botao_X(D11); +//InterruptIn Botao_Y(D12); +//InterruptIn Botao_Z(D13); +//InterruptIn Botao_Ref(PC_12); +//InterruptIn Botao_Ref_Go(PC_8); +//InterruptIn Botao_positivo(PC_2); +InterruptIn FDCX1(PC_9); +InterruptIn FDCX2(PB_9);\ +InterruptIn FDCY1(PB_9); +InterruptIn FDCY2(PB_6); +InterruptIn FDCZ1(PA_7); +InterruptIn FDCZ2(PC_7); +InterruptIn botaox1(PC_3); +InterruptIn botaoy1(PC_5); +InterruptIn botaoz1(PC_10); +InterruptIn botaox2(PA_13); +InterruptIn botaoy2(PC_2); +InterruptIn botaoz2(PC_12); +InterruptIn STOP(PA_11); +InterruptIn HANDL(PC_8); +//InterruptIn FDCZ1(PC_2); +//InterruptIn FDCZ2(PC_2); + +//ENTRADAS MOTOR +DigitalOut Eixo_X_Pulso(D2); +DigitalOut Eixo_Y_Pulso(D3); +DigitalOut Eixo_Z_Pulso(D4); +DigitalOut Eixo_X_Dir(D5); +DigitalOut Eixo_Y_Dir(D6); +DigitalOut Eixo_Z_Dir(D7); +DigitalOut Enable(D8); +DigitalOut Valv(PB_0); +DigitalOut LEDSTART(PA_4); +DigitalOut LEDSTOP(PA_1); +DigitalOut LEDHANDLE(PA_0); + +//ENTRADAS MOTOR + +DigitalIn Capac(PC_1); +DigitalIn START(PC_0); + + +//DigitalIn Botao_Y_positivo(A0); +//DigitalIn Botao_Y_negativo(A1); + +//DigitalIn Botao_Z_positivo(A0); +//DigitalIn Botao_Z_negativo(A1); + +//InterruptIn Botao_FIM_X_MAX(A4); +//InterruptIn Botao_FIM_X_MIN(A5); + +//DigitalIn Botao_FIM_X_MAX(A3); +//DigitalIn Botao_FIM_X_MIN(A4); + +//DigitalIn Botao_FIM_X_MAX(A3); +//DigitalIn Botao_FIM_X_MIN(A4); + +int pos_gar_x = 0; +int pos_gar_y = 0; +int pos_gar_z = 0; +int solta_x1 = 0; +int solta_x2 = 0; +int solta_x3 = 0; +int solta_y1 = 0; +int solta_y2 = 0; +int solta_y3 = 0; +int solta_z1 = 0; +int solta_z2 = 0; +int solta_z3 = 0; +int pos_x1 = 0; +int pos_x2 = 0; +int pos_x3 = 0; +int pos_y1 = 0; +int pos_y2 = 0; +int pos_y3 = 0; +int pos_z1 = 0; +int pos_z2= 0; +int pos_z3 = 0; +int zera = 0; +int HANDLE = 0; +int STARTCODE = 0; +int posmidx = 0; +int posmidy = 0; +int posmidz = 0; + +//var do motor +bool dir = false; +int cont_pulses = 0; +int cur_pos_x = 0; +int cur_pos_y = 0; +int cur_pos_z = 0; +float velocidade = 0.00032;//de 0.01 a 0.0004 +float velocidade2 = 0.0005; +bool auto_rot = false; +//var do motor + + + +/*------------------------ Funções --------------------------*/ + +void ligabobina(){ + Valv = 1; + } + +void desligabobina(){ + Valv = 0; + } +/* +int rgb() { //--------------------------------------PERFEITO + int variavel; + long red, green, blue, clear; + color.SetMode(TCS3200::SCALE_20); + while(x<100){ + red = color.ReadRed(); + green = color.ReadGreen(); + blue = color.ReadBlue(); + clear = color.ReadClear(); + //printf("RED: %10d GREEN: %10d BLUE: %10d CLEAR: %10d \r\n ", red, green, blue, clear); + if((red<green)&&(red<blue)){ + //printf("Color: Red \r\n"); + variavel=1 + } + if((green<red)&&(green<blue)){ + //printf("Color: Green \r\n"); + } + if((blue<red)&&(blue<green)){ + //printf("Color: Blue \r\n"); + } + variavel = 0; + wait(0.1); + x++; + } + return variavel; +} +*/ +/* +int rgb(){ + long red, green, blue, clear; + + //Set the scaling factor to 100% + color.SetMode(TCS3200::SCALE_100); + int bob=0; + int cor=0; + while(bob<10){ + //Read the HIGH pulse width in nS for each color. + //The lower the value, the more of that color is detected + red = color.ReadRed(); + green = color.ReadGreen(); + blue = color.ReadBlue(); + clear = color.ReadClear(); + + printf("RED: %10d GREEN: %10d BLUE: %10d CLEAR: %10d ", red, green, blue, clear); + + wait(0.1); + + if(red>50) + { + printf("VERMELHO. \r\n"); // Vermelho + cor=1; + } + if(blue>50) + { + printf("AZUL. \r\n"); // Azul + cor=0; + } + + else + { + printf("VERDE. \r\n"); // Verde + } + bob++; + } + + return cor; + } + */ + int rgb(){ + return; + } + +int capacitivo(void){ + int y=0; + int C=0; + while (y<10){ + int C= Capac; + y++; + } + return C; + } + +void direcao(int motor,int posf){ + dir = true ; + switch(motor){ + case 1: + if (posf<cur_pos_x){ + while(dir == true && cur_pos_x !=posf){ + Eixo_X_Dir = 0; + Eixo_X_Pulso = 1; + wait(velocidade); + Eixo_X_Pulso = 0; + wait(velocidade); + cur_pos_x -= 1; + //dir == false; + }} + + if (posf>cur_pos_x){ + while(dir == true && cur_pos_x !=posf){ + Eixo_X_Dir = 1; + Eixo_X_Pulso = 1; + wait(velocidade); + Eixo_X_Pulso = 0; + wait(velocidade); + cur_pos_x += 1; + //dir == false; + }} + break; + + case 2: + if (posf<cur_pos_y){ + while(dir==true && cur_pos_y !=posf){ + Eixo_Y_Dir = 0; + Eixo_Y_Pulso = 1; + wait(velocidade); + Eixo_Y_Pulso = 0; + wait(velocidade); + cur_pos_y -= 1; + //dir == false; + }} + + if (posf>cur_pos_y){ + while(dir==true && cur_pos_y !=posf){ + Eixo_Y_Dir = 1; + Eixo_Y_Pulso = 1; + wait(velocidade); + Eixo_Y_Pulso = 0; + wait(velocidade); + cur_pos_y += 1; + //dir == false; + }} + + break; + + case 3: + if (posf<cur_pos_z){ + while(dir == true && cur_pos_z !=posf){ + Eixo_Z_Dir = 0; + Eixo_Z_Pulso = 1; + wait(velocidade); + Eixo_Z_Pulso = 0; + wait(velocidade); + cur_pos_z -= 1; + //dir == false; + } + } + if (posf>cur_pos_z){ + while(dir == true && cur_pos_z !=posf){ + Eixo_Z_Dir = 1; + Eixo_Z_Pulso = 1; + wait(velocidade); + Eixo_Z_Pulso = 0; + wait(velocidade); + cur_pos_z += 1; + //dir == false; + } + } + break; + + } + return; + } + + +void direcao_p(int motor){ + dir = true ; + switch(motor){ + while(dir == true){ + case 1: + Eixo_X_Dir = 1; + Eixo_X_Pulso = 1; + wait(velocidade); + Eixo_X_Pulso = 0; + wait(velocidade); + cur_pos_x += 1; + //dir == false; + } + break; + + + case 2: + while(dir==true){ + Eixo_Y_Dir = 1; + Eixo_Y_Pulso = 1; + wait(velocidade); + Eixo_Y_Pulso = 0; + wait(velocidade); + cur_pos_y += 1; + //dir == false; + } + break; + + + case 3: + while(dir == true){ + Eixo_Z_Dir = 1; + Eixo_Z_Pulso = 1; + wait(velocidade); + Eixo_Z_Pulso = 0; + wait(velocidade); + cur_pos_z += 1; + //dir == false; + } + break; + + + + } + return; + } + +void FDCY(){ + cur_pos_y=0; + direcao(2,1500); + cur_pos_y=0; +} + +void motor_off(){ + dir = false; + zera++; + } + +void direcao_n(int motor){ + dir = true ; + switch(motor){ + while(dir == true){ + case 1: + Eixo_X_Dir = 0; + Eixo_X_Pulso = 1; + wait(velocidade); + Eixo_X_Pulso = 0; + wait(velocidade); + cur_pos_x -= 1; + //dir == false; + } + break; + + + case 2: + while(dir==true){ + Eixo_Y_Dir = 0; + Eixo_Y_Pulso = 1; + wait(velocidade); + Eixo_Y_Pulso = 0; + wait(velocidade); + cur_pos_y -= 1; + //dir == false; + } + break; + + + case 3: + while(dir == true){ + Eixo_Z_Dir = 0; + Eixo_Z_Pulso = 1; + wait(velocidade); + Eixo_Z_Pulso = 0; + wait(velocidade); + cur_pos_z -= 1; + //dir == false; + } + break; + + } + Eixo_X_Pulso = 0; + Eixo_Y_Pulso = 0; + Eixo_Z_Pulso = 0; + return; + } + +void parax(){ + direcao_n(1); + } + +void paray(){ + printf("mexeu"); + direcao_n(2); + + } + +void paraz(){ + direcao_p(3); + } + + +void zeramentox(){ + //if (zera==0){ + printf("ff"); + lcd.locate(0,0); + lcd.printf("Zerando eixo x"); + direcao_n(1); + } + +void zeramentoy(){ + lcd.locate(0,0); + lcd.printf("Zerando eixo y"); + //if (zera==1){ + direcao_p(2); + } + +void zeramentoz(){ + lcd.locate(0,0); + lcd.printf("Zerando eixo z"); + // if (zera==2){ + direcao_n(3); + } + +void handd(){ + HANDLE=0; + LEDHANDLE = 0; + } + +void ciclo_off(){ + dir = false; + STARTCODE=0; + dir = false; + + } + +void ciclo(int xp, int yp, int zp){ + direcao(3,posmidz); + STARTCODE = 0; + LEDSTART = 1; + STOP.rise(&ciclo_off); + //direcao(1,posmidx); + // direcao(2,posmidy); + while (1){ + if (START ==1){ + STARTCODE=1; + } + while (STARTCODE == 1){ + LEDSTOP = 1; + direcao(3,zp); + ligabobina(); + direcao(3,posmidz); + int ccor = rgb(); + int capa = capacitivo(); + lcd.printf("%d",ccor); + wait(3); + if (ccor==1 && capa == 1 ){ + direcao(1,solta_x1); + direcao(2,solta_y1); + direcao(3,zp+100); + desligabobina(); + direcao(3,posmidz); + direcao(1,xp); + direcao(2,yp); + + } + if (ccor == 2 && capa == 1){ + direcao(1,solta_x2); + direcao(2,solta_y2); + direcao(3,zp+100); + desligabobina(); + direcao(3,posmidz); + direcao(1,xp); + direcao(2,yp); + + } + + if (capa == 0){ + direcao(1,solta_x3); + direcao(2,solta_y3); + direcao(3,zp+100); + desligabobina(); + direcao(3,posmidz); + direcao(1,xp); + direcao(2,yp); + + } + } + //print start + } + } + + +void JOG(){ + lcd.locate(0,0); + lcd.printf("JOG ativado"); + lcd.locate(0,1); + lcd.printf("X = %f",cur_pos_x/400); + lcd.locate(0,2); + lcd.printf("Y = %f",cur_pos_y/400); + lcd.locate(0,3); + lcd.printf("Z = %f",cur_pos_z/400); + HANDL.rise(&handd); + HANDLE = 1; + LEDHANDLE = 1; + //botaox.rise(¶x); + botaox1.fall(&motor_off); + botaoy1.fall(&motor_off); + botaoz1.fall(&motor_off); + botaox2.fall(&motor_off); + botaoy2.fall(&motor_off); + botaoz2.fall(&motor_off); + wait(2); + while(1){ + while(HANDLE==1){ + lcd.cls(); + lcd.locate(0,0); + lcd.printf("JOG ativado"); + lcd.locate(0,1); + float bobaox=3*cur_pos_x/400; + float bobaoz=3*cur_pos_z/400; + float bobaoy=3*cur_pos_y/400; + lcd.printf("X = %.2f mm",bobaox); + lcd.locate(0,2); + lcd.printf("Y = %.2f mm",bobaoy); + lcd.locate(0,3); + lcd.printf("Z = %.2f mm",bobaoz); + if (botaox1==1){ + direcao_n(1); + } + if (botaoy1 == 1){ + direcao_n(2); + } + if (botaoz1 == 1){ + direcao_n(3); + } + if (botaox2==1){ + direcao_p(1); + } + if (botaoy2 == 1){ + direcao_p(2); + } + if (botaoz2 == 1){ + direcao_p(3); + } + wait(0.2); + } + + if (HANDLE == 0){ + lcd.cls(); + lcd.printf("Pos PEGAR Salva!"); + pos_gar_x=cur_pos_x; + pos_gar_y=cur_pos_y; + pos_gar_z=cur_pos_z; + wait(2); + ciclo(pos_gar_x,pos_gar_y,pos_gar_z); + break; + } + printf("nada"); + }} + + + +int main(){ + //lcd.setBacklight(TextLCD::LightOn); + lcd.printf("Zeramento em 5"); + wait(1); + lcd.cls(); + lcd.printf("Zeramento em 4"); + wait(1); + lcd.cls(); + lcd.printf("Zeramento em 3"); + wait(1); + lcd.cls(); + lcd.printf("Zeramento em 2"); + wait(1); + lcd.cls(); + lcd.printf("Zeramento em 1"); + wait(1); + lcd.cls(); + lcd.printf("Zerando"); + FDCY1.rise(&motor_off); + FDCX1.rise(&motor_off); + FDCZ1.rise(&motor_off); + zeramentox(); + cur_pos_x=0; + lcd.locate(0,1); + lcd.printf("PosX Salva!"); + wait(1); + zeramentoy(); + cur_pos_y=0; + lcd.locate(0,2); + lcd.printf("PosY Salva!"); + wait(1); + zeramentoz();//ok + lcd.locate(0,3); + lcd.printf("PosZ Salva!"); + cur_pos_z=0; + wait(1); + JOG(); + printf("saiu"); + //ciclo(pos_gar_x,pos_gar_y,pos_gar_z); + + } + + \ No newline at end of file
diff -r 000000000000 -r 924ec4a5d21b mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Jun 09 18:04:33 2017 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/mbed_official/code/mbed/builds/86740a56073b \ No newline at end of file