collapse

* Posts Recentes

O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Emulador NES em ESP32 por dropes
[10 de Abril de 2024, 15:30]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: PAP - SONDA MOVEL - explorUino [CONCLUÍDO]  (Lida 57651 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: PAP - SONDA MOVEL - explorUino
« Responder #120 em: 12 de Junho de 2010, 14:39 »
De pressão não estou a ver mas de humidade tens uns muito conhecidos que são de humidade e temperatura sht11.

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #121 em: 12 de Junho de 2010, 15:01 »
e sao muito caros?

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: PAP - SONDA MOVEL - explorUino
« Responder #122 em: 12 de Junho de 2010, 15:25 »
Não são lá muito baratos: http://pt.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=6675265

Mas tens estes:
Sensor Humidade - http://www.sparkfun.com/commerce/product_info.php?products_id=9569 -    
$16.95
Sensor Humidade + Temperatura - http://www.sparkfun.com/commerce/product_info.php?products_id=8257 - $41.95

Fala com o TigPT que a Loja LusoRobótica é distribuidora da SparkFun!
« Última modificação: 12 de Junho de 2010, 15:29 por metRo_ »

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re: PAP - SONDA MOVEL - explorUino
« Responder #123 em: 12 de Junho de 2010, 15:56 »

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: PAP - SONDA MOVEL - explorUino
« Responder #124 em: 12 de Junho de 2010, 16:02 »
Tinha andado lá a dar uma volta mas não o vi mas também não usei a pesquisa :p O preço até é bom em relação ao que anda por aí :)

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re: PAP - SONDA MOVEL - explorUino
« Responder #125 em: 12 de Junho de 2010, 16:40 »

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #126 em: 12 de Junho de 2010, 19:45 »
epah sao um bocado caros lool

nao me posso "esticar" muito mesmo assim para me comprarem este material ja foi o que foi loool  :P

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #127 em: 12 de Junho de 2010, 20:21 »
como o sensor ja esta funcionar... ::)

hoje dediquei.me a testar a parte dos motores em 5 min fiz um carro de teste arranjei um bocado de madeira e um rolon :D
a foto nao esta grande coisa pois è tirada de uma web
ora vejam:


Uploaded with ImageShack.us

falta.me uma roda :( nao arranjei nenhuma para por o bicho a andar mas ja deu para fazer testes e para ver se estava tudo correcto esta tudo a funcionar como previsto mas ha um problema de gestao de dados

para conseguir escrever o valor da temperatura no python correctamente tenho de ter um delay de 300 milisegundos no arduino quando leio o valor do sensor entao como tenho de ter esse delay vou ter problemas em controlar o carro fica muito lento

entao o que acontece é

eu carrego para andar para a frente ao fim de 5.... 6 segundos os motores começam a rodar ou entao nao roda fica tipo bloqueado

se tirar a leitura do sensor no arduino ja funciona tudo na perfeiçao

alguem tem ideias de como posso dar a volta  isto

eu pensei numa coisa nao sei se é possivel

eu pensei em fazer tipo um loop so para a temperatura e ter outro para os motores é possivel ??




« Última modificação: 13 de Junho de 2010, 01:03 por _ze_pedro_ »

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #128 em: 14 de Junho de 2010, 00:16 »
bem...

depois de um dia a pensar na soluçao para o problema...ja consegui resolver  ;D

o que fiz foi fazer esperar a leitura do sensor de forma a nao ter de esperar todo o programa

o programa:

Citar
int luz = (2);
int pwn_esq = (5);
int pwn_dir = (6);
int camara1 = (12);
int camara2 = (13);
int a = 0;
int i = 0;

float tempC;

int tempPin = 0;
int s = 0;


/* Configuração de Arranque */
void setup()
{
 
  Serial.begin(9600); // Abrir a porta série
  pinMode (3, OUTPUT); // Declarar o o pin do motor esquerdo OUTPUT
  pinMode (4, OUTPUT); // Declarar o o pin do motor esquerdo OUTPUT
  pinMode (7, OUTPUT); // Declarar o o pin do motor direito OUTPUT
  pinMode (8, OUTPUT); // Declarar o o pin do motor direito OUTPUT
  pinMode (pwn_esq, OUTPUT); // Declarar o o pin do pwn do motor esquerdo OUTPUT
  pinMode (pwn_dir, OUTPUT); // Declarar o o pin do pwn do motor direito OUTPUT
  pinMode (camara1, INPUT); // Declarar o o pin da camara OUTPUT
  pinMode (camara2, INPUT); // Declarar o o pin da camara OUTPUT
 
}

void loop()

{
  if (s == 10000)
    {
    tempC = analogRead(tempPin); 
    tempC = (5.0 * tempC * 100.0)/1024.0; 
    Serial.print((byte)tempC);             
    s = 0;
    }
  else
    s = s + 1;
 
  if ( Serial.available() > 0) // Se ouver entrada de dados por Serial...
    {
    char inByte = Serial.read(); // ler um BYTE
    delay(10);
    if (inByte == '*') // Se o BYTE lido for um asterisco a seguir vem os dados...
      {
      int len = 3; // A string esperada tem 6 BYTES
      char inString[len]; // declarar a variavel da string
      for (int i = 0; i <= len; i++)
        {
        inString = Serial.read();
        }
     
   
      // Motores / Direcção
      {
      if ((inString[0] == 0 + 0x30) && (inString[1] == 0 + 0x30))
        {
        // Mortor esquerda parado 
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        analogWrite (pwn_esq, 0);
             
        // Motor direita parado
        digitalWrite(7, LOW);
        digitalWrite(8, LOW);
        analogWrite (pwn_dir, 0);
        }
     
      else
        if ((inString[0] == 1 + 0x30) && (inString[1] == 0 + 0x30))
          {
           // Mortor esquerda frente 
          digitalWrite(3, LOW);
          digitalWrite(4, HIGH);
          analogWrite (pwn_esq, 255);
             
          // Motor direita frente
          digitalWrite(7, LOW);
          digitalWrite(8, HIGH);
          analogWrite (pwn_dir, 255);
          }     
       
        else
          if ((inString[0] == 2 + 0x30) && (inString[1] == 0 + 0x30))
            {
            // Mortor esquerda tras 
            digitalWrite(3, HIGH);
            digitalWrite(4, LOW);
            analogWrite (pwn_esq, 255);
             
            // Motor direita tras
            digitalWrite(7, HIGH);
            digitalWrite(8, LOW);
            analogWrite (pwn_dir, 255);
            }
               
          else
            if ((inString[0] == 0 + 0x30) && (inString[1] == 1 + 0x30))
              {
              // Mortor esquerda tras 
              digitalWrite(3, HIGH);
              digitalWrite(4, LOW);
              analogWrite (pwn_esq, 255);
             
              // Motor direita frente
              digitalWrite(7, LOW);
              digitalWrite(8, HIGH);
              analogWrite (pwn_dir, 255);
              }
           
            else
              if ((inString[0] == 1 + 0x30) && (inString[1] == 1 + 0x30))
                {
                // Mortor esquerda parado 
                digitalWrite(3, LOW);
                digitalWrite(4, LOW);
                analogWrite (pwn_esq, 0);
                             
                // Motor direita frente
                digitalWrite(7, LOW);
                digitalWrite(8, HIGH);
                analogWrite (pwn_dir, 255);
                }
             
              else
                if ((inString[0] == 2 + 0x30) && (inString[1] == 1 + 0x30))
                  {
                  // Mortor esquerda parado 
                  digitalWrite(3, LOW);
                  digitalWrite(4, LOW);
                  analogWrite (pwn_esq, 0); 
                 
                  // Motor direita tras
                  digitalWrite(7, HIGH);
                  digitalWrite(8, LOW);
                  analogWrite (pwn_dir, 255);
                  }
               
                else
                  if ((inString[0] == 0 + 0x30) && (inString[1] == 2 + 0x30))
                    {
                    // Mortor esquerda frente 
                    digitalWrite(3, LOW);
                    digitalWrite(4, HIGH);
                    analogWrite (pwn_esq, 255);
                               
                    // Motor direita tras
                    digitalWrite (7, HIGH);
                    digitalWrite(8, LOW);
                    analogWrite (pwn_dir, 255);
                    }
                 
                  else
                    if ((inString[0] == 1 + 0x30) && (inString[1] == 2 + 0x30))
                      {
                      // Mortor esquerda frente 
                      digitalWrite(3,LOW);
                      digitalWrite(4,HIGH);
                      analogWrite (pwn_esq, 255);
                               
                      // Motor direita parado
                      digitalWrite(7,LOW);
                      digitalWrite(8,LOW);
                      analogWrite (pwn_dir, 0);
                     
                      }
                   
                    else
                      if ((inString[0] == 2 + 0x30) && (inString[1] == 2 + 0x30))
                        {
                        // Mortor esquerda tras 
                        digitalWrite(3,HIGH);
                        digitalWrite(4,LOW);
                        analogWrite (pwn_esq, 255);
                               
                        // Motor direita parado
                        digitalWrite(7,LOW);
                        digitalWrite(8,LOW);
                        analogWrite (pwn_dir, 0);
                     
                        }
      }               
                   
        // luz
       
        if((inString[3] == 1 + 0x30) || ((inString[2] == 0 + 0x30) && (i == 1)) && (a == 1))
          {
          digitalWrite(luz, HIGH);
          i = 1;
          a = 1;
          }
         
          else
            if ((inString[2] == 1 + 0x30) || ((inString[3] == 0 + 0x30) && (i == 0) && (a == 0)))
              {
              digitalWrite(luz, LOW); 
              i = 0;
              a = 0;
              }
         
     
     
      }
  }
}

foi a maneira que arranjei

secalhar ha maneira de fazer de forma mais simples mas o que interessa è que esta a funcionar

cump.
ze pedro

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #129 em: 15 de Junho de 2010, 22:48 »
bem chegou hoje a carta do xbee explore :D

amanha vou buscar aos correios

so ja falta a shield para o arduino

queria fazer uma perguntinha a quem percebe da coisa

em termos de xbee é muito complicado de configurar?? nunca trabalhei com nada igual nem parecido lool

se alguem me puder dar umas dicas agradecia ;)

cump.
ze pedro

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 651
    • Guibot
Re: PAP - SONDA MOVEL - explorUino
« Responder #130 em: 16 de Junho de 2010, 09:23 »
Se o que pretendes é apenas comunicação entre dois módulos é relativamente fácil configurar, experimenta ver esta página onde tem muita informação, julgo que o que precisas mesmo está no ponto 3.

http://www.ladyada.net/make/xbee/usermanual.html

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #131 em: 16 de Junho de 2010, 12:37 »
obrigado ;)

tenho de seguir esses passos todos nao è ?;)

http://www.ladyada.net/make/xbee/arduino.html

cump.
ze pedro

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 651
    • Guibot
Re: PAP - SONDA MOVEL - explorUino
« Responder #132 em: 16 de Junho de 2010, 13:31 »
Tens 2 maneiras de configurar, ou usando o terminal ou usando o X-CTU que é o software disponibilizado pelo fabricante da XBEE. Eu prefiro o X-CTU   :)

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #133 em: 16 de Junho de 2010, 13:35 »
ok ok :D

eu ja fiz o download do X-CTU vou utilizar essa maneira lool :P

mas ainda me falta a shield para o arduino è so o que falta depois é que vou fazer a configuraçao

se tiver duvidas vou postando aqui ;)

obrigado;)

Offline _ze_pedro_

  • Mini Robot
  • *
  • Mensagens: 107
Re: PAP - SONDA MOVEL - explorUino
« Responder #134 em: 16 de Junho de 2010, 22:16 »
micro tenho uma questao para te fazer è sobre o teu pan and tilt eu nao vou utilizar isso no projecto mas è so para saber lool

é que tenho estado a ver e na o consigo perceber lool


Citar
ser.write("0")
ser.write("+")

envias isto para o arduino que é a string 4 e 5

depois no arduino tens :

Citar
if(inString[4] == 1 + 0x30){
        dim_pan(6);
      }else if(inString[4] == 2 + 0x30){
        dim_pan(4);
      }else if(inString[4] == 3 + 0x30){
        dim_pan(2);
      }else if(inString[4] == 4 + 0x30){
        dim_pan(1);
      }else if(inString[4] == 5 + 0x30){
        aum_pan(1);
      }else if(inString[4] == 6 + 0x30){
        aum_pan(2);
      }else if(inString[4] == 7 + 0x30){
        aum_pan(4);
      }else if(inString[4] == 8 + 0x30){
        aum_pan(6);
      }
     
     
      /* Tilt */
      if(inString[5] == 1 + 0x30){
        aum_tilt(6);
      }else if(inString[5] == 2 + 0x30){
        aum_tilt(4);
      }else if(inString[5] == 3 + 0x30){
        aum_tilt(2);
      }else if(inString[5] == 4 + 0x30){
        aum_tilt(1);
      }else if(inString[5] == 5 + 0x30){
        dim_tilt(1);
      }else if(inString[5] == 6 + 0x30){
        dim_tilt(2);
      }else if(inString[5] == 7 + 0x30){
        dim_tilt(4);
      }else if(inString[5] == 8 + 0x30){
        dim_tilt(6);
      }
     

nao estou a entender como consegues enviar o  valor do joystick e de onde vem esse" if(inString[5] == 8 + 0x30){", ou seja o 8 o 7  o 6....por ai fora:S

se me puderes explicar :D


cump.
ze pedro
« Última modificação: 16 de Junho de 2010, 22:19 por _ze_pedro_ »