Após postar em meu blog, lembrei que o Laboratório de Garagem também possui um serviço de blog. Como usei um Garagino resolvi compartilhar com vocês aqui também.

Este robô foi baseado no Mini Biped da Dagu. Como já tinha os servos, um Garagino e a própria Dagu disponibiliza o código fonte, resolvi fazer meu próprio. O problema que o robô funciona via controle remoto, você liga e dá comando para ele andar para frente, trás, virar e chutar. Ele possui também uma placa de "visão" que ainda não estudei bem o que ela faz, mas me parece que ela observa um objeto(bola) no caminho e chuta. Como não tenho essa placa e em um primeiro momento queria apenas fazer ele andar, extrai do código fonte apenas a função de andar. Nas fotos ele está com um sensor de ultrasom HC-SR, mas por enquanto apenas de enfeite mesmo. Como estou usando uma bateria de lítio de 7,2V adicionei um regulador 7805 para alimentar todo o sistema, incluindo servos.
Próximos passos:

  • Tentar colocar um controle remoto, que veio com meu kit Arduino Uno, para funcionar da mesma forma que o original Dagu.
  • Colocar o sensor de ultrasom para ele executar algum comando.
  • Comprar uma placa original Dagu de infravermelho para colocar no robô.

Manual Dagu: AQUI
Código Fonte Dagu: AQUI
Meu código extraído do original Dagu AQUI.

 

 


 


 


 


 


 


 


 


 

Exibições: 1467

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Filipe Barbosa Ferreira em 5 setembro 2014 às 17:49

Boa tarde!

Estou precisando de ajuda no meu código.
Tenho um servo e um botão. O servo vai de 0 a 180 graus e ao apertar o botão quero que o servo pare,veja em que grau parou e avance um pouco mais.
Por exemplo ele inciou e foi ate 90 graus,então apertei o botão quero que ele pare, veja que parou com 90 graus e  avance ate 93 graus e fique parado

Segue o código:

#include <Servo.h> 

Servo myservo; // create servo object to control a servo
int botao=3;
int flag=0;
int pos = 0; //variavel para armazenar a posição do servo 

void setup() 

myservo.attach(9); //servo esta pino 9
pinMode(botao,INPUT);


void loop() 

flag = digitalRead(botao); //Flag recebe o valor do botao
//1 = pressionado, 0 = solto
if(flag == 1){

myservo.write(+(pos * (5/100))); //Move o servo para 5% a mais do angulo de interrupção
//delay(15); //Delay para o servo atingir a posiçao
for(pos = 0; pos < 180; pos += 1) // fazer o servo ir de 0 a 180 graus 
{ // de 1 em 1 grau
myservo.write(pos); // escrevendo a posicao do servo
delay(15); // esperar 15ms 

for(pos = 180; pos>=1; pos-=1) // fazer o servo ir de 180 a 0 graus 

myservo.write(pos); // escrevendo a posicao do servo
delay(15); // espera 15ms 

}

Se preferirem fazer outro código tranquilo!!!

Comentário de Ronaldo Rezende Junior em 8 agosto 2014 às 18:49
Invertidos sim, mas o angulo não é o mesmo, é onde entra a variavel flift, pra dar essa diferença. Existe um outro modo com 3 servos, mas nunca testei: http://makezine.com/2011/10/20/how-to-three-servos-walking-robot-vi...
Comentário de Cleiton Fermino em 8 agosto 2014 às 18:02

Entendi, é no meu caso eu estava apenas movimentando uma perna já existente, de um boneco mesmo, mas não ficou nada legal rsrs.

Eu entendi o código, mas só uma questão, no servo de baixo, tu manda o mesmo angulo que o de cima certo ? A diferença que eles estão invertidos na posição ?

Comentário de Ronaldo Rezende Junior em 8 agosto 2014 às 17:55

Cleiton, se você ver no meu código (link no fim do texto) tem dois "for" no loop(), quando passa no primeiro for uma perna movimenta para frente e a outra para trás, no segundo acontece o inverso. A cada ciclo do for ele chama a função Servopos() que atualiza os valores nos quatro servos. Sobre o seu não consegui entender bem como você está fazendo com apenas um servo em cada perna.

Comentário de Cleiton Fermino em 8 agosto 2014 às 13:52

Ronaldo,  estou tentando fazer um projeto parecido, será que poderia me dar um pequeno help no movimento das pernas ? No caminhar, tenho lá dois servos, um para cada perna, ai eu mando o servo da direita rotacionar por exemplo 10 graus, em seguida mando o da esquerda rotacionar 10 graus, mas como faria para ele continuar assim, já que meu servo tem 180º? Eu estou fazendo manda 10 graus e volta pra zero, acho que estou fazendo muito errado. Vi que tu conectou 2 servos e ficou da forma que eu queria o andar, tu pode me dizer como tu controla eles ? Obrigado. Abraços

Comentário de Ronaldo Rezende Junior em 20 julho 2014 às 13:47
Consegui não, tentei usar o HC-SR com a pulseIn, porém não funcionou, ela dá atrasos que atrapalha o caminhar do robô. Pretendo tentar fazer uma função propria sem atrasos, mas ainda não tive tempo. Assim que tentar posto aqui. Ahh!!! Os codigos estão no fim do texto.
Comentário de Filipe Barbosa Ferreira em 19 julho 2014 às 18:34

Ronaldo,muito bom o projeto...Parabéns...

Você conseguiu algum avanço? Gostaria de fazer o mesmo projeto mas apenas fazer ele andar e desviar dos obstáculos com o HC-SR (sensor ultrassonico).

Consegue me ajudar,disponibilizando seu código?

Valei

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço