tras digitalWrite(4, LOW);//motor esquerdo para frente digitalWrite(3, LOW);//robo roda para esquerda digitalWrite(5, LOW); break; Serial.flush();// apaga entrada de dados ao final do loop } }} Apos fazer o upload do codigo acima para o Arduino, voce deve colocar o codigo abaixo no Processinge entao dar play no processing para rodar a interface grafica. Codigo para o Processing import codeanticode.gsvideo.*;//importat biblioteca de codigos para cameraimport processing.serial.*;// importa biblioteca serial GSCapture cam;//criada variavel cameraSerial port; // Definir variavel do tipo serialint xpos=90; //valores iniciais dos servosint ypos=90;PFont fontA; // cria uma variavel do tipo fontecolor corBotao1,corBotao2,corBotao3,corBotao4,corBotao5,padrao; //cria uma variavel tipo cor para o botaovoid setup() { size(1260,720); //define o tamanho da tela em pixels smooth(); frameRate(100); println(Serial.list()); // List COM-ports //selecionar a primeira porta serial port = new Serial(this, Serial.list()[0], 19200); //selecionar a velocidade de comunicacao serial String[] cameras = GSCapture.list();//lista cameras disponiveis if (cameras.length == 0) { println("There are no cameras available for capture."); exit(); } else { println("Available cameras:"); for (int i = 0; i < cameras.length; i++) { println(cameras[i]); } cam = new GSCapture(this, 640, 480, cameras[0]); // atribui a variavel cam a camera listada cam.start(); //inicia camera } padrao = color(0,255,0); corBotao1 = color(padrao);// atualiza a cor inicial do botao corBotao2 = color(padrao); corBotao3 = color(padrao); corBotao4 = color(padrao); corBotao5 = color(padrao); background(255,255,255);//define a cor de fundo da tela fontA = loadFont("TraditionalArabic-48.vlw"); // Carrega a fonte do titulo} void draw() { update(mouseX, mouseY);// atualiza a posicao do mouse fill (0); //cor do texto do titulo textFont(fontA,30) ;// Escrever texto com o tipo de fonte e tamanho definido text("Projeto Dougtek-I",width*2/5,30); // Posicao e descricao do titulo// Area para controle dos direcionais do robo if (key == 'w'){ fill(0,0,255);//pinta da cor escolhida port.write("w"); }else{ fill(corBotao1); // preenche os botoes com a cor escolhida caso circleover1 for false } ellipse(200,90,40,40);// Circulo imagem para botao direcional superior if (key == 's'){ fill(0,0,255);//pinta da cor escolhida port.write("s"); }else{ fill(corBotao2); } ellipse(200,150,40,40);// Circulo imagem para botao direcional inferior if (key == 'a'){ fill(0,0,255);//pinta da cor escolhida port.write("a"); }else{ fill(corBotao3); } ellipse(150,120,40,40);// Circulo imagem para botao direcional esquerdo if (key == 'd'){ fill(0,0,255);//pinta da cor escolhida port.write("d"); }else{ fill(corBotao4); } ellipse(250,120,40,40);// Circulo imagem para botao direcional direito if (key == 'h'){ fill(0,0,255); port.write("h"); }else{ fill(corBotao5); } ellipse(250,320,40,40); // Circulo imagem para botao direcional direito fill(0); textFont(fontA,20); text("W",190,100); //Letra correspondente a cada direcao dentro de cada circulo text("S",195,160); text("A",145,130); text("D",245,130); text("H",242,330); // Area para posicao grafica da camera if (cam.available() == true) { cam.read(); image(cam, 550, 50); /* a posicao (cam,0,0) e a posicao onde ficara a camera no interface grafica*/ } // Rodape fill(255,0,0); textFont(fontA,20); text(" Desenvolvido por: Douglas Rafael. Todos os direitos Reservados.",600,590); } // Controle logico dos botoes dos direcionais void update(int x, int y) { /*divide o tamanho da tela para o valor do pos entrar na escala de 0 a 180 do servo*/ xpos= x/7; ypos=y/4; //saida dos valores dos servos de 0 a 180 port.write(xpos + "c"); port.write(ypos + "b");} Qualquer duvida, critica ou sugestao podem postar nos comentarios. Ate a proxima.