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 testembed by
Revision 2:ff4325a1fa73, committed 2017-01-03
- Comitter:
- AnaSilva
- Date:
- Tue Jan 03 19:17:43 2017 +0000
- Parent:
- 1:f5d6bbfa589d
- Commit message:
- mbed-denso1
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EthernetInterface.lib Tue Jan 03 19:17:43 2017 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/EthernetInterface/#183490eb1b4a
--- a/main.cpp Tue Jan 03 18:04:32 2017 +0000
+++ b/main.cpp Tue Jan 03 19:17:43 2017 +0000
@@ -1,12 +1,397 @@
+/*
+ GRAEST - GRUPO DE ROBÓTICA E AUTOMAÇÃO DA ESCOLA SUPERIOR DE TECNOLOGIA
+
+ Produto: Software de controle para esteira
+ Contratante: Denso
+ Lincença: Paga
+ Responsáveis: Fabrício Guimarães
+ Kedson Pinheiro
+ Marcel Cunha
+ Rafael Facccione
+
+*/
+
#include "mbed.h"
+#include "EthernetInterface.h"
+#include "stdio.h"
+#include "stdlib.h"
+#include "string.h"
+
+
+// Protocolo I2C
+I2C i2c(p28, p27);
+// Endereço do Servidor
+const char* ECHO_SERVER_ADDRESS = "192.168.0.101";
+const int ECHO_SERVER_PORT = 25;
+
+// Sensor de presença // Botõe de Inicio e Emergência
+DigitalIn BotaoInicio(p8);
+DigitalIn BotaoEmergencia(p22);
+DigitalIn sensorParada1(p16);
+DigitalIn sensorParada2(p17);
+DigitalIn sensorParada3(p18);
+
-DigitalOut myled(LED1);
+DigitalIn teste1(p5);
+DigitalIn teste2(p6);
+
+// Movimento Esteira
+DigitalOut movimentoEsteira1(p21);
+DigitalOut movimentoEsteira2(p22);
+
+// Movimento Pneumático
+
+DigitalOut movimentoPneumatico(p7);
+
+//Leds
+//DigitalOut l1(p9);
+//DigitalOut l2(p10);
+
+DigitalOut myled1(LED1);
+DigitalOut myled2(LED2);
+
+// /*
+// FUNCTION *dec_bin:: converter inteiro em binário
+// EX: *dec_bin ( int dec ){
+// Variaveis: dec (int)
+//
+// */
+char *dec_bin ( int dec ){
+
+ char *bin = (char *) malloc ( 9 * sizeof(char)); // binario 8-bits
+ register int i;
+
+ for ( i = 0; i < 8; i++ )
+ bin[i] = ( dec & (128 >> i)) ? '1' : '0';
+
+ bin[8] = 0x0;
+
+ return bin;
+}
int main() {
- while(1) {
- myled = 1;
- wait(0.2);
- myled = 0;
- wait(0.2);
- }
+ // Endereço PCF's
+ int address1=112;
+ int address2=114;
+ int address3=116;
+ int address4=118;
+ char pcf[1]={0};
+ char *c;
+
+ // Mbed Ip
+ EthernetInterface eth;
+ static const char* mbedIp = "192.168.0.102";
+ static const char* mbedMask = "255.255.255.0";
+ static const char* mbedGatway = "192.168.0.1";
+
+ eth.init(mbedIp,mbedMask,mbedGatway); //Use DHCP
+ eth.connect();
+ printf("\nClient IP Address is %s\n", eth.getIPAddress());
+
+ // Connect to Server
+ TCPSocketConnection socket;
+ while (socket.connect(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT) < 0) {
+ printf("Unable to connect to (%s) on port (%d)\r\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT);
+
+ }
+ printf("Connected to Server at %s\r\n",ECHO_SERVER_ADDRESS);
+
+ char A[] = "esteiraLivre\n";
+ char B[] = "esteiraPronta\n";
+ char C[] = "esteiraOcupada\n";
+ char D[] = "esteiraSegundaOpcao\n";
+ char E[] = "terceiraPosicao\n";
+ char F[] = "botaoAcionado\n";
+ char T[] = "11111111000000111111111100000011#\n";
+ char G[] = "voltandoPosicao1\n";
+ char H[]="EmergenciaAcionada\n";
+
+ int flagErro;
+ int flagSucesso;
+ int etapa;
+ int flagA;
+ int flagB;
+ int flagC;
+ int flagF;
+
+ while(true) {
+ flagErro=0;
+ etapa=0;
+ int a1 = sensorParada1.read();
+ int a2 = sensorParada2.read();
+ int a3 = sensorParada3.read();
+ int flagEmergencia = BotaoEmergencia.read();
+
+ /////////////////////////////////////////////////////////////////////////
+ // etapa 1 : Etapa de aguardo do clique do botao de inicio de atividade//
+ // Envio de mensagem para o Java se paradas obstruidas //
+ /////////////////////////////////////////////////////////////////////////
+
+ while(a1==1&a2==0&&a3==0&&flagEmergencia==0){
+ a1 = sensorParada1.read();
+ a2 = sensorParada2.read();
+ a3 = sensorParada3.read();
+ flagEmergencia = BotaoEmergencia.read();
+
+ int flagEstadoBotao=BotaoInicio.read();
+ //Enviando Mensagem ao servidor
+
+// if(flagB==0){
+// socket.send_all(B, sizeof(B));
+// printf("Esteira etapa 1\r\n");
+//
+// }
+ if(flagEstadoBotao==1){
+
+ if(flagF==0){
+ socket.send_all(F, sizeof(F));
+ //mandar a esteira ir pra frente
+
+ }
+ movimentoEsteira1=1;
+ movimentoEsteira2=0;
+ etapa=3;
+ }
+ }
+
+
+ if(sensorParada1.read()==0&&sensorParada2==0&&sensorParada3==0){
+
+ socket.send_all(A, sizeof(A));
+ printf("Sending message to Server : %s size:%d\r\n",A,sizeof(A));
+ printf("Esteira Livre\r\n");
+ //Esteira Parada
+ movimentoEsteira1=0;
+ movimentoEsteira2=0;
+
+ }
+
+ else {
+ socket.send_all(C, sizeof(C));
+ printf("Sending message to Server : %s size:%d\r\n",C,sizeof(C));
+ printf("Esteira ocupada\r\n");
+ //Esteira Parada
+ movimentoEsteira1=0;
+ movimentoEsteira2=0;
+
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////////
+ //etapa 2 : Etapa onde sensor do meio aguarda a caixa, se obstruido esteira para//
+ ///////////////////////////////////////////////////////////////////////////////////
+
+ while(etapa==2){
+
+
+ printf("Iniciando movimento r\n");
+
+ if(sensorParada2.read()==1){
+ int b1=teste1.read();
+ int b2=teste2.read();
+ printf("Esteira parada, caixa em posicao \r\n");
+ socket.send_all(D, sizeof(D));
+
+ //mandar parar esteira
+ movimentoEsteira1=0;
+ movimentoEsteira2=0;
+ //lendo os sensores pneumaticos de Inicio e fim de curso
+ i2c.read(address4, pcf, 1);
+ i2c.stop();
+ c=dec_bin(pcf[0]);
+ //OBS : ANALISAR A POSIÇÃO DA CAIXA NA ESTEIRA
+ //if(c[4]==1 &&c[3]==0){
+ if(b1==1&&b2==0){
+ movimentoPneumatico =1;
+ printf("pistao acionado");
+
+ }
+
+ // A validação dos sensores só ocorrera se o sensor de fim de curso estiver ativado
+ //if(c[4]==0 &&c[3]==1){
+ if(b1==0&&b2==1){
+ printf("pistao na posicao fim ");
+ etapa=3;
+ }
+ }
+ }
+
+ //////////////////////////////////////////////////////////////////////////////
+ //etapa 3 : Avaliando os Sensores de magntezição e de presença//
+ //////////////////////////////////////////////////////////////////////////////
+//
+
+
+ while(etapa== 3){
+
+ printf("iniciando Teste");
+
+ //TODO comunicação com o CI; envio para o java e validação
+ int i=0;
+ int resultado;
+ char pcf1[1]={0};
+ char pcf2[1]={0};
+ char pcf3[1]={0};
+ char pcf4[1]={0};
+ char buf[256];
+ char *c1;
+ char *c2;
+ char *c3;
+ char *c4;
+ char f1[16];
+ char f2[24];
+ char f3[34];
+
+ while(i<4){
+ // Iniciando Leitura dos PCF1
+ i2c.read(address1, pcf1, 1);
+ i2c.stop();
+ c1=dec_bin(pcf1[0]);
+
+ // Iniciando Leitura dos PCF2
+ i2c.read(address2, pcf2, 1);
+ i2c.stop();
+ c2=dec_bin(pcf2[0]);
+
+ // Iniciando Leitura dos PCF3
+ i2c.read(address3, pcf3, 1);
+ i2c.stop();
+ c3=dec_bin(pcf3[0]);
+
+ // Iniciando Leitura dos PCF4
+ i2c.read(address4, pcf4, 1);
+ i2c.stop();
+ c4=dec_bin(pcf4[0]);
+
+ // Ralizando a concatenação do vetor
+ strcpy(f1,strcat(c3,c4));
+ strcpy(f2,strcat(c2,f1));
+ strcpy(f3,strcat(c1,f2));
+
+ //Adicionando /n ao final do vetor
+ f3[32]='#';
+ f3[33]='\n';
+
+ printf("Valor=%s=====\r\n",f3);
+
+ //Enviando amostras ao Servidor
+ //socket.send_all(f3,34);
+ socket.send_all(T, sizeof(T));
+ //wait(1);
+ i++;
+ etapa=4;
+ }
+
+// while(i<500){
+//
+// if(i>1000){
+// socket.send_all(f3,34);
+//
+// }
+// i++;
+// }
+
+ //Recebendo a resposta do Servidor
+// int a=socket.receive(buf,256);
+// buf[a]='\0';
+// printf("A palavra recebida e %s\r\n",buf);
+// resultado =strncmp(buf,"1",1);
+ //O Pistão volta a posição inicial
+// movimentoPneumatico=0;
+// //Avaliando a reposta do servidor
+// if (resultado==0){
+// printf("Sucesso");
+// etapa=4;
+// flagSucesso=1;
+// }else{
+// printf("Error");
+// etapa=4;
+// flagErro=1;
+// }
+// }
+// ///////////////////////////////////////////////////
+// //etapa Erro: A Esteira indo para a primeira posição//
+// //
+// ///////////////////////////////////////////////////////
+//
+// while(flagErro==1){
+// int b1=teste1.read();
+//
+// char *e;
+// a1 = sensorParada1.read();
+// printf("error");
+//
+// socket.send_all(G, sizeof(G));
+//
+// //lendo os sensores pneumaticos
+// i2c.read(address4, pcf, 1);
+// i2c.stop();
+// e=dec_bin(pcf[0]);
+//
+// //Só irá andar caso o pistão esteja na posição inicial e não estiver caixa na posiçãoo 1
+// //if(e[4]==1&&a1==0){
+// if(b1==1&&a1==0){
+// //mandar esteira para trás
+// movimentoEsteira1=1;
+// movimentoEsteira2=1;
+// }
+//
+// if(a1==1){
+// flagErro=0;
+// //Esteira Parada
+// movimentoEsteira1=0;
+// movimentoEsteira2=0;
+//
+// }
+//
+// }
+//
+// ///////////////////////////////////////////////////////
+// //etapa Sucesso: A Esteira indo para a terceira posição//
+// //
+// ///////////////////////////////////////////////////////
+//
+// while(flagSucesso == 1){
+// printf("sucesso");
+// char *f;
+// a3 = sensorParada3.read();
+//
+// //lendo os sensores pneumaticos
+// i2c.read(address4, pcf, 1);
+// i2c.stop();
+// f=dec_bin(pcf[0]);
+//
+// //So irá andar quando o pistao estiver na posição inicial
+// // Movimentando a esteira para frente
+// if(f[4]==1&&a3==0){
+// movimentoEsteira1=1;
+// movimentoEsteira2=0;
+// }
+//
+// while(a3==1){
+// // Parando a esteira
+// movimentoEsteira1=0;
+// movimentoEsteira2=0;
+// //OBS: ANALISAR TEMPO DE PARADA
+// socket.send_all(E, sizeof(E));
+// printf("Retirar a caixa");
+// flagSucesso=0;
+// }
+// // // Clean up
+// // // socket.close();
+// // //eth.disconnect();
+
+// }
+//
+
+// //Se botao emergencia ativado esteira permanece parada
+// if(flagEmergencia==1){
+// movimentoEsteira1=0;
+// movimentoEsteira2=0;
+// //enviando mensagem ao servidor
+// socket.send_all(H, sizeof(H));
+//
+// }
+// }
}
+}
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Tue Jan 03 19:17:43 2017 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed-rtos/#58563e6cba1e
