Seguidor Solar com Arduino

Este seguidor solar usa o ARDUINO UNO em conjunto com um servomotor(M), 2 resistências e 2 LDR para seguir uma fonte de luz. O servo motor é controlado pela LIB incluída na "servo library". No código é usado "pos" para definir a posição inicial do servo para 90. As resistências LDR estão ligadas aos pinos A0 e A1 no ARDUINO. É definida alguma tolerância porque, de outro modo, estaria a fazer auto ajuste de forma permanente. A tolerância pode ser ajustada alterando a variável tolerancia

seguidor solar com arduino
Seguidor Solar

Sketch Code


    #include <Servo.h> 
    
    Servo myservo; 
    int pos = 90;   // Posição inicial
    int sens1 = A0; // LRD1 pino
    int sens2 = A1; // LDR2 pino
    int tolerancia = 3; // Valor da variável da tolerância, pode ser aumentada ou diminuída
     
    void setup() 
    { 
      myservo.attach(9);  // Liga o servo ao pino 9 do arduino 
      pinMode(sens1, INPUT);
      pinMode(sens2, INPUT);
      myservo.write(pos);
      delay(3000); //  3 segundos de espera evita o ajuste permanente do painel
    }  
     
    void loop() 
    { 
      int val1 = analogRead(sens1); // faz a leitura do sensor 1
      int val2 = analogRead(sens2); // faz a leitura do sensor 2
     
      if((abs(val1 - val2) <= tolerancia) || (abs(val2 - val1) <= tolerancia)) {
        //nao faz nada se os valores da leitura estão dentro do limite de tolerancia
      } else {    
        if(val1 > val2) { pos = --pos; }
        if(val1 < val2) { pos = ++pos;}
      }    
      if(pos > 180) { pos = 180; } // reset para 180 se for acima
      if(pos < 0) { pos = 0; } // reset para 0 se descer abaixo
      
      myservo.write(pos); // escreve a posição do servo motor
      delay(50);
    }