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:
Comentar
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!!!
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 ?
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.
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
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
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)