LusoRobótica - Robótica em Português

Robótica => Projectos de robótica => Projectos em desenvolvimento => Tópico iniciado por: LoneWolf em 03 de Fevereiro de 2011, 01:13

Título: The Starter
Enviado por: LoneWolf em 03 de Fevereiro de 2011, 01:13
Boas noites,

    Venho-vos apresentar o meu 1º pequeno grande projecto ao qual lhe chamei de " The Starter " ainda não lhe posso chamar de robo pois ainda não tem sensores para receber sinais do exterior e assim é um "programável", mais tarde com o seu desenvolvimento ira levar sensores e mais umas coisitas o que é que eu ainda não sei.......

    O material que usei ate agora foi:

                - Acrílico ( para a base )
                - Varão roscado e porcas q.b.
                - 6 rodas de impressora com 3,3cm de diâmetro Fail
                - 6 Rodas em acrílico
                - Fita com cola de dois ladosFail
                - Material anti-derrapante
                - Corrente de plástico ( não sei bem de onde isto veio )
                - Fios q.b.
                - Dois suportes de 4 pilhas cada e respectivas pilhas ( 8 )
                - Breadboard
                - 2 Servos
                - 1 Arduino Duemilanove

.....esta foi a primeira imagem:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg20.imageshack.us%2Fimg20%2F227%2Fchassisprot.jpg&hash=d614375b8d2527b9e04f445b06cf910e)

.....agora já esta um pouco diferente, já tem uns "sapatos" novos já parece um homem  ;D ;D ;D
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg87.imageshack.us%2Fimg87%2F3606%2Fchassiclagarta.jpg&hash=bdb9acc52add401b7e759cafc5e3bf65)

....ainda não esta a andar a 100% pois as lagartas estão um pouco largas e a roda do servo anda livremente mas é só dar um ajuste e fica bom, estava a ter problemas com os servos ao qual se estava a falar aqui neste post ( http://lusorobotica.com/index.php?topic=3203.0 (http://lusorobotica.com/index.php?topic=3203.0) ) o problema ainda cá mora porque não entendi os comandos do código que o Njay postou, é o que da ser iniciante....
    Assim que esta parte estiver resolvida e compreendida passo a parte dos sensores que provavelmente serão uns IR Sharp ou Sharp Home made, mas ate la.....

....agora é só comentarem, criticar, ideias, etc é tudo bem vindo   8)

Abraços e óptima continuação  ;)
Obrigado.
                 
Título: Re: The Starter
Enviado por: LoneWolf em 04 de Fevereiro de 2011, 00:26
Boas noites,

bem gostava de vos mostrar o Starter a andar mas infelizmente esta difícil pois as lagartas estão sempre a saltar fora estou a ver que tenho de pensar em outra coisa para ele se mover, mas agora esta a surgir outro prob se ligar o robo por usb trabalha bem mas se ligar o robo as pilhas ele faz uma função mas quando é para iniciar a outra função o arduino faz reset, o que pode ser?  ???

Abraços.
Título: Re: The Starter
Enviado por: Stigma em 04 de Fevereiro de 2011, 00:35
Parece me mt bem. E agora tens uma base para colocar um tonelada de sensores e fazer uma coisa msm a maneira. Eu começava por por um sensor IR/ultrasom para ele se desviar de obstaculos. A partir dai nem sei...tanta coisa lol
Título: Re: The Starter
Enviado por: LoneWolf em 04 de Fevereiro de 2011, 00:53
Boas,

sim agora tenho uma base para poder fazer umas coisas engraçadas porque a ideia disto é mesmo ter uma base para testes de sensores e código e coisas assim. Penso que sim se seja isso que vá fazer em 1º lugar ele se desviar de obstáculos, depois talvez seguir uma linha, seguir a luz ou fugir dela isto é o que eu tenho na ideia de fazer, agora a cena das lagartas é que me esta a lixar todo, mas se tiver tempo amanha já tento outra coisa a ver se da senão tenho de tirar a ideia das lagartas....quanto ao arduino fazer reset não sei se possa ser dos servos estarem em esforço porque umas vezes faz reset outras não.

Abraços e óptima continuação  ;) 
Título: Re: The Starter
Enviado por: senso em 04 de Fevereiro de 2011, 00:57
Isso é as baterias a deixarem a voltagem descer muito quando os servos arrancam ou fazem mais força.
Talvez um condensador resolva isso.
Título: Re: The Starter
Enviado por: njgomes em 04 de Fevereiro de 2011, 10:52
Em relação as lagartas tenta talvez colocar algum tipo de marerial enburrachado para as rodas não escorregarem tanto e teres mais aderencia. Por outro lado encontas kits de lagartas a preços razoaveis que podes sempre utilizar.
Título: Re: The Starter
Enviado por: ptrobotics em 04 de Fevereiro de 2011, 10:58
Porque não simplificas, arranjas uma segunda alimentação para o Arduino (uma bateria de 9V por exemplo) e despes os servos da electrónica para ficarem a funcionar apenas como motores. Obviamente que simplifica a parte de código, mas complica a electrónica porque precisas de uma ponte em H para controlá-los...
Título: Re: The Starter
Enviado por: Stigma em 04 de Fevereiro de 2011, 11:29
Porque não simplificas, arranjas uma segunda alimentação para o Arduino (uma bateria de 9V por exemplo) e despes os servos da electrónica para ficarem a funcionar apenas como motores. Obviamente que simplifica a parte de código, mas complica a electrónica porque precisas de uma ponte em H para controlá-los...

Nao me parece q isso seja preciso, basta aumentar um bcd a aderencia das rodas das lagartas. Colocar um elastico ou uma borracha por baixo das lagartas.
Título: Re: The Starter
Enviado por: LoneWolf em 04 de Setembro de 2011, 04:02
           Ola e boas noites, antes de tudo peço desculpa pela longa ausência ( alguns meses) mas infelizmente é a vida, muito trabalho, pouco lazer e pouco tempo tive disponível para os hobbies.
           Na altura estava a ter bastantes problemas com as lagartas para não falar do código ;D só esta noite é que conclui as lagartas novas e penso que seja desta vez que vá funcionar....penso eu de que  ;D hoje já esta tarde para começar com o código e a ver se é desta vez que entendo o código postado neste post ( http://lusorobotica.com/index.php?topic=3203.0 (http://lusorobotica.com/index.php?topic=3203.0) ) para ver se isto anda para a frente e se não esta tantos meses parado desta vez...  ::)
           Deixo uma imagens das novas lagartas....
   (https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg37.imageshack.us%2Fimg37%2F8009%2F01012007384.jpg&hash=66cf1fc2849b98a204e0eb50bccc65f2)

Uploaded with ImageShack.us (http://imageshack.us)[/img]

Abraços e fiquem bem
Título: Re: The Starter
Enviado por: andre_f_carvalho em 04 de Setembro de 2011, 18:42
onde adquiriste esse tipo de lagartas?

Título: Re: The Starter
Enviado por: LoneWolf em 04 de Setembro de 2011, 20:17
Boas
Citar
onde adquiriste esse tipo de lagartas?
Fui eu que as "fiz" mas se te referes a "corrente" de cor cinza, eu também não sei onde se compra isto. Esta que que tenho vinha junto com umas impressoras velhas que me deram, nem sei que função tinham, tenho outras idênticas mas em ferro. Infelizmente não te posso ajudar nisso mas o resto fui eu que fiz.

Abraços e boa continuação  ;) 
Título: Re: The Starter
Enviado por: PDI em 04 de Setembro de 2011, 22:21
Tens ai uma bela base.
E essas correntes são em plástico?
As rodas são de patins?

As Confusões que a falta de pontuação faz.
Tu reparas-te André mas eu não
Título: Re: The Starter
Enviado por: andre_f_carvalho em 05 de Setembro de 2011, 00:47
referia-me a parte cinzenta,

mas reparei que era plastico
Título: Re: The Starter
Enviado por: LoneWolf em 05 de Setembro de 2011, 01:39
Boas noites, sim são de plástico e as rodas são de acrílico, mais propriamente acrílico com 3mm, juntei 3 pedaços de 3mm colados uns nos outros que no final ficou +/- 10mm.
Bem, vou continuar a tentar meter o código a funcionar, mais alguma info é só pedir.

Abraços  ;)
 
Título: Re: The Starter
Enviado por: LoneWolf em 12 de Setembro de 2011, 01:54
           Boas noites, só este fim de semana é que voltei a poder tocar no projecto e por fim lá consegui meter o código a funcionar, menos uma dor de cabeça  ;D mas logo apareceu outra e não estou a entender o porque, os servos se rodarem para a esquerda andam a velocidade máxima se rodarem para a direita a velocidade é menor, fazer com que ele ande a direito é ir por tentativa e erro mudando a velocidade do servo que anda mais rápido, agora o problema maior é que eu não estou a ver o porque de estarem os dois servos a rodarem para a direita ( velocidade menos) e o arduino faz um reset isto se o robo estiver com as lagartas no chão. A principio pensei que era as lagartas a fazer força, dei mais folga mas acontece na mesma, da a entender parece que os servos não tem força para esse lado e dai levar o arduino a fazer um reset....alguma ideia do que possa ser?

          Agora tenho uma segunda duvida o fórum tem um post em que fala em fazer um sensor IR por 0€ os led's usados nesse tutorial o receptor tem 3 terminais e o emissor tem 2 terminais, mas infelizmente os que tenho aqui em casa tanto o emissor como o receptor tem 2 terminais cada, sabem de algum tutorial para este tipo de led's?
 Já tentei pesquisar mas ate agora sem efeito.

Abraços e boa continuação  ;)
Obrigado.   
           
Título: Re: The Starter
Enviado por: senso em 12 de Setembro de 2011, 02:05
Isso é ruido gerado pelos motores, ou então em esforço a tensão baixa tanto que o Arduino faz reset, como é que estás a alimentar isso?
Título: Re: The Starter
Enviado por: LoneWolf em 12 de Setembro de 2011, 02:55
Boas senso,

estou a alimentar com 8 pilhas recarregareis 1,2V@2500mA cada, neste momento todas dão um tensão de 10,80V quando os servos estão a trabalhar a tensão cai para 10V ( arranque) e 10,45V ( a funcionar continuamente) isto em ambas as direcções

Citar
Isso é ruido gerado pelos motores

pois não sei com o sem condensador (condensador de 100uF) faz o mesmo

E quanto a questão do sensor sabe de algum tutorial?

obrigado e abraços
Título: Re: The Starter
Enviado por: senso em 12 de Setembro de 2011, 02:57
Condensador de 100uF colocado em que sitio?
Devias ter pelo menos um soldado directo nos pinos do motor.
Título: Re: The Starter
Enviado por: LoneWolf em 12 de Setembro de 2011, 03:12
Tenho os condensadores junto a ficha na breadbord um em cada servo e um de 470uF junto da alimentação que vem das pilhar para a breadbord. Não sei se estes condensadores de 100uF cabem dentro da caixa do servo mas posso tentar soldar junto dos terminais.

Abraços
Título: Re: The Starter
Enviado por: LoneWolf em 12 de Setembro de 2011, 23:09
Boas noites a todos, estou a seguir o conselho do senso em soldar o condensador nos terminais do motor do servo mas surgiu uma duvida e talvez eu esteja equivocado devido a informação absorvida  ;D então é o seguinte, o condensador que tenho de soldar não pode ser estes  ( Condensador electrolítico 100uF ) porque estes tem um terminal cátodo indicado pela linha preta imprimido nele e só ficaria correctamente ligado quando o motor estiver a rodar num sentido, mas quando rodar no sentido inverso o condensador já não esta ligado correctamente será assim ou estou realmente baralhado das ideias?
Se assim for que esse condensador não seja o indicado qual usar?

Abraços e obrigado  ;)     
Título: Re: The Starter
Enviado por: CBX em 12 de Setembro de 2011, 23:16
penso que o senso se referia a 100nf=0.1uf cerâmico, ao inverter a polaridade o electrolítico queima
Título: Re: The Starter
Enviado por: LoneWolf em 12 de Setembro de 2011, 23:28
Hummmmm pois lá esta, não andava muito longe  ;D ;D, mas de qualquer maneira estava equivocado porque assumi que era para usar os mesmos condensadores.

Obrigado,
Abraços e boa continuação  ;) 
Título: Re: The Starter
Enviado por: andre_f_carvalho em 13 de Setembro de 2011, 11:18
ha eletroliticos sem polaridade
Título: Re: The Starter
Enviado por: LoneWolf em 13 de Setembro de 2011, 14:46
Boas tardes,

       
Citar
ha eletroliticos sem polaridade

sim há vários tipos de condensadores , não os conheço a todos nem as suas funções o meu conhecimento sobre eles ainda é muito basico mas deu para reparar que estava equivocado.

      Depois do senso e do CBX terem dado o seu conselho, fui a procura no "meu lixo" ( é como a minha esposa lhe chama  ;D ;D ;D ) e lá encontrei uns quantos condensadores cerâmicos com a inscrição de 104M  (0,1uF) e se não estou em erro outra vez o valor 104 quer diz 0,1uF (depois de ser reduzido para uF). Soldar o condensador naquele pequenos motor não foi fácil e afinal tem la muito espaço dentro, tive de retirar o motor para poder soldar o dito condensador mas ficou feito e já testei 5* era mesmo ruído que andava ali num dos sentido do motor.
      Agora é voltar a montar os servos no chassi e continuar, mas isso só posso mais logo a noite se tiver tempo. Quando tiver mais alguma coisa feita partilho  ;) mais que não seja duvidas que isso é quase certo  ;D ;D ;D ;D

Obrigado
Abraços  ;)   
Título: Re: The Starter
Enviado por: CBX em 13 de Setembro de 2011, 15:32
ha eletroliticos sem polaridade

estás a confundir com outro, a construção do electrolítico não permite a inversão de polaridade, basicamente tem duas camadas de alumínio, separadas por um oxido, se inverteres a polaridade destróis o oxido, o condensador faz curto circuito e rebenta


104 significa 10x10^4 = 100000pf = 100nf = 0.1uf
Título: Re: The Starter
Enviado por: andre_f_carvalho em 13 de Setembro de 2011, 20:41
ha eletroliticos sem polaridade

estás a confundir com outro, a construção do electrolítico não permite a inversão de polaridade, basicamente tem duas camadas de alumínio, separadas por um oxido, se inverteres a polaridade destróis o oxido, o condensador faz curto circuito e rebenta


104 significa 10x10^4 = 100000pf = 100nf = 0.1uf


em circuitos que fiz pedia eletroliticos sem polaridade e a reparares neles eles não tem referencia nenhuma sobre isso.

Boas tardes,

       
Citar
ha eletroliticos sem polaridade

sim há vários tipos de condensadores , não os conheço a todos nem as suas funções o meu conhecimento sobre eles ainda é muito basico mas deu para reparar que estava equivocado.

      Depois do senso e do CBX terem dado o seu conselho, fui a procura no "meu lixo" ( é como a minha esposa lhe chama  ;D ;D ;D ) e lá encontrei uns quantos condensadores cerâmicos com a inscrição de 104M  (0,1uF) e se não estou em erro outra vez o valor 104 quer diz 0,1uF (depois de ser reduzido para uF). Soldar o condensador naquele pequenos motor não foi fácil e afinal tem la muito espaço dentro, tive de retirar o motor para poder soldar o dito condensador mas ficou feito e já testei 5* era mesmo ruído que andava ali num dos sentido do motor.
      Agora é voltar a montar os servos no chassi e continuar, mas isso só posso mais logo a noite se tiver tempo. Quando tiver mais alguma coisa feita partilho  ;) mais que não seja duvidas que isso é quase certo  ;D ;D ;D ;D

Obrigado
Abraços  ;)   

deixa não és o único, tambem chamam lixo as minhas coisas xD
Título: Re: The Starter
Enviado por: CBX em 13 de Setembro de 2011, 21:09
erro meu, já vi que existem, dois electrolíticos em serie fazem um não polarizado
Título: Re: The Starter
Enviado por: senso em 13 de Setembro de 2011, 21:17
Em paralelo, com as polaridades trocadas sim, agora em série acho que não.
Título: Re: The Starter
Enviado por: CBX em 13 de Setembro de 2011, 21:55
eu li em vários sítios que deve ser serie, com as patas negativas juntas ou as positivas
Título: Re: The Starter
Enviado por: LoneWolf em 17 de Setembro de 2011, 20:03
Boas, deixo aqui um vídeo curto do que consegui ate agora.
http://imageshack.us/clip/my-videos/822/qyi.mp4/ (http://imageshack.us/clip/my-videos/822/qyi.mp4/)

Abraços.
Título: Re: The Starter
Enviado por: LoneWolf em 19 de Setembro de 2011, 15:31
Boas, deixei um vídeo do que tinha feito ate aquela data, já se desviava de obstáculos usando um sensor IR home made, depois disso tenho tentado com 3 sensores, fazer o código para 1  sensor e meter a funcionar já não foi muito fácil, agora para 3 sensores pior tenho estado as "cabeçadas" a isto mas não esta fácil, já tentei encontrar código que usem 3 sensores para eu me guiar e construir o meu mas foi umas pesquisas sem sucesso. O código que fiz para usar 3 sensores não esta a funcionar, a verdade tem de ser dita eu ainda não pesco nada ou quase nada disto  ;D ;D ;D alguém de vós fez algo deste tipo que possa fornecer o código para eu tentar perceber como se faz e construir assim o meu? ou algum link que explique isso fico agradecido.

Abraços e obrigado  ;)           
Título: Re: The Starter
Enviado por: LoneWolf em 19 de Setembro de 2011, 21:37
Boas, ninguém da ai umas luzes sff?

obrigado e abraços  ;)
Título: Re: The Starter
Enviado por: LoneWolf em 20 de Setembro de 2011, 23:06
Boas noites,

....bem já vi que assim não vem luz nenhuma  ;D ;D ;D não sei o porque mas ya....continuando, a ver se isto vai de outra maneira, como já tinha dito anteriormente eu "fiz" um código para um sensor IR, alias é partes de códigos de outros projectos daqui do fórum, outros achados na net o resto inventado por mim mas funcionou, pode não estar bem construído( estruturado ) que deve ser o mais certo  ;D mas com calma e mais disponibilidade para ler, isto vai la, então o código que fiz para 1 sensor IR é:
Código: [Seleccione]
// Continuous rotation servo class.
// By Njay in 2009 (EmbeddedDreams.com)
// Licensed under CC BY NC SA ([url=http://creativecommons.org/licenses/by-nc-sa/2.5/pt/]http://creativecommons.org/licenses/by-nc-sa/2.5/pt/[/url]
#include <Servo.h>
#include <MsTimer2.h>
#define irx 2   // Sensor IR no pin digital 2
static boolean output = HIGH;
/**
 * Wraps a MegaServo object to control a continuous rotation servo.
 * The servo should be calibrated to be stopped when Megaservo::write()
 * is set to 90.
 * When speed is set to 0 to stop the servo, the servo is detached to
 * make sure it will be completly stopped.
 */
class ContinuousRotationServo
{
  public:
    ContinuousRotationServo (unsigned char pin)  {
        mSpeed = 0;
        SetPin(pin);
    }

    ContinuousRotationServo (void)  {
        mSpeed = 0;
    }

    inline void SetPin (unsigned char pin)  {
        mPin = pin;
    }

    // Set the speed. 0 to be stopped, > 0 to rotate in one direction
    // and < 0 to rotate on the other.
    void SetSpeed (signed char speed)  {
        if (speed == 0)  {
            if (mSpeed != 0)  {
                //Serial.println("dettach");
                mServo.detach();
            }
        }
        else  {
            if (mSpeed == 0)  {
                //Serial.println("attach");
                mServo.attach(mPin);
            }
            //Serial.println("set speed");
            mServo.write(90 + speed);
        }
        mSpeed = speed;
    }

    inline void Detach (void)  {
        mServo.detach();
    }

  private:
    Servo          mServo;
    unsigned char  mPin;
    signed char    mSpeed;    // current speed
};
ContinuousRotationServo  servoDir(10);    // servo no pino 10
ContinuousRotationServo  servoEsq(9);    // outro servo, no pino 11

void setup () {
  pinMode(irx, INPUT);     // Pin onde está o LED infravermelhos é pin output
   MsTimer2::set(5, flash); // Defenir intrrupções de 5 em 5 ms e durante a interrupção é chamada a função flash
  MsTimer2::start();       // Iniciar interrupções   
}
void loop()
{
  (digitalRead(irx));
  delay(100);
  servoEsq.SetSpeed(-45);   
  servoDir.SetSpeed(45);
 while(digitalRead(irx));
  servoEsq.SetSpeed(0);   
  servoDir.SetSpeed(0);
  delay(500); 
  servoEsq.SetSpeed(45);   
  servoDir.SetSpeed(45);
  delay(1500);
  servoEsq.SetSpeed(0);   
  servoDir.SetSpeed(0);
  delay(500); 
 
}
 void flash() {               // Função chamda durante a interrupção
  digitalWrite(12, output);  // Anceder ou apagar o LED IR
  output = !output;          // Alterar o output...
}

   
....pois dá para rir  ;D ;D ;D mas deu para o que eu queria.
          Agora para os 3 sensores já tentei aplicar o que tenho aprendido ou melhor, tentado aprender  ;D e deu no seguinte:
Código: [Seleccione]
#include <Servo.h>
#include <MsTimer2.h>
#define ir1 7   // Sensor IR no pin digital 7
#define ir2 2   // Sensor IR no pin digital 2
#define ir3 4   // Sensor IR no pin digital 4
static boolean output = HIGH;
/**
* Continuous rotation servo class.
* By Njay in 2009 (EmbeddedDreams.com)
* Licensed under CC BY NC SA ([url=http://creativecommons.org/licenses/by-nc-sa/2.5/pt/]http://creativecommons.org/licenses/by-nc-sa/2.5/pt/[/url]
 * Wraps a MegaServo object to control a continuous rotation servo.
 * The servo should be calibrated to be stopped when Megaservo::write()
 * is set to 90.
 * When speed is set to 0 to stop the servo, the servo is detached to
 * make sure it will be completly stopped.
 */
class ContinuousRotationServo
{
  public:
    ContinuousRotationServo (unsigned char pin)  {
        mSpeed = 0;
        SetPin(pin);
    }

    ContinuousRotationServo (void)  {
        mSpeed = 0;
    }

    inline void SetPin (unsigned char pin)  {
        mPin = pin;
    }

    // Set the speed. 0 to be stopped, > 0 to rotate in one direction
    // and < 0 to rotate on the other.
    void SetSpeed (signed char speed)  {
        if (speed == 0)  {
            if (mSpeed != 0)  {
                //Serial.println("dettach");
                mServo.detach();
            }
        }
        else  {
            if (mSpeed == 0)  {
                //Serial.println("attach");
                mServo.attach(mPin);
            }
            //Serial.println("set speed");
            mServo.write(90 + speed);
        }
        mSpeed = speed;
    }

    inline void Detach (void)  {
        mServo.detach();
    }

  private:
    Servo          mServo;
    unsigned char  mPin;
    signed char    mSpeed;    // current speed
};
ContinuousRotationServo  servoDir(10);    // servo no pino 10
ContinuousRotationServo  servoEsq(9);    // outro servo, no pino 9

void setup () {
  pinMode(ir1, INPUT);     // Pin onde está o LED1 infravermelhos é pin output
  pinMode(ir2, INPUT);     // Pin onde está o LED2 infravermelhos é pin output
  pinMode(ir3, INPUT);     // Pin onde está o LED3 infravermelhos é pin output
  MsTimer2::set(5, flash); // Defenir intrrupções de 5 em 5 ms e durante a interrupção é chamada a função flash
  MsTimer2::start();       // Iniciar interrupções
}
void loop()
{
  scan();
  if ((digitalRead(ir1)==0) && (digitalRead(ir2)==0) && (digitalRead(ir3)==0))
  {
    para(); meiavolta(); scan(); 
}
if ((digitalRead(ir1)==0) && (digitalRead(ir2)==1) && (digitalRead(ir3)==0))
  {
    frente(); 
}
if ((digitalRead(ir1)==1) && (digitalRead(ir2)==1) && (digitalRead(ir3)==1))
  {
    frente(); 
}
if ((digitalRead(ir1)==1) && (digitalRead(ir2)==0) && (digitalRead(ir3)==1))
  {
    para(); direita(); scan(); 
}
if ((digitalRead(ir1)==1) && (digitalRead(ir2)==0) && (digitalRead(ir3)==0))
  {
    para(); direita(); scan(); 
}
if ((digitalRead(ir1)==0) && (digitalRead(ir2)==0) && (digitalRead(ir3)==1))
  {
    para(); esquerda(); scan(); 
}
}
 void para()
 {
  servoEsq.SetSpeed(0);   
  servoDir.SetSpeed(0);
  delay(500);
 }
 void meiavolta()
 {
  servoEsq.SetSpeed(-45);   
  servoDir.SetSpeed(-45);
  delay(2000);
 }
 void frente()
 {
  servoEsq.SetSpeed(-45);   
  servoDir.SetSpeed(45);
  scan();
 }
 void tras()
 {
  servoEsq.SetSpeed(45);   
  servoDir.SetSpeed(-45);
  delay(2000);
 }
 void direita()
 {
  servoEsq.SetSpeed(-45);   
  servoDir.SetSpeed(-45);
  delay(1500);
 }
 void esquerda()
 {
  servoEsq.SetSpeed(45);   
  servoDir.SetSpeed(45);
  delay(1500);
 }
 void scan()
 {
  while(digitalRead(ir1));
  while(digitalRead(ir2));
  while(digitalRead(ir3));
  delay(500);
 }
 void flash() {               // Função chamda durante a interrupção
  digitalWrite(12, output);  // Anceder ou apagar o LED IR
  output = !output;          // Alterar o output...
}

...compila, mas não funciona, este também deve dar vontade de rir, mas temos de começar por algum lado. Sei que muita coisa deve de estar mal e tenho estado a tentar perceber o que é, mas ainda sem sucesso.
   Onde tenho o valor recebido igual a zero ou um ( ==0) já tive o "High" e o "Low", já tentei com "else" mas nada, antes de estar a usar o "void frente" e os restantes estava a usar como no 1º código ( servoEsq.SetSpeed(); ) em um dos códigos que fiz ainda executou o 1º "if" mas depois não fazia mais nada, ou eu tenho estado a perceber mal o que tenho lido ou esta-me a falhar alguma coisa.
    Alguem pode dar uma ajuda? só que me apontem o caminho penso que já deve chegar   ::)
    Sei que o post é grande mas não deu para fazer mais pequeno.

Abraços. 
Título: Re: The Starter
Enviado por: senso em 20 de Setembro de 2011, 23:57
O teu grande problema está aqui:
Código: [Seleccione]
void scan()
 {
  while(digitalRead(ir1));
  while(digitalRead(ir2));
  while(digitalRead(ir3));
  delay(500);
 }

Para além de teres um delay de meio segundo em que mais nada pode ser feita, o while só acaba quando o pino ler zero/LOW, e isso terá de acontecer ao mesmo tempo para que assim passes os três whiles e a função acaba.
Título: Re: The Starter
Enviado por: LoneWolf em 21 de Setembro de 2011, 00:35
Boas, então como faço para ler os 3 sensores ao mesmo tempo e constantemente durante o programa?

Obrigado e abraços.
Título: Re: The Starter
Enviado por: senso em 21 de Setembro de 2011, 00:52
O que é que achas que esse código está a fazer?
É que não lês o valor para lado nenhum, nem nada..
Explica-me o que queres fazer?
Queres mesmo ler essas entradas a 16Mhz e não actuar consoante as mesmas, o tempo de resposta de um motor é milhares de vezes mais lento que a capacidade de processamento do Arduino.
Título: Re: The Starter
Enviado por: LoneWolf em 21 de Setembro de 2011, 01:10
Achava que esse código ia ler os sensores  :-[
O que eu queria fazer era ler os sensores e dependendo da leitura e fazer determinada coisa.
Citar
Queres mesmo ler essas entradas a 16Mhz e não actuar consoante as mesmas...

pois devo estar a fazer tudo mal, talvez tenha de rever tudo.
Título: Re: The Starter
Enviado por: senso em 21 de Setembro de 2011, 01:18
Vê o exemplo que está no IDE que tem o nome de blinky without delay, basta leres os sensores de 10 em 10ms, ou até mais que continuas com um tempo de resposta que para ti é imediato.
Título: Re: The Starter
Enviado por: LoneWolf em 22 de Setembro de 2011, 15:32
Boas, obrigado pela dica senso.
Mais logo a noite volto a tentar e exemplo a ver o que consigo fazer, posso estar a fazer perguntas um pouco sem sentido mas tenho de fazer mais umas, então aqui vai....
...quando diz:
Citar
Queres mesmo ler essas entradas a 16Mhz e não actuar consoante as mesmas...

então como havia de ler as entradas? a que Mhz? e como devo actuar? 

Citar
É que não lês o valor para lado nenhum, nem nada..

ler ate estava a ler pelos vistos mas era só um de cada vez e por sequência 1, 2, 3 não lia o 2 e o 3 sem ler o 1.
Posso estar a meter os pés pelas mãos mais uma vez, mas o código dos servos do Njay tenho de o usar pois só assim os servos estão parados.
Agora outra duvida eu estou a usar os receptores IR de 3 patas se usar este código:
Código: [Seleccione]
#include <MsTimer2.h>
#define irx 2   // Sensor IR no pin digital 2

static boolean output = HIGH;  // Variável para defenir o estado do LED de infravermelhos, é estática para ser usada durante a interrupção

void setup(){
  pinMode(irx, INPUT);     // Pin onde está o LED infravermelhos é pin output
  Serial.begin(9600);      // Iniciar comunicação Serial com o computador...
  MsTimer2::set(5, flash); // Defenir intrrupções de 5 em 5 ms e durante a interrupção é chamada a função flash
  MsTimer2::start();       // Iniciar interrupções
}

void loop(){
  while(digitalRead(irx));   // Enquanto não houver nada no Sensor não sai daqui, o sensor coloca 1 quando n detecta nada e passa a 0 qd detecta algo
  Serial.println("ICEBERG!"); // Oi.. Apanhou qualquer coisa... OH NÂO É UM ICEBERG... OH GOD, THE PAIN, CAN YOU FEEL THE PAIN?
  // MAYDAY MAYDAY!
  // - Alô diz iz German Cost Guard, can we help you? (Sotaque alemão)
  // YES, YES! We're SINKING!
  // - Okay so what are you sinking (thinking) about? (ahha XD)
}

void flash() {               // Função chamda durante a interrupção
  digitalWrite(12, output);  // Anceder ou apagar o LED IR
  output = !output;          // Alterar o output...
}
...o receptor apanha bem o Led IR nas distancias de 10~20cm o que já chegava por agora, mas se usar este código: 
Código: [Seleccione]
#define sensorIR 0

void setup(){

  Serial.begin(9600); //Para podermos ver o valor na consola

}

void loop(){

  Serial.println(analogRead(sensorIR));

  delay(50);

}
...e mesmo com o Led IR a piscar ou sempre ligado não apanha nada, mas se apontar o Led IR do comando da TV ate apanha demais( reflectindo o sinal por tudo quanto é canto) não sei se terá a haver com a frequência do Led IR,  mas é disso ou é outra coisa?

Desde já o meu obrigado e boa continuação   ;) que eu tenho de ir bulir mais umas 5~6 horas.
Abraços.
Título: Re: The Starter
Enviado por: senso em 22 de Setembro de 2011, 18:35
Mais logo já te dou uma ajuda no código.
Título: Re: The Starter
Enviado por: LoneWolf em 24 de Setembro de 2011, 11:42
Bons dias,
Citar
Mais logo já te dou uma ajuda no código.

Obrigado senso pela disponibilidade, fico mesmo agradecido, assim que tiver algo volto a postar, a ver se consigo fazer mais alguma coisa este fim de semana.

Abraços  ;)
Título: Re: The Starter
Enviado por: senso em 24 de Setembro de 2011, 14:31
Não garanto que compile.
Código: [Seleccione]
#include <Servo.h>
#include <MsTimer2.h>

#define ir1 7    // Sensor IR no pin digital 7
#define ir2 2    // Sensor IR no pin digital 2
#define ir3 4    // Sensor IR no pin digital 4

static boolean output = HIGH;
unsigned long processTime = 0;

/**
 * Continuous rotation servo class.
 * By Njay in 2009 (EmbeddedDreams.com)
 * Licensed under CC BY NC SA ([url=http://creativecommons.org/licenses/by-nc-sa/2.5/pt/]http://creativecommons.org/licenses/by-nc-sa/2.5/pt/[/url]
 * Wraps a MegaServo object to control a continuous rotation servo.
 * The servo should be calibrated to be stopped when Megaservo::write()
 * is set to 90.
 * When speed is set to 0 to stop the servo, the servo is detached to
 * make sure it will be completly stopped.
 */
class ContinuousRotationServo
{
public:
ContinuousRotationServo (unsigned char pin)  {
mSpeed = 0;
SetPin(pin);
}

ContinuousRotationServo (void)  {
mSpeed = 0;
}

inline void SetPin (unsigned char pin)  {
mPin = pin;
}

// Set the speed. 0 to be stopped, > 0 to rotate in one direction
// and < 0 to rotate on the other.
void SetSpeed (signed char speed)  {
if (speed == 0)  {
if (mSpeed != 0)  {
//Serial.println("dettach");
mServo.detach();
}
}
else  {
if (mSpeed == 0)  {
//Serial.println("attach");
mServo.attach(mPin);
}
//Serial.println("set speed");
mServo.write(90 + speed);
}
mSpeed = speed;
}

inline void Detach (void)  {
mServo.detach();
}

private:
Servo          mServo;
unsigned char  mPin;
signed char    mSpeed;    // current speed
};
ContinuousRotationServo  servoDir(10);    // servo no pino 10
ContinuousRotationServo  servoEsq(9);    // outro servo, no pino 9

void setup () {
pinMode(ir1, INPUT);     // Pin onde está o LED1 infravermelhos é pin output
pinMode(ir2, INPUT);     // Pin onde está o LED2 infravermelhos é pin output
pinMode(ir3, INPUT);     // Pin onde está o LED3 infravermelhos é pin output
MsTimer2::set(5, flash); // Defenir intrrupções de 5 em 5 ms e durante a interrupção é chamada a função flash
MsTimer2::start();       // Iniciar interrupções
}

void loop(){


if(millis() - processTime >= 10){ //A cada 10ms lê os sensores e age de acordo com o que leu, podes alterar este valor

processTime = millis();
unsigned char sensores = ((digitalRead(ir1)<<2)|(digitalRead(ir2)<<1)|(1<<digitalRead(ir3))); //Junta num byte a informacao dos 3 sensores
switch(sensores){
case 0x00: {
   para();
   meiavolta();
   break;
   }

case 0x02: {
   frente();
   break;
   }

case 0x07: {
   frente();
   break;
   }

case 0x05: {
   para();
   direita();
   break;
   }

case 0x04: {
   para();
   direita();
   break;
   }

case 0x01: {
   para();
   esquerda();
   break;
   }
}
}

}
void para(){

servoEsq.SetSpeed(0);   
servoDir.SetSpeed(0);

}

void meiavolta(){

servoEsq.SetSpeed(-45);   
servoDir.SetSpeed(-45);
delay(2000);
}

void frente(){

servoEsq.SetSpeed(-45);   
servoDir.SetSpeed(45);
}

void tras(){

servoEsq.SetSpeed(45);   
servoDir.SetSpeed(-45);
}

void direita(){

servoEsq.SetSpeed(-45);   
servoDir.SetSpeed(-45);
delay(1500);
}

void esquerda(){

servoEsq.SetSpeed(45);   
servoDir.SetSpeed(45);
delay(1500);
}


void flash() {               // Função chamda durante a interrupção
digitalWrite(12, output);  // Anceder ou apagar o LED IR
output = !output;          // Alterar o output...
}
Título: Re: The Starter
Enviado por: LoneWolf em 26 de Setembro de 2011, 15:41
Boas senso, ena ena não era preciso apanhares o peixe por mim, mas obrigado  ;) fico a dever-te uns copos ( fica prometido, um dia se nos chegarmos a encontrar).
O código compila, mas ainda não testei mas mais logo já o vou fazer. Mas já tive a ver se intendia o que fizeste e já estou com uma duvida  ;D o porque de escreveres "case 0x02" e de não ser só "case 2" ou "case 02"? Pergunto porque na pagina do arduino já vi alguns exemplos mas escreviam "case 1", "case 2",....., e por ai fora, mas ainda não tinha visto com "case 0x02" e por ai adiante.

Abraços e mais uma vez obrigado e boa continuação. 
Título: Re: The Starter
Enviado por: senso em 26 de Setembro de 2011, 18:06
No teu código tinhas estes if's:
Código: [Seleccione]
if ((digitalRead(ir1)==0) && (digitalRead(ir2)==0) && (digitalRead(ir3)==0))
  {
    para(); meiavolta(); scan();
}
if ((digitalRead(ir1)==0) && (digitalRead(ir2)==1) && (digitalRead(ir3)==0))
  {
    frente();
}
if ((digitalRead(ir1)==1) && (digitalRead(ir2)==1) && (digitalRead(ir3)==1))
  {
    frente();
}
if ((digitalRead(ir1)==1) && (digitalRead(ir2)==0) && (digitalRead(ir3)==1))
  {
    para(); direita(); scan();
}
if ((digitalRead(ir1)==1) && (digitalRead(ir2)==0) && (digitalRead(ir3)==0))
  {
    para(); direita(); scan();
}
if ((digitalRead(ir1)==0) && (digitalRead(ir2)==0) && (digitalRead(ir3)==1))
  {
    para(); esquerda(); scan();
}

O que eu fiz foi agrupar essas 3 leituras dos 3 pinos numa unica variavel usando shift lefts e OR's, ficando assim com uma unica variavel de 8 bits, em que realidade os bits que importam são os 3 menos significativos.

Agora se seguires os teus if's um a um, e agrupares os bits dos mesmos ficas com algo assim(estou a usar a mesma ordem do teu código para ser mais facil de entenderes):
Código: [Seleccione]
000
010
111
101
100
001

Esses bits são o que é usado para fazer as decisões e no case podia meter várias coisas, por exemplo podes meter em binário, usando a designação 0b, em hexadecimal usando o 0x ou em decimal se fizeres a conversão, uma nota, NUNCA mas NUNCA coloques numeros começados por 0, porque um numero começado por 0 quer dizer que está em notação octal e podes ter muitos problemas até perceber que o teu 011 não é realmente 11 mas sim 9, e não é algo que salte á vista.

Vamos lá então converter os teus vários numeros para várias notações diferentes:

Código: [Seleccione]
Os teus if's        Binário           Hexa-decimal     Decimal
000                0b00000000               0x00          0
010                0b00000010               0x02          2
111                0b00000111               0x07          7
101                0b00000101               0x05          5
100                0b00000100               0x04          4
001                0b00000001               0x01          1

Como nenhum dos numeros em hexa-decimal chega a A ou seja 10 em decimal a conversão de hexa para decimal é directa, mas só neste caso especifico.
Espero que esteja claro ;)
Pode ser que um dia volte a dar um passeio por Leiria lol.
Título: Re: The Starter
Enviado por: LoneWolf em 26 de Setembro de 2011, 22:27
Boas noites,

     bem deste-me uma "chapada" de informação, sim senhor, muito bem explicado e de fácil compreensão 5* senso e obrigado, depois da janta já testo e se tudo correr bem posto um vídeo.

Citar
Espero que esteja claro ;)

mais parece que me acendeste um holofote lol

Citar
Pode ser que um dia volte a dar um passeio por Leiria lol.

eu ainda fico a 40km de Leiria, mas as coisas bem combinadas lá estarei para pagar a promessa  ;)

Abraços e obrigado.
Título: Re: The Starter
Enviado por: LoneWolf em 30 de Setembro de 2011, 00:08
Boas noites,

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

#define ir1   7      // Sensor IR no pin digital 7
#define ir2   2      // Sensor IR no pin digital 2
#define ir3   4      // Sensor IR no pin digital 4
unsigned long processTime = 0;
static boolean output = HIGH;
void setup(){

   Serial.begin(9600);
   pinMode(ir1, INPUT);     // Pin onde está o LED1 infravermelhos é pin output
   pinMode(ir2, INPUT);     // Pin onde está o LED2 infravermelhos é pin output
   pinMode(ir3, INPUT);     // Pin onde está o LED3 infravermelhos é pin output
   MsTimer2::set(5, flash); // Defenir intrrupções de 5 em 5 ms e durante a interrupção é chamada a função flash
   MsTimer2::start();       // Iniciar interrupções

}

void loop(){

   if(millis() - processTime >= 250){   //A cada 250ms lê os sensores e imprime para o monitor serial

      processTime = millis();
      unsigned char sensores = ((digitalRead(ir1)<<2)|(digitalRead(ir2)<<1)|(1<<digitalRead(ir3)));   //Junta num byte a informacao dos 3 sensores
      Serial.print("Valor dos sensores: ");
      Serial.print(sensores, DEC);
      Serial.println();
   }
}

void flash() {               // Função chamda durante a interrupção
   digitalWrite(12, output);  // Anceder ou apagar o LED IR
   output = !output;          // Alterar o output...
}
 

Devido ao erro que estava a ter com o robot usei o código acima para testar os 3 sensores ao mesmo tempo que era uma das coisas que não estava a conseguir, obrigado senso  ;) só adicionei o "void flash()" e os valores que me da são:
Citar
Valor dos sensores: 6
Valor dos sensores: 6
Valor dos sensores: 6
Valor dos sensores: 6
Valor dos sensores: 6
Valor dos sensores: 6

da esses valores continuamente mesmo eu estando a tentar que ele detecte alguma coisa......

Citar
Valor dos sensores: 6
Valor dos sensores: 6
Valor dos sensores: 6
Valor dos sensores: 1
Valor dos sensores: 6
Valor dos sensores: 1
Valor dos sensores: 6
Valor dos sensores: 3
Valor dos sensores: 1
Valor dos sensores: 3
Valor dos sensores: 6
Valor dos sensores: 6
Valor dos sensores: 6
Valor dos sensores: 6


mas se eu usar o comando da tv como emissor da os valores acima, onde esta o erro de ele não detectar o "obstáculo"?
Pensei que podia ser dos emissores mas com a maquina digital vi que os led's emissores estão a funcionar.

Abraços  ;)
Título: Re: The Starter
Enviado por: senso em 30 de Setembro de 2011, 00:11
Podes mostrar umas fotos dos sensores?
Experimenta ligar sempre os emissores IR, e não pulsar com a função flash.
Título: Re: The Starter
Enviado por: LoneWolf em 30 de Setembro de 2011, 01:11
Liguei os Led's emissores com uma resistencia de 220 aos 5V do arduino e da os mesmos valores.

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg691.imageshack.us%2Fimg691%2F5108%2Fsensoresir.jpg&hash=9360517857828722c659f0fa9b92a777)

Receptor: 3 patas
Emissor: 2 patas
Título: Re: The Starter
Enviado por: senso em 30 de Setembro de 2011, 01:20
Imagino que os receptores sejam TSOP's, provavelmente TSOP1736 ou TSOP1738 para detectar bem o sinal do comando, esses receptores estão á espera de um sinal modulado por uma onda quadrada de 36 ou 38Khz, conforme o modelo, para simplificar, o melhor seria usar foto-transistores, e não esses receptores.
Reparei que dá o valor 6, isso quer dizer que o sensor ir1 e o ir2 estão a 1 e o ir3 está a 0, use antes este código para ter os 3 valores separados e assim ser melhor de se entender o que os sensores estão a ler:

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

#define ir1   7      // Sensor IR no pin digital 7
#define ir2   2      // Sensor IR no pin digital 2
#define ir3   4      // Sensor IR no pin digital 4
unsigned long processTime = 0;
static boolean output = HIGH;
void setup(){

   Serial.begin(9600);
   pinMode(ir1, INPUT);     // Pin onde está o LED1 infravermelhos é pin output
   pinMode(ir2, INPUT);     // Pin onde está o LED2 infravermelhos é pin output
   pinMode(ir3, INPUT);     // Pin onde está o LED3 infravermelhos é pin output
   MsTimer2::set(5, flash); // Defenir intrrupções de 5 em 5 ms e durante a interrupção é chamada a função flash
   MsTimer2::start();       // Iniciar interrupções

}

void loop(){

   if(millis() - processTime >= 250){   //A cada 250ms lê os sensores e imprime para o monitor serial

      processTime = millis();
      Serial.print("sensor 1: ");
      Serial.print(digitalRead(ir1), DEC);
      Serial.print(" | ");
      Serial.print("sensor 2: ");
      Serial.print(digitalRead(ir2), DEC);
      Serial.print(" | ");
      Serial.print("sensor 3: ");
      Serial.print(digitalRead(ir3), DEC);
      Serial.println();
   }
}

void flash() {               // Função chamda durante a interrupção
   digitalWrite(12, output);  // Anceder ou apagar o LED IR
   output = !output;          // Alterar o output...
}
Título: Re: The Starter
Enviado por: LoneWolf em 30 de Setembro de 2011, 02:39
Citar
sensor 1: 1 | sensor 2: 1 | sensor 3: 1
sensor 1: 1 | sensor 2: 1 | sensor 3: 1

Da-me esses valores, e continua só a detectar o Led do comando da TV, mas se usar este código:

Código: [Seleccione]
#include <MsTimer2.h>
#define irx 2   // Sensor IR no pin digital 2

static boolean output = HIGH;  // Variável para defenir o estado do LED de infravermelhos, é estática para ser usada durante a interrupção

void setup(){
  pinMode(irx, INPUT);     // Pin onde está o LED infravermelhos é pin output
  Serial.begin(9600);      // Iniciar comunicação Serial com o computador...
  MsTimer2::set(5, flash); // Defenir intrrupções de 5 em 5 ms e durante a interrupção é chamada a função flash
  MsTimer2::start();       // Iniciar interrupções
}

void loop(){
  while(digitalRead(irx));   // Enquanto não houver nada no Sensor não sai daqui, o sensor coloca 1 quando n detecta nada e passa a 0 qd detecta algo
  Serial.println("ICEBERG!"); // Oi.. Apanhou qualquer coisa... OH NÂO É UM ICEBERG... OH GOD, THE PAIN, CAN YOU FEEL THE PAIN?
  // MAYDAY MAYDAY!
  // - Alô diz iz German Cost Guard, can we help you? (Sotaque alemão)
  // YES, YES! We're SINKING!
  // - Okay so what are you sinking (thinking) about? (ahha XD)
}

void flash() {               // Função chamda durante a interrupção
  digitalWrite(12, output);  // Anceder ou apagar o LED IR
  output = !output;          // Alterar o output...
}

detecta bem um objecto entre 10~20cm ( 1 sensor ).
Se eu encontra-se a datasheet do receptor ainda podia ser que ajuda-se mas com o que esta escrito em 2 dos receptores  ( v32238) não encontro nada e o outro não tem nada escrito, tenho de ir ver se tenho mais algum sensor, encoder's de impressoras sei que tenho pode é não dar para o serviço que desejado.
Título: Re: The Starter
Enviado por: LoneWolf em 30 de Setembro de 2011, 23:20
Boas noites,

   tenho uma duvida antes de deixar estes sensores de lado e voltarem a origem deles( I-droid 01) então se com o código  usado na resposta anterior eles detectam o objecto ( 10-20cm) o que tem o código para detectar facilmente??? a função "pulse" esta a fazer com que o led esteja a piscar a uma determinada frequência? é que não estou a perceber o porque de receber o sinal com um código e com outro não ( sabendo que ambos os códigos deveriam funciona).

Abraços.
 
Título: Re: The Starter
Enviado por: senso em 01 de Outubro de 2011, 12:18
No código que só testa um, tem um while, que fica á espera que ele detecte alguma coisa, que simplesmente está lá tempo suficiente para que ele acabe por detectar o pulso do led emissor IR, mas não é a forma mais correcta de o fazer.
Título: Re: The Starter
Enviado por: LoneWolf em 01 de Outubro de 2011, 20:31
Boas,

Eu sei que o código só testa um e que fica ali a espera de "apanhar" algo, o facto de o Led estar a ser pulsado pensei que poderia estar a por uma determinada frequência no piscar do Led.

Já agora uma opinião os receptores que tiramos das TV's, leitores DVD/K7, receptores de satélite,...... pode acontecer-me o mesmo? se sim o que aconselham a comprar, um sharp?

Abraços e boa continuação  ;)   
Título: Re: The Starter
Enviado por: senso em 01 de Outubro de 2011, 21:42
Eu tenho TCRT5000 da vishay, mas há muitos do género, e baratinhos. vou procurar mais alguns nomes.
Mas podes tentar com LDR's e leds normais.
Os TCRT5000 são estes:
http://pt.mouser.com/ProductDetail/Vishay-Semiconductors/TCRT5000L/?qs=sGAEpiMZZMuIaPd8bG7xI20Os5bxEd6lBO%2fQ%252byE6et0%3d (http://pt.mouser.com/ProductDetail/Vishay-Semiconductors/TCRT5000L/?qs=sGAEpiMZZMuIaPd8bG7xI20Os5bxEd6lBO%2fQ%252byE6et0%3d)

Se quiseres uns quantos vou daqui a uns tempos fazer a uma encomenda e posso juntar á encomenda sem qualquer problema.
Título: Re: The Starter
Enviado por: LoneWolf em 02 de Outubro de 2011, 20:38
Boas,
Citar
Os TCRT5000 são estes:
http://pt.mouser.com/ProductDetail/Vishay-Semiconductors/TCRT5000L/?qs=sGAEpiMZZMuIaPd8bG7xI20Os5bxEd6lBO%2fQ%252byE6et0%3d (http://pt.mouser.com/ProductDetail/Vishay-Semiconductors/TCRT5000L/?qs=sGAEpiMZZMuIaPd8bG7xI20Os5bxEd6lBO%2fQ%252byE6et0%3d)

Se quiseres uns quantos vou daqui a uns tempos fazer a uma encomenda e posso juntar á encomenda sem qualquer problema.

Ainda tenho muitas caixas, caixinhas e caixotes  ;D para ver se tenho IR, se não tiver nada compro uns quantos, obrigado pela oferta

Citar
Mas podes tentar com LDR's e leds normais.


LDR's hummm penso que nas coisas do asena vinha lá uns LDR's gigantes, se ninguém requisitou...... ;D ;D já tem utilidade LOL

Abraços e obrigado.
Título: Re: The Starter
Enviado por: LoneWolf em 20 de Janeiro de 2012, 18:05
Boas, ora aqui fica um update do robo, tive de mudar de chassi porque o outro é um martírio ligar la alguma coisa (falta de espaço) hoje a ver dou um avanço nisto.....

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg718.imageshack.us%2Fimg718%2F7832%2F20012012468.jpg&hash=d7e26cff54640ea8cfb9f0a74de6e155)

Abraço.
Título: Re: The Starter
Enviado por: TigPT em 20 de Janeiro de 2012, 18:25
Faz lembrar o raposa da idmind :P

Muito bem!
Título: Re: The Starter
Enviado por: LoneWolf em 20 de Janeiro de 2012, 18:45
Ui, desconhecia isso, obrigado, isso deu-me outra ideia  ;)

Já agora, tenho um router Thomson TG784 e parece que não da para ligar ao arduino, será que dava para ligar um nokia E52 ou o N95 e usar o wireless ou bluetooth para comunicar com o robo?

Abraço.
Título: Re: The Starter
Enviado por: TigPT em 20 de Janeiro de 2012, 18:46
Vê se podes instalar-lhe o DD-WRT (http://www.dd-wrt.com/site/index)
Título: Re: The Starter
Enviado por: LoneWolf em 20 de Janeiro de 2012, 18:57
Já tinha visto nesse link e por thomson TG784 não encontrou nada, vou abrir para ver se tem info la dentro na pcb
...bem só agora vi, isto tem de levar 22V 0,9A vai ser bonito vai
Abraço.
Título: Re: The Starter
Enviado por: LoneWolf em 20 de Janeiro de 2012, 19:28
 :'(  Pois não encontro nada, os IC disto são da Broadcom e com esse nome não tem la thomson nenhum.

Título: Re: The Starter
Enviado por: zordlyon em 20 de Janeiro de 2012, 19:46
Que broadcom é??

O meu também é broadcom...

Mas trazia porta serial como te disse...

Cumprimentos,
André Carvalho.
Título: Re: The Starter
Enviado por: LoneWolf em 20 de Janeiro de 2012, 19:58
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg560.imageshack.us%2Fimg560%2F701%2Fpcbtg784.jpg&hash=2bb918bb53dd062787676b5f77163a0d)

1- BCM5325EKQMG
2-BCM6358KFBG
3-BCM4318KFBG
4-acho que aqui é o jtag

penso que se queira o nº2 segundo as minhas pesquisas o BCN6358 ou xxxx48 é o mesmo.

Abraço.
Título: Re: The Starter
Enviado por: senso em 20 de Janeiro de 2012, 20:08
Acho que o GnGz quer saber é o modelo do router em si e não dos chips, mas não queres de todo um chip desses ou outro, porque, o numero 1 é um switch ethernet de 6 portas, acima dele podes ver os transformadores de isolamento das fichas RJ-45, o segundo chip é o SoC em si, é quem corre o SO, o terceiro é quem faz o show todo para teres WiFi, e por fim, 4 pinos diria mais serial, Jtag tem no minimo 6 ou 8 pinos não tenho certeza.
Título: Re: The Starter
Enviado por: LoneWolf em 20 de Janeiro de 2012, 20:12
Correcto engane a meter a bola era para meter junto do condensador a direita, esse é o TTL, é o que se quer certo?.

E o zordlyon já sabia do modelo ( Thomson TG784) dai ter dado o dos chips, e obrigado pela info senso.

Abraço.
Título: Re: The Starter
Enviado por: zordlyon em 20 de Janeiro de 2012, 20:23
Exactamente o 4 deve ser a tua serial, deves quem olha pa foto de cima para baixo o seguinte, GND, TX, RX, 3v3..

Agora só tens que ver se isso da para flashar, se der, é ligares -lhe um conversor 3v3 -5v USB, e flashar isso..

Cumprimentos,
André Carvalho.
Título: Re: The Starter
Enviado por: LoneWolf em 20 de Janeiro de 2012, 20:31
Encontrei agora isto, é RX, TX, GND e 3V3

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimg11.imageshack.us%2Fimg11%2F8691%2Ftg784ttl1.jpg&hash=6736b4753cb570e92560fc76e631e17a)

mas ainda não descobri se da para flashar.
Título: Re: The Starter
Enviado por: zordlyon em 20 de Janeiro de 2012, 20:47
So falhei no GND - RX lol...

Tens que ver existem uns 3 ou 4 softwares para flashar...

Cumprimentos,
André Carvalho.
Título: Re: The Starter
Enviado por: senso em 20 de Janeiro de 2012, 20:50
Não te metas a mexer no Jtag, vais dar cabo da rom base e nunca mais fazes nada com isso, ainda hoje postaram um tutorial sobre como compilar e flashar um router com openWrt, e basta ires á Wiki do openWrt que tens lá tudo o que precisas de saber e com imagens já pré-compiladas para o primeiro flash e para versões diferentes.
Título: Re: The Starter
Enviado por: zordlyon em 20 de Janeiro de 2012, 20:56
Não te metas a mexer no Jtag, vais dar cabo da rom base e nunca mais fazes nada com isso, ainda hoje postaram um tutorial sobre como compilar e flashar um router com openWrt, e basta ires á Wiki do openWrt que tens lá tudo o que precisas de saber e com imagens já pré-compiladas para o primeiro flash e para versões diferentes.

Fica aqui os routers compativeis com openwrt...

http://wiki.openwrt.org/toh/start (http://wiki.openwrt.org/toh/start)
Título: Re: The Starter
Enviado por: LoneWolf em 21 de Janeiro de 2012, 00:16
Obrigado, eu tenho pesquisado mas pouco ou nada encontro sobre o TG784 da Thomson o que encontro é muitos outros router a usar o broadcom ( BCM6358) será que posso usar um desses?

Citar
Não te metas a mexer no Jtag
Não só falei porque era info que tinha encontrado.

Abraço e boa continuação.
Título: Re: The Starter
Enviado por: LoneWolf em 21 de Janeiro de 2012, 16:19
Boas, depois de muito tentar encontrar algo relacionado com thomson TG784 as pesquisas não tiveram sucesso, encontro muita coisa relacionada com BCM63xx ou BCM6358 em outros projectos a memoria flash que usa não é a mesma do meu router mas só tentando flashar isto para ver se funciona mas pelos vistos ainda tenho de investir mais uns cobres num conversor usb para ttl\serial eu tenho aqui o conversor UC-232A usb\serial ( http://www.aten.com/products/productItem.php?model_no=UC232A (http://www.aten.com/products/productItem.php?model_no=UC232A) ) datasheet (só encontro do uc-232r e não do 232a http://pdf1.alldatasheet.com/datasheet-pdf/view/202293/FTDI/UC232R.html (http://pdf1.alldatasheet.com/datasheet-pdf/view/202293/FTDI/UC232R.html) ) pensei que dava mas pelos vistos não serve para isto.

Bem vou continuar e uma boa continuação para vocês

Abraço.
Título: Re: The Starter
Enviado por: LoneWolf em 31 de Janeiro de 2012, 20:38
Boas noites, depois de uns testes "falhados" tive de rever umas coisas no robo e neste momento recebeu um novo nome Starter Evo. tentei fazer o pino e de o meter a dançar ao mesmo tempo mas foi má ideia  ;D ;D ;D ;D

Então deixo um pequeno vídeo dele em movimento sem pinos nem danças, controlado por serial monitor do IDE do arduino, isto de gravar com o tele numa mão e controlar com a outra não é la muito fácil, por isso não liguem a qualidade.

Starter Evo..mp4 (http://www.youtube.com/watch?v=SPw8KJl_w1Y#)

Abraços.
Título: Re: The Starter
Enviado por: zordlyon em 31 de Janeiro de 2012, 21:43
Brutal LoneWolf, exactamente o que quero fazer...

Tou a espera das minhas lagartas para depois me fazer ao piso e tentar fazer algo como tu...  ;)

Cumprimentos,
André Carvalho.
Título: Re: The Starter
Enviado por: LoneWolf em 31 de Janeiro de 2012, 22:00
Citar
Brutal LoneWolf, exactamente o que quero fazer...

Obrigado, como estava em "obras" na altura achei que seria boa ideia, assim deu-te uma ideia de como fazer e aprendi mais umas coisas....como fazer uma gearbox por ex. que muito neurónios e pestanas me queimou

Citar
Tou a espera das minhas lagartas para depois me fazer ao piso e tentar fazer algo como tu...  ;)

Força nisso, no que poder ajudar terei muito gosto.

Abraço.
Título: Re: The Starter
Enviado por: zordlyon em 31 de Janeiro de 2012, 22:25
Citar
Brutal LoneWolf, exactamente o que quero fazer...

Obrigado, como estava em "obras" na altura achei que seria boa ideia, assim deu-te uma ideia de como fazer e aprendi mais umas coisas....como fazer uma gearbox por ex. que muito neurónios e pestanas me queimou

Citar
Tou a espera das minhas lagartas para depois me fazer ao piso e tentar fazer algo como tu...  ;)

Força nisso, no que poder ajudar terei muito gosto.

Abraço.

Muito obrigado pelo apoio, e no que precisares também sabes que tas a vontade  ;)

Cumprimentos,
André Carvalho.
Título: Re: The Starter
Enviado por: LoneWolf em 01 de Fevereiro de 2012, 16:14
Ola e boas tardes, antes de mais espero que tenham gostado do Starter Evo. agora ando para dar o passo seguinte comandar remotamente o robô e para isso tenho o router da thomson e que ainda não tentei flashar e para tal tenho uma duvidas talvez um pouco ou de todo parvas, então aqui vai:

Se a coisa correr mal posso tentar flashar mais vezes ou tem de ser a 1ª?

Para se flashar o router tem de se ter um cabo de serial que tenha 3,3V, será que não da para ligar o GND, TX e RX do cabo serial que aqui tenho e ligar os 3v3 do arduino?

Como não encontro em nenhum dos programas que indicaram este router tenho andado a procura de outros modelos que usem estes chips, e ate se encontra alguns com chips iguais, a duvida é se posso usar os ficheiros desses modelos para flashar o meu? 

Também me indicaram um cabo da nokia o C-42 que após uma modificação serve de cabo serial o que ainda não encontrei nenhum por cá só tenho o c-52 e se ate ao fim de semana se não encontrar la terei de fazer um com um MAX232 ou com o MAX 3232 qual aconselham?

Outra duvida que tenho, já vi alguns vídeos na net de se controlar o robô por teclado mas este esta sempre a ler as teclas que são pressionadas, isso tem algum nome especifico para se poder procurar? se tiverem ai algum link que explique isso melhor ou que alguém saiba como se faz?

Abraço.
Título: Re: The Starter
Enviado por: zordlyon em 01 de Fevereiro de 2012, 16:26
Ola e boas tardes, antes de mais espero que tenham gostado do Starter Evo. agora ando para dar o passo seguinte comandar remotamente o robô e para isso tenho o router da thomson e que ainda não tentei flashar e para tal tenho uma duvidas talvez um pouco ou de todo parvas, então aqui vai:

Se a coisa correr mal posso tentar flashar mais vezes ou tem de ser a 1ª?

Normalmente isso corre bem há primeira  ;D
Podes ter a infelicidade de fazer um "break" ao router, mas no meu caso, correu mal as 2 primeiras vezes e a 3a flashei sem problemas...

Citar
Para se flashar o router tem de se ter um cabo de serial que tenha 3,3V, será que não da para ligar o GND, TX e RX do cabo serial que aqui tenho e ligar os 3v3 do arduino?

Isso não te sei responder....

Citar
Como não encontro em nenhum dos programas que indicaram este router tenho andado a procura de outros modelos que usem estes chips, e ate se encontra alguns com chips iguais, a duvida é se posso usar os ficheiros desses modelos para flashar o meu? 

Não faço a minima ideia, mas se calhar quem te responde facilmente a isso é no forum do OpenWrt...

Citar
Também me indicaram um cabo da nokia o C-42 que após uma modificação serve de cabo serial o que ainda não encontrei nenhum por cá só tenho o c-52 e se ate ao fim de semana se não encontrar la terei de fazer um com um MAX232 ou com o MAX 3232 qual aconselham?

Na sei tambem  ;D

Citar
Outra duvida que tenho, já vi alguns vídeos na net de se controlar o robô por teclado mas este esta sempre a ler as teclas que são pressionadas, isso tem algum nome especifico para se poder procurar? se tiverem ai algum link que explique isso melhor ou que alguém saiba como se faz?

Após teres o router configurato com algum dos firmwares "Linux embebido", no linux quando fazes na linha de comandos:
Código: [Seleccione]
echo ola> /dev/tty.usb
O que ele te faz é mandar para a porta serial o "ola"...

Ao ligares o teu TX-RX do router ao arduino, se lhe mandares por exemplo "w", no arduino só precisas fazer:
Código: [Seleccione]
if(Serial.read()=="w")
  //andar pra frente

Do lado do computador so precisas de algo que te mande via SSH o teu "W" para o terminal do linux no router...
em Python fica algo assim:
Código: [Seleccione]
def: Forward
 ssh.exec_command("echo w>/dev/tty.usb")

Depois já tens no arduino a ler esse "W" e a dizer-lhe para fazer algo... ;)
Abraço.
[/quote]
Título: Re: The Starter
Enviado por: LoneWolf em 01 de Fevereiro de 2012, 16:43
Citar
Normalmente isso corre bem há primeira  ;D
Podes ter a infelicidade de fazer um "break" ao router, mas no meu caso, correu mal as 2 primeiras vezes e a 3a flashei sem problemas...

Acho que com isso te respondes-te a duas perguntas lol, se assim é posso "errar" a vezes que bem entender  ;D e....
Citar
Não faço a minima ideia, mas se calhar quem te responde facilmente a isso é no forum do OpenWrt...


...como o meu inglês para escrever parece mandarim, lá terei de tentar os ficheiros de outros modelos.

Obrigado pelo adianto do código  ;)
A ver o que dizem mais.

Abraço.
Título: Re: The Starter
Enviado por: zordlyon em 01 de Fevereiro de 2012, 17:12
Citar
Normalmente isso corre bem há primeira  ;D
Podes ter a infelicidade de fazer um "break" ao router, mas no meu caso, correu mal as 2 primeiras vezes e a 3a flashei sem problemas...

Acho que com isso te respondes-te a duas perguntas lol, se assim é posso "errar" a vezes que bem entender  ;D e....
Citar
Não faço a minima ideia, mas se calhar quem te responde facilmente a isso é no forum do OpenWrt...


...como o meu inglês para escrever parece mandarim, lá terei de tentar os ficheiros de outros modelos.

Obrigado pelo adianto do código  ;)
A ver o que dizem mais.

Abraço.

Google is your friend, tens o tradutor da google, escreves em Portugues e voilá, do lado de lá sai inglês...  ;)

Cumprimentos,
André Carvalho.
Título: Re: The Starter
Enviado por: LoneWolf em 01 de Fevereiro de 2012, 17:15
Citar
Google is your friend, tens o tradutor da google, escreves em Portugues e voilá, do lado de lá sai inglês...  ;)

Pois eu sei disso, o pior é que o tradutor não 100% eficaz e pode gerar algum insulto  ;D ;D ;D , mas sim vou tentar  ;)

Abraço.