LusoRobótica - Robótica em Português

Robótica => Discussão geral sobre robótica => Tópico iniciado por: R.S. em 24 de Junho de 2009, 12:05

Título: falta de ideias :'(
Enviado por: R.S. em 24 de Junho de 2009, 12:05
tenho 5 servos tamanha standard e nao sei o que fazer com eles.  :'(
podem me dar ideias por favor.
abraços R.S.
Título: Re:falta de ideias :'(
Enviado por: jp_ em 24 de Junho de 2009, 12:18
podias dar-mos a mim, eu acho uma boa ideia. ;D ;D ;D

jp_
Título: Re:falta de ideias :'(
Enviado por: R.S. em 24 de Junho de 2009, 12:20
cada custou 10 euros          5x10=50 euros e como é para um membro do lusorobotica vendo os 5 a 80 ok?!!!     
Título: Re:falta de ideias :'(
Enviado por: metRo_ em 24 de Junho de 2009, 12:31
ou não os queres vender ou essas contas  ??? ???   ;D
Título: Re:falta de ideias :'(
Enviado por: jp_ em 24 de Junho de 2009, 12:37
é pelos vistos fica mais caro por ser membro do lusorobotica  :-\ Não gosta do forum

Mas a ideia eras ser dados não comprados ;D ;D

jp_
Título: Re:falta de ideias :'(
Enviado por: amando96 em 24 de Junho de 2009, 12:45
é pá ter servos A MAIS é que é bom, agora A MENOS é pior, guarda uns quantos na gaveta, nunca se sabe se um dos que estas a usar avareia...
Título: Re:falta de ideias :'(
Enviado por: TigPT em 24 de Junho de 2009, 12:49
Para já podes começar por modificar 2 deles para rotação continua para fazer de motores, espetas o arduino em cima e já tens uma base móvel de robótica. Depois podes fazer um braço mecânico para apanhar coisas do chão :P 3 servos já chegam para uns bons eixos de liberdade, e ups... já os gastei todos :D
Título: Re:falta de ideias :'(
Enviado por: R.S. em 24 de Junho de 2009, 13:10
boa ideia tigpt  vou fazer só o braço a base ja tenho.
Título: Re:falta de ideias :'(
Enviado por: amando96 em 24 de Junho de 2009, 13:50
boa ideia tigpt  vou fazer só o braço a base ja tenho.
olha se quiseres trocar dois dos servos, por dois que eu tenho de rotação continua, era fixe, não tinhas de os modificar, eu agora não os uso os meus de rotação continua...
Título: Re:falta de ideias :'(
Enviado por: Fifas em 25 de Junho de 2009, 13:23
Para já podes começar por modificar 2 deles para rotação continua para fazer de motores, espetas o arduino em cima e já tens uma base móvel de robótica. Depois podes fazer um braço mecânico para apanhar coisas do chão :P 3 servos já chegam para uns bons eixos de liberdade, e ups... já os gastei todos :D

Smalluino! :D
Título: Re:falta de ideias :'(
Enviado por: R.S. em 25 de Junho de 2009, 19:37
o "braço" ja esta quase concluido, so me falta fazer a "mao"

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi817.photobucket.com%2Falbums%2Fzz97%2Fkrokojunior%2F24062009796.jpg&hash=f49aefa9e4780b60b6445a119abf55509b87d1cb)

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi817.photobucket.com%2Falbums%2Fzz97%2Fkrokojunior%2F24062009797.jpg&hash=5bc8e1c5bbbc8d92128ea961a885707b739c1afc)

tenho aqui o codigo para controlar um servo com potenciometro, como "multiplico o codigo" para controlar 4 servos??

Código: [Seleccione]
#include <Servo.h>

Servo myservo;  // create servo object to control a servo

int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin

void setup()
{
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop()
{
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180)
  myservo.write(val);                  // sets the servo position according to the scaled value
  delay(15);                           // waits for the servo to get there
}
abraços R.S.
Título: Re:falta de ideias :'(
Enviado por: metRo_ em 25 de Junho de 2009, 20:15
e um videozinho :)
Título: Re:falta de ideias :'(
Enviado por: ricardo-reis em 25 de Junho de 2009, 20:23
tenho aqui o codigo para controlar um servo com potenciometro, como "multiplico o codigo" para controlar 4 servos??


pois.. não.. não multiplicas pk se não estou em erro, a biblioteca n te permite controlar tanto servo.. :) mas não estou mt certo disto..
Título: Re:falta de ideias :'(
Enviado por: TigPT em 25 de Junho de 2009, 20:26
A lib servo permite até 8 servos sem ter que fazer SoftwareServo::refresh() e um por cada pin (14) se utilizares esse método.

http://www.arduino.cc/playground/ComponentLib/Servo (http://www.arduino.cc/playground/ComponentLib/Servo)
Título: Re:falta de ideias :'(
Enviado por: Njay em 25 de Junho de 2009, 20:48
Agora metes umas rodas e fazes isso andar atrás das pessoas, a agarrar-lhes nas pernas com a garra. Devia ser um fartote de rir :)
Título: Re:falta de ideias :'(
Enviado por: ricardo-reis em 25 de Junho de 2009, 20:53
ai é, tiago? tinha ideia que n suportava tantos, deve ser a servotimer2, então..

lol, njay.. n devia era passar da primeira, com o pontapé k levava.. :D
Título: Re:falta de ideias :'(
Enviado por: R.S. em 25 de Junho de 2009, 20:56
Código: [Seleccione]
#include <SoftwareServo.h>
#include <Servo.h>


SoftwareServo myservo;

int potpin1 = 0;
int potpin2 = 1;
int potpin3 = 2;  
int potpin4 = 3;
int val;    

void setup()
{
  myservo1.attach(10);  
   myservo2.attach(11);  
    myservo3.attach(12);  
     myservo4.attach(13);  
}

void loop()
{
  val = analogRead(potpin1);            
  val = analogRead(potpin2);            
  val = analogRead(potpin3);            
  val = analogRead(potpin4);            
  val = map(val, 0, 1023, 0, 179);    
  myservo1.write(val);                
  myservo2.write(val);                  
  myservo3.write(val);                  
  myservo4.write(val);                
  delay(15);                        

  SoftwareServo::refresh();
}

esta mal mas é tipo isto que eu quero fazer mas eu como nao percemo lá muito de programaçao da me sempre algum erro.  :'(
Título: Re:falta de ideias :'(
Enviado por: Njay em 25 de Junho de 2009, 20:56
2º desafio... fazê-lo robusto o suficiente para resistir a pontapés e voltar logo para agarrar a perna do transeunte outra vez :)
Título: Re:falta de ideias :'(
Enviado por: ricardo-reis em 25 de Junho de 2009, 21:02
lol.. dps só falta pôr um speaker a gritar 'rendes-te ou morres?!'
Título: Re:falta de ideias :'(
Enviado por: R.S. em 25 de Junho de 2009, 21:06
Código: [Seleccione]
#include <SoftwareServo.h>
#include <Servo.h>


SoftwareServo myservo;

int potpin1 = 0;
int potpin2 = 1;
int potpin3 = 2;  
int potpin4 = 3;
int val;    

void setup()
{
  myservo1.attach(10);  
   myservo2.attach(11);  
    myservo3.attach(12);  
     myservo4.attach(13);  
}

void loop()
{
  val = analogRead(potpin1);            
  val = analogRead(potpin2);            
  val = analogRead(potpin3);            
  val = analogRead(potpin4);            
  val = map(val, 0, 1023, 0, 179);    
  myservo1.write(val);                
  myservo2.write(val);                  
  myservo3.write(val);                  
  myservo4.write(val);                
  delay(15);                        

  SoftwareServo::refresh();
}
esta mal mas é tipo isto que eu quero fazer mas eu como nao percemo lá muito de programaçao da me sempre algum erro.  
Título: Re:falta de ideias :'(
Enviado por: TigPT em 25 de Junho de 2009, 21:06
R.S.

aqui:
Código: [Seleccione]
 val = analogRead(potpin1);            
  val = analogRead(potpin2);            
  val = analogRead(potpin3);            
  val = analogRead(potpin4);            
  val = map(val, 0, 1023, 0, 179);    

Estás a ler tudo para a mesma variável, ou seja, só vais ficar com o valor de potpin4 pois os outros já foram rescritos pela ultima leitura.

Tens que ter uma variável para cada potenciómetro.

Ia sugerir usar um array mas pode-te complicar, por isso para já vai fazendo como sabes, depois damos-te a solução que só assim é que se aprende ;)

já agora... a postar código utiliza o botão de "Inserir Código" ou a tag
Código: [Seleccione]
[code ][/code ] sem os espaços.
Título: Re:falta de ideias :'(
Enviado por: R.S. em 25 de Junho de 2009, 21:14
Código: [Seleccione]
#include <SoftwareServo.h>
#include <Servo.h>


SoftwareServo myservo;

int potpin1 = 0;
int val1;
int potpin2 = 1;
int val2;
int potpin3 = 2;
int val3;
int potpin4 = 3;
int val4;   

void setup()
{
  myservo1.attach(10); 
   myservo2.attach(11); 
    myservo3.attach(12); 
     myservo4.attach(13); 
}

void loop()
{
  val1 = analogRead(potpin1);           
  val2 = analogRead(potpin2);           
  val3 = analogRead(potpin3);             
  val4 = analogRead(potpin4);           
  val1 = map(val1, 0, 1023, 0, 179);     
  val2 = map(val2, 0, 1023, 0, 179); 
  val3 = map(val3, 0, 1023, 0, 179); 
  val4 = map(val4, 0, 1023, 0, 179); 
  myservo1.write(val1);                 
  myservo2.write(val2);                 
  myservo3.write(val3);                 
  myservo4.write(val4);                 
  delay(15);                         

  SoftwareServo::refresh();
}

ainda me da um erro na funçao void setup
Título: Re:falta de ideias :'(
Enviado por: tr3s em 25 de Junho de 2009, 21:29
Tá  a dar-te erro porque no inicio do programa fazes:


SoftwareServo myservo;

mas na funçao setup usas myservo1, myservo2, myservo3 e myservo4.

Título: Re:falta de ideias :'(
Enviado por: R.S. em 25 de Junho de 2009, 21:34
entao qual é a soluçao?
Título: Re:falta de ideias :'(
Enviado por: metRo_ em 25 de Junho de 2009, 21:37
suponho que:

Código: [Seleccione]
SoftwareServo myservo1,myservo2,myservo3,myservo4;
Título: Re:falta de ideias :'(
Enviado por: R.S. em 25 de Junho de 2009, 21:40
nao percebi
Título: Re:falta de ideias :'(
Enviado por: metRo_ em 25 de Junho de 2009, 21:46
Em vez de

Código: [Seleccione]
#include <SoftwareServo.h>
#include <Servo.h>


//--->>>SoftwareServo myservo;   =  ERRADO

SoftwareServo myservo1,myservo2,myservo3,myservo4;//   =  CORRECTO

int potpin1 = 0;
int val1;
int potpin2 = 1;
int val2;
int potpin3 = 2;
int val3;

Ve o que escrevi no codigo
Título: Re:falta de ideias :'(
Enviado por: R.S. em 25 de Junho de 2009, 22:09
Código: [Seleccione]
#include <SoftwareServo.h>
#include <Servo.h>


SoftwareServo myservo1,myservo2,myservo3,myservo4;//   =  CORRECTO


int potpin1 = 0;
int val1;
int potpin2 = 1;
int val2;
int potpin3 = 2;
int val3;
int potpin4 = 3;
int val4;   

void setup()
{
  myservo1.attach(10); 
   myservo2.attach(11); 
    myservo3.attach(12); 
     myservo4.attach(13); 
}

void loop()
{
  val1 = analogRead(potpin1);           
  val2 = analogRead(potpin2);           
  val3 = analogRead(potpin3);             
  val4 = analogRead(potpin4);           
  val1 = map(val1, 0, 1023, 0, 179);     
  val2 = map(val2, 0, 1023, 0, 179); 
  val3 = map(val3, 0, 1023, 0, 179); 
  val4 = map(val4, 0, 1023, 0, 179); 
  myservo1.write(val1);                 
  myservo2.write(val2);                 
  myservo3.write(val3);                 
  myservo4.write(val4);                 
  delay(15);                         

  SoftwareServo::refresh();
}

 

ja esta correcto, agora so falta testar.

obrigado a todos
Título: Re:falta de ideias :'(
Enviado por: TigPT em 25 de Junho de 2009, 22:16
mete um delay maior no fim... ai uns 100ms que só 15 nem aquece nem arrefece e os servos passam o tempo todo a tremer para corrigir as variações do adc. ;) De resto parece td ok :P
Título: Re:falta de ideias :'(
Enviado por: R.S. em 25 de Junho de 2009, 23:00
era mesmo esse o problema que eu ia agora postar, os servos nao param!!! lol
Título: Re:falta de ideias :'(
Enviado por: TigPT em 25 de Junho de 2009, 23:01
era mesmo esse o problema que eu ia agora postar, os servos nao param!!! lol

;) muitos anos nisto :P
Título: Re:falta de ideias :'(
Enviado por: R.S. em 25 de Junho de 2009, 23:08
no braço tem dois servos hitec e dois futaba e os hitec nao funcionam, alguem sabe o problema?
Título: Re:falta de ideias :'(
Enviado por: TigPT em 25 de Junho de 2009, 23:13
Já trocaste as fichas no arduino uns com os outros para ter a certeza k é nesses servos e não nas ligações ou dos pins!?

Pode ter a ver com a precisão dos pwm mas primeiro confirma. Mete um servo que não funciona no sitio de um que estava a dar e vice versa e vê o que acontece.
Título: Re:falta de ideias :'(
Enviado por: R.S. em 25 de Junho de 2009, 23:17
troquei, funcionam todos!!
Título: Re:falta de ideias :'(
Enviado por: TigPT em 25 de Junho de 2009, 23:26
Já está resolvido?! ou funcionam todos os servos mas só num certo pin?
Título: Re:falta de ideias :'(
Enviado por: R.S. em 25 de Junho de 2009, 23:39
coloquei todos os servos hitec!!

o probelema é o mesmo, so dois servos e dois potenciometros é que estao a funcionar.  ???
Título: Re:falta de ideias :'(
Enviado por: amando96 em 26 de Junho de 2009, 00:12
usa a bilbioteca megaservo
Título: Re:falta de ideias :'(
Enviado por: R.S. em 26 de Junho de 2009, 10:20
nao resulta!!
Título: Re:falta de ideias :'(
Enviado por: R.S. em 26 de Junho de 2009, 11:47
alguem tem o codigo do ZECA (guibot)?
Título: Re:falta de ideias :'(
Enviado por: TigPT em 26 de Junho de 2009, 11:50
experimenta meter um delay de 10 ms entre cada analogin pois pode ser o adc (não custa experimentar).
Título: Re:falta de ideias :'(
Enviado por: R.S. em 26 de Junho de 2009, 12:15
assim?


Código: [Seleccione]
#include <SoftwareServo.h>
#include <Servo.h>


SoftwareServo myservo1,myservo2,myservo3;//   =  CORRECTO


int potpin1 = 0;
int val1;
int potpin2 = 1;
int val2;
int potpin3 = 2;
int val3;
 

void setup()
{
  myservo1.attach(10); 
   myservo2.attach(11); 
    myservo3.attach(12); 
}

void loop()
{
  val1 = analogRead(potpin1);
   delay(10);
  val2 = analogRead(potpin2);
   delay(10);
  val3 = analogRead(potpin3);
   delay(10);
  val1 = map(val1, 0, 1023, 0, 179);     
  val2 = map(val2, 0, 1023, 0, 179); 
  val3 = map(val3, 0, 1023, 0, 179); 
  myservo1.write(val1);                 
  myservo2.write(val2);                 
  myservo3.write(val3);                               
  delay(100);                         

  SoftwareServo::refresh();
}

Título: Re:falta de ideias :'(
Enviado por: TigPT em 26 de Junho de 2009, 12:17
exacto.. melhorou ou nem por isso?!
Título: Re:falta de ideias :'(
Enviado por: R.S. em 26 de Junho de 2009, 12:19
nao :-[
Título: Re:falta de ideias :'(
Enviado por: TigPT em 26 de Junho de 2009, 12:22
Citar
SoftwareServo::refresh() method at least once every 50ms

troca lá isto:
Código: [Seleccione]
  delay(100);                         
  SoftwareServo::refresh();

por isto:
Código: [Seleccione]
  delay(40);                         
  SoftwareServo::refresh();

  delay(40);                         
  SoftwareServo::refresh();
Título: Re:falta de ideias :'(
Enviado por: R.S. em 26 de Junho de 2009, 13:06
petaculo!!! ja esta mas acho que da para aperfeiçoar melhor o codigo e o robo; ele ainta treme e o servo da base quando esta nos 0º nao consegue levantar o braço, mas tudo funciona.
Título: Re:falta de ideias :'(
Enviado por: TigPT em 26 de Junho de 2009, 13:10
Agora podes começar a pensar em fazer 3 leituras, calculas a média e depois mexes... assim treme menos ;)
Título: Re:falta de ideias :'(
Enviado por: rjrv em 26 de Junho de 2009, 13:28
estamos à espera do video... ;)
Título: Re:falta de ideias :'(
Enviado por: R.S. em 27 de Junho de 2009, 13:32
o video ja esta a ser colocado no vimeo, estou a espera que acabe o upload.


quais sao as peças necessarias para montar um sintema xbee?
Abralos R.S.
Título: Re:falta de ideias :'(
Enviado por: TigPT em 27 de Junho de 2009, 13:34
2x xbee
ou dois micros como o arduino, ou um micro e uma interface para pc.
Título: Re:falta de ideias :'(
Enviado por: R.S. em 27 de Junho de 2009, 13:41
http://www.inmotion.pt/store/product_info.php?cPath=7&products_id=65 (http://www.inmotion.pt/store/product_info.php?cPath=7&products_id=65)

http://www.inmotion.pt/store/product_info.php?cPath=7&products_id=129 (http://www.inmotion.pt/store/product_info.php?cPath=7&products_id=129)