Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Suiveur Solaire Arduino aide Code



  1. #1
    jouliojules

    Exclamation Suiveur Solaire Arduino aide Code

    Bonjours à toute la communauté de Futura-Sciences! .
    Je m'abreuve depuis plusieurs mois des informations contenus sur votre site et m'en voilà à solliciter votre aide..

    Je suis en train de monté un suiveur solaire. Pour mieux vous aider à comprendre comment il marche voici sa structure:

    -Un trépied est fixé à une sorte de mât en deux partie. La première (fixer de façon covalente au trépied) permet à la structure de ne pas "tournicoter". La seconde (au dessus, est coaxiale).
    Un Moteur DC parallèle au mât et relié via une poulie-corroie et permet ainsi la rotation horizontale du suiveur.

    -Un panneau à réfraction solaire en haut du premier mat réfléchie les rayon sur un panneau solaire. Ce panneau à refraction peut se lever grâce à un vérin fixer à la deuxième moité du mât.

    4 photo-résistances se trouvant perpendiculairement à la la suite du panneaux photovoltaïque, séparé d'une croix, permettent de créé une différence de tension qui peut être lu par la carte Arduino UNO.

    Jusqu'ici tout va bien? ok, passons au plus dur:
    VOICI LE CODE QUI NE MARCHE PAS:
    ://xD En faites des erreurs apparaissent et je n'arrive pas à les corrigé (enfin on, nous sommes un groupe et je ne m'y connais pas trop, les autres collègues sont partie en vacances ://



    #include "Timer.h"

    const int lumtop = A5;
    const int lumbottom = A2;
    const int lumleft = A4;
    const int lumright = A3;

    const int MHdirection = 13;
    const int MHenable = 11;
    const int MHbreak = 8;

    const int MVdirection = 12;
    const int MVenable = 3;
    const int MVbreak = 9;

    int position = 0;

    Timer time;

    int isrunning = 0;

    void setup() {
    Serial.begin(9600);
    Serial.println("suiveursol ");

    pinMode(MVdirection,OUTPUT);
    pinMode(MVenable,OUTPUT);
    pinMode(MVbreak,OUTPUT);

    pinMode(MHdirection,OUTPUT);
    pinMode(MHenable,OUTPUT);
    pinMode(MHbreak,OUTPUT);

    time.every(1800, testpourmarcheyy);
    }

    void loop() {
    Testpourlesoleyyy();
    }
    void testpourmarcheyy() {
    if(isrunning) {
    return;
    } else {
    Testpourlesoleyyy();
    }
    }

    int Testpourlesoleyyy() {
    int isoKV = 0;
    int isoKH = 0;
    is running = 1;
    restart
    ;float top = analogRead(lumtop)

    ;float bottom = analogRead(lumbottom)
    ;float left = analogRead(lumleft)

    ;float right = analogRead(lumright)

    ;float lr = left/right
    ;float rl = right/left
    ;float bt = bottom/top
    ;float tb = top/bottom

    if{(left < right)&&(rl < 0.90)){
    motor_horizontal(true,false) ;
    isokH=0;
    } else if ((right < left)&&(rl <0.90)) {
    motor_horizontal(true,true);
    isokH=0;
    }else{
    motor_horizontal(false,true);
    isokH=1;
    }
    if((top < bottom)&&(tb < 0.90)) {
    motor_vertical(true,false);
    isokV=0
    } else if ((bottom < top)&&(bt < 0.90)) {
    motor_vertical(true,true);
    isokV=0
    }
    if(!isokH || !isokV)
    {
    delay(100);
    goto restart;
    } else { isrunning = 0; return true; }

    }
    void motor_vertical(int enable , int direction)
    {
    if (enable == 1} {
    if(direction == 1)
    digitalWrite(MVdirection, HIGHT);
    digitalWrite(MVbreak, LOW);
    analogWrite(MVenable, 255);
    } else {
    digitalWrite(MVdirection, LOW);
    digitalWrite(MVbreak, LOW);
    analogWrite(MVenable, 255);
    }


    // j'en suis là avec le code mais les erreurs s'accumule, je me suis occupé que du début ( les déclarations des composants mais là..) et bien je galère! :P


    Si quelqu'un peut m'aider je lui en serait très reconnaissant! Merci!

    -----


  2. Publicité
  3. #2
    PIXEL

    Re : Suiveur Solaire Arduino aide Code

    question....


    pour cette fonction , une simple horloge suffit , la mécanique céleste étant connue depuis Copernic.


    pourquoi t'enquiquiner avec un suiveur ?

  4. #3
    antek

    Re : Suiveur Solaire Arduino aide Code

    Code illisible.
    Quelles sont les erreurs générées par le compilateur ?

  5. #4
    kevin8z

    Re : Suiveur Solaire Arduino aide Code

    Il va falloir revoir les bases du langage C, c'est un peut le bor*** dans ce code.

    Il manque des points virgules, certain sont en début de ligne au lieu d'être en fin, il y a aussi un problème avec le dernier if manque une accolade, et il manque aussi le prototype d'une fonction vers le milieu du code.
    Après je sais pas s'il y a d'autre erreur, il faudrait que tu poste ce code, avec les balises "[CODE]"
    Dernière modification par kevin8z ; 26/03/2015 à 14h29.

  6. #5
    jouliojules

    Re : Suiveur Solaire Arduino aide Code

    Citation Envoyé par PIXEL Voir le message
    question....


    pour cette fonction , une simple horloge suffit , la mécanique céleste étant connue depuis Copernic.


    pourquoi t'enquiquiner avec un suiveur ?
    Merci pour ta réponse!
    Et bien tout simplement car on a pas réussi a faire cela sur Arduino et aussi car l'horloge elle se décalerai tout les jours de quelques minutes vu que le soleil n'est jamais exactement à la même place de quelques degrés chaque année. Dans tout les cas c'était trop compliqué à mettre en place.. ^^

  7. A voir en vidéo sur Futura
  8. #6
    jouliojules

    Re : Suiveur Solaire Arduino aide Code

    kevin8z, antek, je vous donne cela tout de suite mais j'ai juste décalé les points virgules car le logiciel me disait que il manquait une virgule ou un point virgule avant

    Voici les erreurs :
    Code:
    lebon.ino:1:19: error: Timer.h: No such file or directory
    lebon:18: error: 'Timer' does not name a type
    lebon.ino: In function 'void setup()':
    lebon:34: error: 'time' was not declared in this scope
    lebon.ino: In function 'int Testpourlesoleyyy()':
    lebon:51: error: 'is' was not declared in this scope
    lebon:51: error: expected `;' before 'running'
    lebon:52: error: 'restart' was not declared in this scope
    lebon:65: error: expected ',' or ';' before 'if'
    lebon:91: error: expected `}' at end of input
    et le code avec la balise :
    Code:
    #include "Timer.h"
    
    const int lumtop = A5;
    const int lumbottom = A2;
    const int lumleft = A4;
    const int lumright = A3;
    
    const int MHdirection = 13;
    const int MHenable = 11;
    const int MHbreak = 8;
    
    const int MVdirection = 12;
    const int MVenable = 3;
    const int MVbreak = 9;
    
    int position = 0;
    
    Timer time;
    
    int isrunning = 0;
    
    void setup()  {
      Serial.begin(9600); 
      Serial.println("suiveursol ");
      
      pinMode(MVdirection,OUTPUT);
      pinMode(MVenable,OUTPUT);
      pinMode(MVbreak,OUTPUT);
      
      pinMode(MHdirection,OUTPUT);
      pinMode(MHenable,OUTPUT);
      pinMode(MHbreak,OUTPUT);
      
      time.every(1800, testpourmarcheyy);
    }
    
    void loop() {
      Testpourlesoleyyy();
    }
    void testpourmarcheyy() {
      if(isrunning) {
        return;
      } else {
        Testpourlesoleyyy();
      }
    }
    
    int Testpourlesoleyyy() {
      int isoKV = 0;
      int isoKH = 0;
      is running = 1;
      restart
      ;float top = analogRead(lumtop)
      
      ;float bottom = analogRead(lumbottom)
      ;float left = analogRead(lumleft)
      
      ;float right = analogRead(lumright)
      
      ;float lr = left/right
      ;float rl = right/left
      ;float bt = bottom/top
      ;float tb = top/bottom
      
      if{(left < right)&&(rl < 0.90)){
        motor_horizontal(true,false) ;
        isokH=0;
      } else if ((right < left)&&(rl <0.90)) {
        motor_horizontal(true,true);
        isokH=0;
      }else{
        motor_horizontal(false,true);
        isokH=1;
      }
      if((top < bottom)&&(tb < 0.90)) {
        motor_vertical(true,false);
        isokV=0
      } else if ((bottom < top)&&(bt < 0.90)) {
        motor_vertical(true,true);
        isokV=0
      }
      if(!isokH || !isokV)
      {
        delay(100);
        goto restart;
      } else { isrunning = 0; return true; }
      
    }
        void motor_vertical(int enable , int direction)
        {
          if (enable == 1} {
            if(direction == 1)
            digitalWrite(MVdirection, HIGHT);
            digitalWrite(MVbreak, LOW);
            analogWrite(MVenable, 255);
          } else {
           digitalWrite(MVdirection, LOW);
          digitalWrite(MVbreak, LOW);
          analogWrite(MVenable, 255);
          }

  9. Publicité
  10. #7
    PIXEL

    Re : Suiveur Solaire Arduino aide Code

    votre choix est encore plus complexe pratiquement....

    par le net , le GPS , ou DCM77 tu peux obtenir l'heure à la seconde prés.

    quand aux cartes célestes elles sont précises au 1/10 de ° depuis 200 ans....

    bon courage

  11. #8
    jouliojules

    Re : Suiveur Solaire Arduino aide Code

    Citation Envoyé par PIXEL Voir le message
    votre choix est encore plus complexe pratiquement....

    par le net , le GPS , ou DCM77 tu peux obtenir l'heure à la seconde prés.

    quand aux cartes célestes elles sont précises au 1/10 de ° depuis 200 ans....

    bon courage
    Je comprends très bien mais on n'a vraiment pas trouvé comment faire et le suiveur doit-être autonome. On a fait ce choix car les infos manquait

  12. #9
    DAUDET78

    Re : Suiveur Solaire Arduino aide Code

    Citation Envoyé par jouliojules Voir le message
    vu que le soleil n'est jamais exactement à la même place de quelques degrés chaque année.
    Et tu penses que ça a un effet sur le rendement de ton panneau ?
    L'age n'est pas un handicap .... Encore faut-il arriver jusque là pour le constater !

  13. #10
    jouliojules

    Re : Suiveur Solaire Arduino aide Code

    Non pas spécialement mais si j'ai choisis cette option c'est que (comme je l'ai dit à PIXEL), on a trouvé aucune infos... De toute manières on a juste le code là corriger mais comme on a du mal on demande de l'aide.

  14. #11
    bobflux

    Re : Suiveur Solaire Arduino aide Code

    C'est largement plus facile de faire un moteur idiot avec suiveur solaire, qu'un actionneur précis commandé par une horloge...

    Évidemment le suiveur a quelques points faibles : les nuages, les feuilles mortes, les oiseaux, la pluie, etc, etc.

    Bon..

    1) il trouve pas "Timer.h" ; essaie #include <Timer.h> avec des <> à la place des " ou essaie timer.h en minuscules...

    2) le point virgule en C marque la fin d'une ligne (en gros.......) ; pour la lisibilité on le met à la fin.
    Le compilateur ignore totalement les retours à la ligne,

    3) apprends le C... il faut aussi regarder les messages d'erreur du compilateur...

  15. #12
    jouliojules

    Re : Suiveur Solaire Arduino aide Code

    Merci bien! En effet l'erreur semble disparaitre :
    Code:
    lebon:18: error: 'timer' does not name a type
    lebon.ino: In function 'void setup()':
    lebon:34: error: 'time' was not declared in this scope
    lebon.ino: In function 'int Testpourlesoleyyy()':
    lebon:51: error: 'is' was not declared in this scope
    lebon:51: error: expected `;' before 'running'
    lebon:52: error: 'restart' was not declared in this scope
    lebon:65: error: expected ',' or ';' before 'if'
    lebon:100: error: expected `}' at end of input
    le timer en erreur ci-dessus c'est celui du
    Code:
    timer time;
    Mais lorsque je marque la fin d'une ligne par le point virgule pour corriger j'en ai encore plus :
    Code:
    lebon:18: error: 'timer' does not name a type
    lebon.ino: In function 'void setup()':
    lebon:34: error: 'time' was not declared in this scope
    lebon.ino: In function 'int Testpourlesoleyyy()':
    lebon:51: error: 'is' was not declared in this scope
    lebon:51: error: expected `;' before 'running'
    lebon:52: error: 'restart' was not declared in this scope
    lebon:53: error: expected `;' before 'float'
    lebon:62: error: 'top' was not declared in this scope
    lebon:65: error: expected `(' before '{' token
    lebon:100: error: expected `}' at end of input

  16. Publicité
  17. #13
    bobflux

    Re : Suiveur Solaire Arduino aide Code

    Eh oui, les majuscules et les minuscules sont différentes... timer il connaît pas, Timer sûrement...

    Sinon, regarde pas le nombre d'erreurs, regarde juste la première. Quand tu auras supprimé la première, certaines des suivantes s'en iront...

  18. #14
    jouliojules

    Re : Suiveur Solaire Arduino aide Code

    Messieurs, désolé pour l'absence (j'était partit au ski avec ma classe! )
    J'ai repassé chaque ligne et regarder les erreurs ou elle menaient mais je n'ai pas trouvé sur LE internet ^^.

    Du coup j'ai terminer ce que j'ai fais. Sachant que des morceaux de code depuis le début on été pris du porojet de l'année dernière.
    Dites moi si c'est toujours aussi dégueu! ^^


    Code:
    #include <Timer.h>
    
    const int lumtop = A5;
    const int lumbottom = A2;
    const int lumleft = A4;
    const int lumright = A3;
    
    const int MHdirection = 13;
    const int MHenable = 11;
    const int MHbreak = 8;
    
    const int MVdirection = 12;
    const int MVenable = 3;
    const int MVbreak = 9;
    
    int position = 0;
    
    Timer time ;
    
    int isrunning = 0;
    
    void setup()  {
      Serial.begin(9600); 
      Serial.println("suiveursol ");
      
      pinMode(MVdirection,OUTPUT);
      pinMode(MVenable,OUTPUT);
      pinMode(MVbreak,OUTPUT);
      
      pinMode(MHdirection,OUTPUT);
      pinMode(MHenable,OUTPUT);
      pinMode(MHbreak,OUTPUT);
      
      time.every(1800, testpourmarcheyy);
    }
    
    void loop() {
      Testpourlesoleyyy();
    }
    void testpourmarcheyy() {
      if(isrunning) {
        return;
      } else {
        Testpourlesoleyyy();
      }
    }
    
    int Testpourlesoleyyy() {
      int isoKV = 0;
      int isoKH = 0;
      is running = 1;
      restart
      float top = analogRead(lumtop);
      
      float bottom = analogRead(lumbottom);
      float left = analogRead(lumleft);
      
      float right = analogRead(lumright);
      
      float lr = left/right;
      float rl = right/left;
      float bt = bottom/top;
      float tb = top/bottom;
      
      if{(left < right)&&(rl < 0.90)){
        motor_horizontal(true,false) ;
        isokH=0;
      } else if ((right < left)&&(rl <0.90)) {
        motor_horizontal(true,true);
        isokH=0;
      }else{
        motor_horizontal(false,true);
        isokH=1;
      }
      if((top < bottom)&&(tb < 0.90)) {
        motor_vertical(true,false);
        isokV=0
      } else if ((bottom < top)&&(bt < 0.90)) {
        motor_vertical(true,true);
        isokV=0
      }
      if(!isokH || !isokV)
      {
        delay(100);
        goto restart;
      } else { isrunning = 0; return true; }
      
    }
        void motor_vertical(int enable , int direction)
        {
          if (enable == 1} {
            if(direction == 1)
            digitalWrite(MVdirection, HIGHT);
            digitalWrite(MVbreak, LOW);
            analogWrite(MVenable, 255);
          } else {
           digitalWrite(MVdirection, LOW);
          digitalWrite(MVbreak, LOW);
          analogWrite(MVenable, 255);
          }
          
    }
    else{
      digitalWrite(MVbreak, HIGH);
      analogWrite(MVenable, 255);
    }
    }
    void motor_horizontal (int enable, int direction ) {
      if(enable == 1) {
        if(direction == 1 ) {
          digitalWrite(MHdirection, HIGH);
          digitalWrite(MHbreak, LOW);
          analogWrite(MHenable, 255);
        }else {
          digitalWrite(MHdirection, LOW);
          digitalWrite(MHbreak, LOW);
          analogWrite(MHenable, 255);
        }
      }
      esle { 
        digitalWrite(MHbreak, HIGH);
        analogWrite(MHenable, 0);
      }

Sur le même thème :

Discussions similaires

  1. suiveur solaire
    Par blood_diamand dans le forum Électronique
    Réponses: 22
    Dernier message: 04/04/2013, 16h42
  2. suiveur solaire
    Par narakphysics dans le forum Archives
    Réponses: 0
    Dernier message: 18/04/2012, 20h46
  3. suiveur solaire
    Par Ahmed-Belgana dans le forum Électronique
    Réponses: 9
    Dernier message: 23/02/2011, 18h13
  4. Suiveur solaire
    Par méta_flo dans le forum Électronique
    Réponses: 7
    Dernier message: 15/02/2007, 20h34
  5. Suiveur solaire ou Tracking
    Par stephane82 dans le forum Technologies
    Réponses: 11
    Dernier message: 25/05/2006, 17h06