Aller au contenu


Photo
- - - - -

Souci de codage pour un débutant


  • Veuillez vous connecter pour répondre
3 réponses à ce sujet

#1 Hervé

Hervé

    Nouveau membre

  • Membres
  • 4 messages

Posté 19 novembre 2021 - 02:13

Le contexte : je suis menuisier, donc complètement débutant. Je souhaite faire une alimentation automatique pour mes animaux qui doivent être nourris deux fois par jour (vers 9h et vers 18h). Je part d'un programmateur classique à insérer dans une prise 220 volts. Ce programmateur va émettre un signal à 9h qui va durer 15 mn et idem pour le soir. Ce signal sera transformé en 5 volts CC par l'intermédiaire d'un relais.

 

La partie opérative : Je gère sans soucis cette partie au moyen d'une trémie, une vis pour le déplacement des granulés associée à un moteur 12 volts courant continu.

 

La difficulté rencontrée : Le signal en entrée sur l'arduino Uno dure 15 mn et je ne peux modifier cette donnée. Le temps de fonctionnement de l'alimenteur est d'environ 30 secondes. Pour le codage j'ai bien tenté plusieurs solutions mais sans succès.

Le delay(500) n'est pas pris en compte vu que le signal de l'horloge est toujours haut.

Comment écrire le code pour que le delay 500 soit appliqué malgré que le signal d'origine est haut pendant 15 mn ?

 

Merci de votre aide

 

const int entree_signal_horlog = 5;  
const int sortie_signal_moteur =  13;  

int variable_position_signal_horloge = 0;   

void setup() {  
  
  pinMode(entree_signal_horlog, INPUT);
  pinMode(sortie_signal_moteur, OUTPUT);
}

void loop() {    
    variable_position_signal_horloge = digitalRead(entree_signal_horlog);

    if (variable_position_signal_horloge == HIGH) {
    
    digitalWrite(sortie_signal_moteur, HIGH);
    delay(500); 
    digitalWrite(sortie_signal_moteur, LOW);    
  } 
}

 



#2 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 412 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 20 novembre 2021 - 03:29

Je ne suis pas sûr d'avoir bien compris le besoin mais je vais néanmoins de proposer cela : 

 

// L'arduino doit être branchée sur la tension 5V qui va rester allumée 15min

const int sortie_signal_moteur =  13;  
const uint32_t TEMPSALIMENTATION = 30000;  // 30 secondes


// L'arduino s'allume lorsque le signal s'active à 9h. 

void setup() {  
  pinMode(sortie_signal_moteur, OUTPUT);
  digitalWrite(sortie_signal_moteur, HIGH);    // On active le signal du moteur
  delay(TEMPSALIMENTATION);                    // On attend que le temps d'alimetation soit passé
  digitalWrite(sortie_signal_moteur, LOW);     // On désactive le signal du moteur
}

void loop() {    
// On ne fait rien, on attend que l'arduino s'éteigne ....
}

Je ne sais pas si ça répond correctement ou pas au besoin, mais si ça ne le fait pas on pourra échanger d'avantage ;)


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 

 

Les réalisations de Mike118  

 

 

 


#3 Hervé

Hervé

    Nouveau membre

  • Membres
  • 4 messages

Posté 21 novembre 2021 - 11:20

Merci pour cette réponse :thank_you: 
Je pense que tu as bien saisi mon souci et ta proposition me plait bien.
Mais d'après la fonction "vérification" il semble que la fonction "uint32_t" ne soit pas reconnue ??
 
// L'arduino doit être branchée sur la tension 5V qui va rester allumée 15min

const int sortie_signal_moteur =  13;  
const uint32_t TEMPSALIMENTATION = 30000  // 30 secondes

 

retour forum.ino1 of 2 problems
  •  
  •  
  •  
Unknown type name 'uint32_t'clang(unknown_typename)


 

 

// L'arduino s'allume lorsque le signal s'active à 9h. 

void setup() {  
  pinMode(sortie_signal_moteur, OUTPUT);
  digitalWrite(sortie_signal_moteur, HIGH);    // On active le signal du moteur
  delay(TEMPSALIMENTATION);                    // On attend que le temps d'alimetation soit passé
 
digitalWrite(sortie_signal_moteur, LOW);     // On désactive le signal du moteur
}

void loop() {    
// On ne fait rien, on attend que l'arduino s'éteigne ....
}
 

Outpout

C:\Users\Régis\Documents\Arduino\retour forum\retour forum.ino:9:1: error: expected ',' or ';' before 'void'
Compilation error: Error: 13 INTERNAL: exit status 1



#4 Hervé

Hervé

    Nouveau membre

  • Membres
  • 4 messages

Posté 21 novembre 2021 - 12:26

Bravo Mike118, ça fonctionne :yahoo: :yahoo: :yahoo:

Il manquait juste le ; derrière le 30000

 

Un grand merci !!!






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users