Go Down

Topic: RASTREADOR SOLAR!!! URGENTE... (Read 2 times) previous topic - next topic

bubulindo

Não consegues fazer mexer o motor? Que programa fizeste?
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

americo

o motor fica travando, ele não vai... eu tampo um los ldr e o motor continua na mesma, sem mexer..

bubulindo

Eu disse para testares o motor... algo como:

Code: [Select]


#include <Servo.h>

Servo servo1;          //Declara servos

int pos1 = 0;             // pos1 é a posião horizontal


void setup()
{
  servo1.attach(9);      //anexar servo 1 ao pino digital 10
  servo1.write(pos1);       //posição inicial de 90 graus
   
}

void loop()
{
delay(1000);

servo1.write(pos1%360); //assim pode andar às voltas...
pos1 +=90; 
}



Isto deve fazer o motor rodar de 90 em 90 graus de segundo a segundo. Experimenta isto para ambos os motores de forma a tirares as dúvidas acerca das ligacões do motor.

Se queres ver se a lógica está com problemas, tens de colocar Serial.println() em sítios estratégicos... por exemplo:

Code: [Select]
#include <Servo.h>

Servo servo1;          //Declara servos
Servo servo2;
int pos1 = 0;             // pos1 é a posião horizontal
int pos2 = 0;             // pos2 é a posição vertical
int right = 0;            // LDR direita
int left = 0;             // LDR esquerda
int up = 0;               // LDR superior
int down = 0;             //LDR inferior

int ldr1 = 0;          // pinos dos LDRs
int ldr2 = 1;
int ldr3 = 2;
int ldr4 = 3;

void setup()
{
  servo1.attach(10);      //anexar servo 1 ao pino digital 10
  servo1.write(90);       //posição inicial de 90 graus
 
  servo2.attach(9);        // anexar o servo 2 ao pino digital 9
  servo2.write(90);        // posição inicial de 90 graus
 
  pinMode(ldr1, INPUT);      //Declara LDRs como entradas
  pinMode(ldr2, INPUT);
  pinMode(ldr3, INPUT);
  pinMode(ldr4, INPUT);
}

void loop()
{

  pos1 = servo1.read();            // pos1 informa a posição atual do servo1 (horizontal)
  pos2 = servo2.read();            // pos2 informa a posição atual do servo2 (vertical)
 
// Leitura de cada LDR

  int right = analogRead(ldr1);      // LDR1 é o da direita
  int left = analogRead(ldr2);   //LDR2 é o da esquerda
  int up = analogRead(ldr3);   //LDR3 é o superior
  int down = analogRead(ldr4);   //LDR4 é o inferior

//pegas nestes valores e comparas com o programa para ver o que ele está a fazer...
Serial.print("down = ");
Serial.println(down);
Serial.print("up = ");
Serial.println(up);
Serial.print("left = ");
Serial.println(left);
Serial.print("right = ");
Serial.println(right);

                  //Controle da posição horizontal

  if(right > left )                   // Se tem mais luz no LDR da direita do que no da esquerda, move-se para a direita
  {
    Serial.println("R > L");
    servo1.write(pos1 +1);                  //Aumenta a posição do servo em 1
    delay(10);                                      // este atraso é necessário para evitar servo de ir 0-180 sem parar
  }
 
  else if(left > right)      //Move-se para esquerda, pois existe mais intensidade
  {
    Serial.println("L > R");
    servo1.write(pos1 -1);                    // Diminui a posição do servo em 1
    delay(10);
  }
 
  else
  {
    Serial.println("R = L");
    servo1.write(pos1);                    // Caso nenhuma condição seja satisfeita, se mantem a mesma posição
  }
                 
                 //Posição do controle Vertica


  if(up > down)
  {
    Serial.println("U > D");   
    servo2.write(pos2 +1);
    delay(10);
  }
 
  else if(down > up)
  {
    Serial.println("D > U");
    servo2.write(pos2 -1);
    delay(10);
  }
 
  else
  {
    Serial.println("U = D");
    servo2.write(pos2);
  }
 
}


E assim podes ver se existe algum problema na lógica do programa ou nas leituras do AD.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

cicerovfl

Ola Guilherme Americo, lhe enviei um e-mail, se puder ver ficarei muito grato!
Abraço!

bubulindo

O mais importante num segredo... é não informar que existem segredos... ;)
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Go Up