[Programmation] piloter un vérin en mois et heure
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

piloter un vérin en mois et heure



  1. #1
    ml15

    piloter un vérin en mois et heure


    ------

    Bonjour à tous,

    J'ai un projet simple à réaliser mais je quelque chose ne se passe pas comme prévu. J'utilise une carte arduino uno, une horloge ds3231 et un module L298N pour distribuer l'énergie au vérin. J'ai programmé deux période dans l'année avec des horaires différents avec ce code.
    Code:
    #include <Wire.h>
    #include <ds3231.h>
         
        struct ts t; //déclaration variable t 
        unsigned long secDepuisMinuit;
         
        void setup() {
          
        Wire.begin();
        DS3231_init(DS3231_INTCN);
         
        t.hour=19; // données pour mettre à l'heure l'horloge
        t.min=20;
        t.sec=0;
        t.mday=24;
        t.mon=12;
        t.year=2023;
         
        DS3231_set(t); // mise à l'heure de l'horloge
          
          //ouvrir ou fermer la porte au demarrage
          
          digitalWrite(4, LOW);  // le verin rentre
          digitalWrite(3, HIGH);   
        
          delay(20000);
    
          digitalWrite(3, LOW);
          digitalWrite(4, LOW);
          
          delay(5000);
          
          digitalWrite(4, HIGH); // le verin sort
          digitalWrite(3, LOW);   
        
          delay(20000);
    
          digitalWrite(4, LOW);
          digitalWrite(3, LOW);
    
          
        }
         
    void loop() {
          // put your main code here, to run repeatedly:
        DS3231_get(&t);
        secDepuisMinuit = t.hour * 3600ul + t.min * 60ul + t.sec;
    
    
      if ((t.mon >= 5) && (t.mon <= 9)){
           
           if (secDepuisMinuit>=21600 && secDepuisMinuit<=21625) { //06h00 / ouvrir - le verin sort
                digitalWrite(4, HIGH); 
                digitalWrite(3, LOW);   
        
                delay(20000);
    
                digitalWrite(4, LOW);
                digitalWrite(3, LOW);
                }
          
          
           if (secDepuisMinuit>=75600 && secDepuisMinuit<=75625) { //21h00 / fermer - le verin rentre
                
                digitalWrite(4, LOW); 
                digitalWrite(3, HIGH);   
        
                delay(20000);
    
                digitalWrite(3, LOW);
                digitalWrite(4, LOW);
                }
          
     }
      
       else {
               
            if (secDepuisMinuit>=25200 && secDepuisMinuit<=25225) { //07h00 / ouvrir - le verin sort
                
                digitalWrite(4, HIGH); 
                digitalWrite(3, LOW);   
        
                delay(20000);
    
                digitalWrite(4, LOW);
                digitalWrite(3, LOW);
             }
          
          
            if (secDepuisMinuit>=68400 && secDepuisMinuit<=68425) { //19h00 / fermer - le verin rentre
                
                digitalWrite(4, LOW); 
                digitalWrite(3, HIGH);   
        
                delay(20000);
    
                digitalWrite(3, LOW);
                digitalWrite(4, LOW);
                }
        
          }
      
        
     }
    J'ai programmé une date dans la période été mais le vérin n'a pas bougé aux horaires. J'ai essayé d'autres srtuctures en utilisatn des if, else if, else. Je ne sais plus comment traiter les problèmes. Vos idées seront les bienvenues.

    -----

  2. #2
    Pascal071

    Re : piloter un vérin en mois et heure

    bonsoir et joyeux Noël à tous!

    Je remarque un manque de parenthèses dans le calcul secDepuisMinuit
    le programme, comme une calculette, fait les opérations à la suite, le calcul suivant prend en compte le résultat du précédent.
    2 * 3 + 3 * 4 =36
    (2*3) + (3*4) =18
    secDepuisMinuit = (t.hour * 3600ul) + (t.min * 60ul) + t.sec;

    c'est quoi ce 3600ul et 60ul ?

    Cdlt

  3. #3
    Flyingbike
    Modérateur*

    Re : piloter un vérin en mois et heure

    est-ce que le mouvement du vérin, en dehors du contrôle temporel, est fonctionnel ?

    est-ce que vous avez validé la mise à l'heure et la lecture de l'horloge ?
    La vie trouve toujours un chemin

  4. #4
    niala72bis

    Re : piloter un vérin en mois et heure

    Je n'ai pas épluché les librairies Arduino, je préfère le C pur !!! Juste une question de culture, j'ai oublié mon Fortran 77 en cartes perforées !!
    Question parenthèses je ne pense pas qu'il en manque :

    secDepuisMinuit = t.hour * 3600ul + t.min * 60ul + t.sec;

    La précédence des opérateurs (je ne sas plus si ça se dit comme ça, c'est Noël), me semble respectée, même une vieille Texas SR52 ou HP 91C notation inversée de 1977 savaient faire.

    Quant au ul ça veut dire unsigned long, longueur selon le compilateur et la cible. Je ne vous pas de mal

  5. A voir en vidéo sur Futura
  6. #5
    niala72bis

    Re : piloter un vérin en mois et heure

    Pour debugger ce problème je propose déjà :

    Faire une boucle avec tempos pour activer le vérin dans un sens et dans l'autre, simple basique et efficace.

    Afficher la lecture du chip Dallas cycliquement, et le calcul du nombre de secondes

    Ca va bien faire avancer

    PS quand on debugge du Intel 8080 avec des EPROM 2708 à effacer aux UV avec un programme assembleur en bande perforée sur télétype ASR33 c'est pas de la Flash

  7. #6
    paulfjujo

    Re : piloter un vérin en mois et heure

    Bonjour à tous,

    je ne sias pas comme,t opere Arduino en interne .. mais

    Attention avec la RTC DS3231, à ne pas se faire pieger avec le decimal, et le BCD ..
    valeur en BCD dans les registres RTC
    mais il faut traiter ensuite les valeurs via une conversion BCD-> decimal
    pour les calculs ..

Discussions similaires

  1. [Outils/Fab/Comp] Piloter un vérin avec une carte relais 4CH
    Par mv3pk dans le forum Électronique
    Réponses: 1
    Dernier message: 26/08/2022, 07h18
  2. emetteur radiofrequence pour piloter verin en 12v
    Par ludocool33 dans le forum Électronique
    Réponses: 32
    Dernier message: 04/02/2014, 15h20
  3. Variables <=== annee,mois,jours,heure,minute, ....
    Par invitea98cd54f dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 05/03/2010, 08h30
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...