[Programmation] Projet création distributeurs de croquettes sous Arduino
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

Projet création distributeurs de croquettes sous Arduino



  1. #1
    mrbluesky

    Projet création distributeurs de croquettes sous Arduino


    ------

    Bonjour à tous,

    J'ai commencé à me lancer dans mon premier projet avec Arduino sur un distributeur automatique de croquettes automatique pilotée par Arduino et je rencontre quelques difficultés avec le code de mon projet...

    En effet je n'arrive pas a faire tourner le moteur pendant une durée déterminée avec une pause de 2 à 3h avant de recommencer indéfiniment...

    J'ai essayé plusieurs codes mais rien ne correspond à ce que je souhaite.. Je vous joins la photo de mon montage circuit :

    J'utilise un moteur pas a pas tamagawa avec un L298N pour le contrôler et un arduino Uno.

    J'espère pouvoir finaliser mon projet pour pouvoir le publier l'ensemble de mon projet sur le forum et Instructables
    Et mon lapin serait heureux !!

    Merci d'avance pour vos conseils !

    Bonne journée

    Nom : IMG_20170523_164550.jpg
Affichages : 439
Taille : 113,3 Ko

    -----

  2. #2
    Antoane
    Responsable technique

    Re : Projet création distributeurs de croquettes sous Arduino

    Bonjour mrbluesky et bienvenue sur Futura !

    Tu peux peut-être poster le code que tu as testé, les gens compétents pourront alors t'aider à l'améliorer.
    Deux pattes c'est une diode, trois pattes c'est un transistor, quatre pattes c'est une vache.

  3. #3
    mag1

    Re : Projet création distributeurs de croquettes sous Arduino

    Bonjour,

    Toutes les 2 ou 3 heures, sans discontinuer...

    De temps en temps, un lapin ça dort (ou ça dore )

    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...

  4. #4
    Inqualifiable

    Re : Projet création distributeurs de croquettes sous Arduino

    Bin oui, y'a une fonction sleep().

    Et si elle n'est pas "assez longue" on peut toujours la mettre dans une boucle, voir dans 2 boucles imbriquées.

    Mais bon, attendons le code ...


    I.
    Un homme avec un multimètre connaît le courant, avec 2 il n'en n'est plus sûr.

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

    Re : Projet création distributeurs de croquettes sous Arduino

    Bonjour,

    Merci pour vos réponses !
    Oui c'est vrai que tout les 2,3 heures c'est peut etre un peu court, si c'est posibble tout les 6 heures avec une fonction sleep comme Inqualifiable a mentionné ce serait le top !


    Alors le code qui correspond le mieux et qui permet au moins de faire tourner le moteur c'est celui-ci :


    Code:
    #include <Stepper.h> //
     
    #define STEPS 48 //
     
    // 
    Stepper stepper(STEPS, 8, 9, 10, 11); //
     
    void setup()
    {
      // 
      stepper.setSpeed(90);
    }
     
    void loop()
    {
      //
      stepper.step(48);
      delay(1000); //
     
      //
      stepper.step(-48);
      delay(1000); //
    }
    Dernière modification par Antoane ; 04/06/2017 à 14h18. Motif: Ajout balises code

  7. #6
    adipie

    Re : Projet création distributeurs de croquettes sous Arduino

    Citation Envoyé par mrbluesky Voir le message
    si c'est posibble tout les 6 heures avec une fonction sleep comme Inqualifiable a mentionné ce serait le top !
    [/code]
    S'il s'agit simplement d'attendre 6 h. entre 2 évènements le code suivant:
    Delay(6*3600*1000) doit fonctionner.

  8. #7
    Inqualifiable

    Re : Projet création distributeurs de croquettes sous Arduino

    Les fonction sleep() et delay() ne sont pas des fonctions standard du C. Je ne sais pas ce qui est disponible au juste sur un Arduino mais on retrouve sleep() dans unistd.h sous Unix et dans dos.h sous DOS par exemple. Leurs implémentations peuvent varier d'un système à l'autre.
    delay() est aussi présente dans dos.h mais pas sous Unix à ma connaissance. Sous DOS/Windows delay() accepte des millisecondes alors que sleep() accepte des secondes.

    Il faut aussi veiller aux interrupts qui peuvent "réveiller" ces fonctions avant que le délai ne soit écoulé... Peut-être pas le cas sous Arduino mais c'est bon à savoir....


    Bref, c'est pas standard du tout et à la base c'est prévu pour réellement mettre le programme en sleep. Si les ressources CPU ne sont pas cruciales on peut passer son temps à attendre (et non pas à dormir) dans une boucle.

    Donc, sauf considérations spéciales (threads, traitements d'interrupts, économie d'énergie...), je pense qu'il vaut mieux utiliser time.h qui lui est standard et faire qqch du style:


    Code:
    #include <time.h>
    
    time_t Start, Now;
    double delay = 6*3600*1000    // Delai de 6h en ms
    
    
    time(&Start);   
    
    while( difftime(time(&Now), Start) < delay);   // On boucle tant que l'on n'a pas atteint le delai.

    Si on ne veut pas bouffer de resources et qu'il existe une fonctions sleep() qui les économise, on peut inclure un sleep d'une minute dans la boucle. Ainsi on se réveillera toutes les minutes pour voir s'il est l'heure et se rendormir aussi sec si ce n'est pas le cas...


    Code:
    ...
    double elapsed_time = 0
    
    Now = time(&Start); ;
    
    while (elapsed_time < delay) sleep(60);
    Là on est sûr de sortir de la boucle quand le délai est dépassé.


    I.
    Un homme avec un multimètre connaît le courant, avec 2 il n'en n'est plus sûr.

  9. #8
    Inqualifiable

    Re : Projet création distributeurs de croquettes sous Arduino

    ERRATUM !

    Le délai doit être en secondes pas en ms (==> donc double delay = 6*3600; )


    I.
    Un homme avec un multimètre connaît le courant, avec 2 il n'en n'est plus sûr.

  10. #9
    Seb.26

    Re : Projet création distributeurs de croquettes sous Arduino

    En Arduino, c'est millis() qui fait ce que tu proposes ... Delay() va bien attendre le temps voulu (il est basé sur un timer hard).

    Dans ce (simplissime) cas précis :

    Code:
    void loop()
    {
      delay(1000 * 60 * 6); // 6h
      //
      stepper.step(48);
      delay(1000);
      stepper.step(-48);
    }
    Dernière modification par Antoane ; 05/06/2017 à 11h06. Motif: remplacement quote par code
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  11. #10
    Inqualifiable

    Re : Projet création distributeurs de croquettes sous Arduino

    Bin voilà, il suffisait de demander

    Delay() est implanté sur l'Arduinoo.

    Au fait, que fait millis() exactement ?

    Merci !


    I.
    Un homme avec un multimètre connaît le courant, avec 2 il n'en n'est plus sûr.

  12. #11
    tonnerre33

    Re : Projet création distributeurs de croquettes sous Arduino

    millis() renvoi le temps passé en millisecondes depuis que ton ardino a démarré

  13. #12
    mrbluesky

    Re : Projet création distributeurs de croquettes sous Arduino

    Merci pour vos réponses !!
    ça me permet déjà de bien avancer maintenant avec le code de Seb.26 mon moteur tourne tout les x temps que l'on demande dans le code ! Mais le moteur ne fait pas une rotation entière il tourne d'environ 5° donc pas suffisant pour effectuer la distribution des croquettes sur une rotation complète... Existe-t'il une autre fonction pour programmer la durée de l'action du moteur ?

    Merci pour votre aide !

  14. #13
    Inqualifiable

    Re : Projet création distributeurs de croquettes sous Arduino

    Merci Tonnerre

    C'est donc l'équivalent de clock() en C standard...


    I.
    Un homme avec un multimètre connaît le courant, avec 2 il n'en n'est plus sûr.

  15. #14
    tonnerre33

    Re : Projet création distributeurs de croquettes sous Arduino

    Dans ton code, change le 48
    stepper.step(48)
    par le nombre total de pas de ton moteur

  16. #15
    mrbluesky

    Re : Projet création distributeurs de croquettes sous Arduino

    Citation Envoyé par tonnerre33 Voir le message
    Dans ton code, change le 48 par le nombre total de pas de ton moteur
    Merci, alors pour savoir le nombre de pas de mon moteur, ce serait 400 ou 17(selon le titre de l'annonce du site) mais ça ne donne rien...
    Je me trompe dans le nombre de pas ? J'ai ce moteur ci :
    http://www.ebay.it/itm/Stepper-motor...-/281727167164

  17. #16
    adipie

    Re : Projet création distributeurs de croquettes sous Arduino

    Dans les spécifications c'est bien marqué 400 pas par tour soit 0.9° par pas.
    Dernière modification par adipie ; 11/06/2017 à 16h42.

Discussions similaires

  1. projet sous arduino
    Par aghilas85 dans le forum Électronique
    Réponses: 8
    Dernier message: 01/03/2017, 17h59
  2. creation de bibliotheque Arduino
    Par Toffy38 dans le forum Électronique
    Réponses: 0
    Dernier message: 21/10/2014, 15h36
  3. Réponses: 9
    Dernier message: 07/05/2013, 12h54
  4. j'ai pas des versions Google APIa pour création un projet sous android en eclipse
    Par inviteb188470e dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 21/04/2012, 23h59
Découvrez nos comparatifs produits sur l'informatique et les technologies.