poulailler porte automatique

Medium qwffauusvzg4rhptjwim

Difficulté:

arduino et porte automatique de poulailler



Bonjour,
Mes parents possèdent un poulailler et m’ont demandé si je pouvais leur réaliser une porte automatique pour celui-ci.
J’ai donc réfléchi à une solution à base d’arduino et facile à réaliser.
Mes parents voulaient pouvoir facilement modifier les heures d’ouverture et de fermeture, j’ai donc penser à un écran LCD avec des touches.


Je partage donc ma réalisation pour ceux que ça intéresse.


Certains matériels que j’ai utilisés sont de la récupération de pièces que j’avais en stock.
Cela me permet d’optimiser mon budget d’achat.


Le prix que j’ai indiqué tient compte de tout le matériel listé.

Matériel

Medium medium uq48a5l8brbelffpdvty

Budget:

80 €

  • Arduino Pro Mini (j’avais celui là sous la main), (Arduino à base d’ATMEGA328P) : Disponible ici
  • LCD avec Keypad : Disponible ici
  • RTC DS1307 : Disponible ici
  • driver moteur : Disponible ici
  • convertisseur 5V (régulateur 5V) : Disponible ici avec 4 ports usb
  • moteur : Disponible ici
  • axes
  • coupleurs d’axes
  • engrenages
  • boite de dérivation étanche : Disponible ici
  • câbles
  • photorésistance : Disponible ici
  • résistances 1Kohm : Disponible ici
  • interrupteur micro-switch :Disponible ici
  • planche de bois
  • glissière U
  • vis, clous, fil nylon
  • http://blog.ouiaremakers.com/wp-content/uploads/formidable/poulailler-3.ino, http://blog.ouiaremakers.com/wp-content/uploads/formidable/menu-3.h, http://blog.ouiaremakers.com/wp-content/uploads/formidable/RTClib-master-1.zip

    Etape 1 : Découpage et assemblage des pièces en bois

    Chaque poulailler ayant des tailles différentes, les mesures et les découpes sont à adapter.
    Mon poulailler a une porte de dimension 27x20cm, il faut donc une hauteur d’environ 60cm pour gérer la porte.

    Malheureusement je n’ai pas pris de photos au cours du découpage et de l’assemblage des éléments de bois mais les photos du résultat final sont assez significatives des étapes à entreprendre:
    – découper l’ouverture d’une largeur un peu plus grande que celle du panneau de la porte pour que cette dernière est un peu de jeu,
    – placer des tasseaux de part et d’autre de l’ouverture et y punaiser/coller les glissières,
    – glisser la porte,
    – placer les interrupteurs de fin de course en haut et en bas, les protéger par un petit morceau de bois,
    – mettre en place le système d’engrenages, axes, moteur et poulie (j’ai utilisé un 2ème engrenage avec un bouchon de liège traversé par l’axe),
    – faire le coffret protégeant tout le système mécanique.
    – relier la porte et la poulie par un fil de nylon

    J’ai utilisé un système de vis sans fin pour 2 raisons:
    – la porte ne peut pas redescendre par son propre poids
    – réduction de la vitesse de 1/18ème ce qui augmente un peu le couple pour lever la porte.

    Mise à jour:

    Le système de vis sans fin en plastique s'est usé au fil du temps, la porte ne s'ouvrait plus correctement.

    J'ai donc remplacé la partie moteur et moto-réduction avec un trouvable sur Internet qui intègre directement le système de vis sans fin. J'ai vérifié l'étage de moto-réduction: intégralement en métal, donc bien plus solide ! :)

    Je garde une vitesse finale comme précédemment soit 25t/min.

    A l'origine (plus d'actualité):
    (J’ai choisi ce moteur MFA 918D151-12 car il est équipé d’un motoréducteur offrant une vitesse de sortie de 472t/min à 12V et un couple de 219 g.cm. Avec la vis sans fin, la vitesse finale est de 26t/min pour un couple d’environ 3900g.cm ce qui est largement suffisant pour la porte pesant environ 300g.)

    Etape 2 : assemblage boitier de commandes / branchements

    j’ai utilisé une boite de dérivation pour y mettre toute la partie électronique et commandes.
    J’ai fait une découpe sur la face avant du boitier pour le LCD ainsi que des trous pour les boutons.
    Le LCD est fixé par des entrecroises derrière la face avant de la boite.

    Le reste des branchements est détaillé dans le schéma.
    vous avez également le brochage sur l’image de la plaque d’essai à bandes cuivrées.

    N'hésitez pas à ouvrir le schéma sous Fritzing pour voir en gros plan le nom des pins de chaque composant. Ce sera plus facile d'identifier les connexions.

    Le bus SDA/SCL pour communiquer avec le module RTC DS1307 utilise les pins A4 et A5 de l’arduino. Sur l’arduino pro mini, ces 2 pins se trouvent au milieu du circuit, il faut souder 2 pin header supplémentaires pour les utiliser.
    Avec un arduino nano, il n’y a pas cet ajout à effectuer: toutes les pins sont sur les cotés du circuit.

    Les interrupteurs de fin de courses sont au repos en position ouverte.

    Le convertisseur 5V USB que j’ai utilisé pour alimenter l’arduino est de la récupération.
    Vous pouvez prendre n’importe quel autre convertisseur DC-DC 5v.

    Pour l’alimentation, j’ai opté pour une batterie de voiture (12V), ce qui donne une très grande autonomie au système.
    Elle est reliée par un connecteur d’alimentation type jack.

    Etape 3 : programmation de l’arduino

    L’arduino pro mini est un peu spécial: il utilise une liaison série pour être programmé. J’ai donc dû utiliser un programmeur USB avec.
    Sur un arduino nano, le connecteur USB est présent donc aucun problème. Le brochage des pins reste le même.

    Le fichier menu.h est à mettre dans le même dossier que poulailler.ino. Il est utilisé en tant que librairie pour les menus.
    Il vous faudra également décompresser la librairie RTClib-master, et la mettre dans le dossier “librairies” de votre IDE Arduino. Cette librairie est utilisée pour communiquer avec le module DS1307.

    Il est possible que la librairie existe déjà dans celles de l'IDE Arduino. Dans ce cas ne pas la mettre.

    Attention: les fichiers déposés sur le site sont renommés. Pour que la compilation fonctionne, mes fichiers doivent être nommés: poulailler.ino, et menu.h
    Sinon il faudra adapter dans la déclaration des librairies au début du sketch.

    fonctionnalités:
    – modifier la date et l’heure courante
    – programmer les heures d’ouverture et de fermeture de la porte
    – configurer en mode automatique par gestion de la luminosité
    – mode forcer pour ouvrir ou fermer la porte

    J’ai créé un menu déroulant pour faciliter la programmation des heures d’ouverture et de fermeture de la porte.
    Les boutons en façade:
    – les flèches servent à naviguer,
    – le bouton OK (Select) sert à aller dans un sous-menu, valider un choix ou une modification,
    – le bouton Reset sert à allumer le rétro-éclairage (10s) du LCD afin de lire l’écran.

    Les valeurs de vos boutons peuvent être différentes des miennes. Il faudra ajuster le code ligne 31 à 37 avec les bonnes valeurs sinon le comportement des boutons sera étrange.

    Le module RTC DS1307 possède une pile de sauvegarde. En cas de coupure de l’alimentation principale, la date et l’heure courante ainsi que les heures programmées sont sauvegardées en mémoire.

    Avant de brancher la partie driver-moteur, vérifiez que le sens du branchement corresponde bien au sens voulu du moteur.
    Faire un essai sans relier la porte et la poulie avec le fil de nylon.

    Utilisation:
    Au démarrage la date et l’heure s’affiche. Au bout de 10s, l’écran s’éteint.
    Appuyer sur les flèches haut ou bas pour allumer l’écran et ouvrir le menu déroulant.
    Naviguer dans le menu déroulant avec les flèches haut/bas.
    Appuyer sur OK pour entrer dans un des menus.
    Les flèches droite/gauche servent à se déplacer sur les différentes valeurs que l’on veut modifier.
    Les flèches bas/haut servent à changer les valeurs.
    Appuyer sur OK pour valider les modifications.
    Si vous appuyez sur flèche gauche alors que vous êtes déjà sur la valeur la plus à gauche de l’écran, vous retournez au menu supérieur.
    Pour la gestion forcée, les flèches haut/bas servent à ouvrir ou fermer la porte. La porte restera dans cet état tant que vous ne quitterez pas le menu gestion forcée.
    En quittant la gestion forcée, les heures programmées reprennent leurs droits et actionneront la porte selon son état.

    La gestion par luminosité automatique est sécurisée par les heures d’ouverture et fermeture:
    La porte ne s’ouvrira que si l’heure d’ouverture est passée et que la valeur de la luminosité est supérieure au seuil choisi.
    La porte ne se fermera que si l’heure de fermeture est passée et que la valeur de la luminosité est inférieure au seuil choisi.

    Cette sécurité permet d’éviter les fausses valeurs reçues par la cellule photoélectrique:
    par exemple si vous passez devant la cellule en pleine journée.

    Si vous avez des erreurs à la compilation avec les librairies LiquidCrystal, Wire, ou RTCLib-master, vérifiez que vous n'êtes pas en conflit avec ces dernières et que vous ne les avez pas en doublon dans votre dossier "libraries", ou dans celui situé dans ProgramFiles.

    Etape 4 : Mise marche

    Etape 5 : Ouverture

    http://www.youtube.com/watch?v=IvfoXd7qGZQ

    Sur la vidéo de l’ouverture, je modifie pour l’exemple l’heure de fermeture en la mettant plus tard que l’heure actuelle ce qui a pour effet d’ouvrir la porte puisque l’heure du couché n’est pas encore arrivé.

    Etape 6 : Fermeture

    http://www.youtube.com/watch?v=jF93cIud7C8

    J’espère que mes explications sont assez claires pour vous.

    Si vous avez des questions n’hésitez pas à me le faire savoir.

    Vous aimez ce tutoriel ?


    BLANCHARD

    07 juil. 2016 à 10:37

    Super idee!!!

    Je partage sur fb!

    Osteres

    07 juil. 2016 à 10:37

    Superbe ! Ça donne des idées de projets ! =)

    jack18

    07 juil. 2016 à 10:37

    tres bonne idée le menu pour choisir les heures 🙂

    helenema

    07 juil. 2016 à 10:37

    Est-ce que ça peut fonctionner avec une l'arduino uno ?

    bagou91

    07 juil. 2016 à 10:37

    Oui c'est bon. Vérifies juste les pins pour le SDA/SCL qu'elles correspondent bien.

    Valknut

    07 juil. 2016 à 10:37

    Bravo à la concurrence quand même ^^ J'ai aucune chance à coté de ça !

    bagou91

    07 juil. 2016 à 10:37

    Merci 🙂

    MichelLemoine

    07 juil. 2016 à 10:37

    Merci pour ce tutoriel !

    J’essaierai de le reproduire chez moi pour mes poules !

    moi2

    07 juil. 2016 à 10:38

    le logiciel arduino me mets plein d’erreur

    sinon c’est super

    bagou91

    07 juil. 2016 à 10:38

    je viens de me rendre compte que j’avais oublié d’inclure en PJ la librairie RTClib pour la programmation.

    c’est corrigé.

    moi2

    07 juil. 2016 à 10:38

    merci mais j'ai encore des problème

    surtout cette ligne :

    bool erreur = false;

    bagou91

    07 juil. 2016 à 10:38

    je ne vois pas le problème.

    j'ai repris mon programme dans un nouveau sketch, il s'est compilé sans erreurs.

    peux tu me donner le message d’erreur exact ?

    moi2

    07 juil. 2016 à 10:38

    vola le long message d'erreur :


    In file included from sketch_feb18a.ino:2:

    C:UsersordiDocumentsArduinolibrariesMenu/Menu.h:33:22: error: WProgram.h: No such file or directory

    In file included from C:UsersordiDocumentsArduinolibrariesMenu/Menu.h:34,

    from sketch_feb18a.ino:2:

    C:UsersordiDocumentsArduinolibrariesMenu/interfaces/MenuInterface.h:41: error: 'byte' has not been declared

    C:UsersordiDocumentsArduinolibrariesMenu/interfaces/MenuInterface.h:47: error: 'byte' has not been declared

    In file included from C:UsersordiDocumentsArduinolibrariesMenu/SubMenu.h:35,

    from C:UsersordiDocumentsArduinolibrariesMenu/MenuItem.h:35,

    from C:UsersordiDocumentsArduinolibrariesMenu/Menu.h:36,

    from sketch_feb18a.ino:2:

    C:UsersordiDocumentsArduinolibrariesMenu/interfaces/SubMenuInterface.h:43: error: 'byte' has not been declared

    C:UsersordiDocumentsArduinolibrariesMenu/interfaces/SubMenuInterface.h:48: error: 'byte' has not been declared

    In file included from C:UsersordiDocumentsArduinolibrariesMenu/MenuItem.h:35,

    from C:UsersordiDocumentsArduinolibrariesMenu/Menu.h:36,

    from sketch_feb18a.ino:2:

    C:UsersordiDocumentsArduinolibrariesMenu/SubMenu.h:46: error: 'byte' has not been declared

    C:UsersordiDocumentsArduinolibrariesMenu/SubMenu.h:51: error: 'byte' has not been declared

    C:UsersordiDocumentsArduinolibrariesMenu/SubMenu.h:53: error: 'byte' does not name a type

    C:UsersordiDocumentsArduinolibrariesMenu/SubMenu.h:54: error: 'byte' does not name a type

    C:UsersordiDocumentsArduinolibrariesMenu/SubMenu.h:55: error: 'byte' does not name a type

    In file included from sketch_feb18a.ino:2:

    C:UsersordiDocumentsArduinolibrariesMenu/Menu.h:51: error: 'byte' has not been declared

    C:UsersordiDocumentsArduinolibrariesMenu/Menu.h:59: error: 'byte' has not been declared

    C:UsersordiDocumentsArduinolibrariesMenu/Menu.h:62: error: 'byte' does not name a type

    C:UsersordiDocumentsArduinolibrariesMenu/Menu.h:63: error: 'byte' does not name a type

    C:UsersordiDocumentsArduinolibrariesMenu/Menu.h:64: error: 'byte' does not name a type

    sketch_feb18a:10: error: 'Button_t' does not name a type

    sketch_feb18a:11: error: expected ',' or '…' before '&' token

    sketch_feb18a:11: error: ISO C++ forbids declaration of 'Menu_t' with no type

    sketch_feb18a:32: error: 'Menu_t' does not name a type

    sketch_feb18a.ino: In function 'void loop()':

    sketch_feb18a:90: error: 'readPushButton' was not declared in this scope

    sketch_feb18a:90: error: 'BP_NONE' was not declared in this scope

    sketch_feb18a:94: error: 'MAIN_MENU' was not declared in this scope

    sketch_feb18a.ino: At global scope:

    sketch_feb18a:169: error: 'Button_t' does not name a type

    sketch_feb18a:186: error: expected ',' or '…' before '&' token

    sketch_feb18a:186: error: ISO C++ forbids declaration of 'Menu_t' with no type

    sketch_feb18a.ino: In function 'void displayMenu(int)':

    sketch_feb18a:191: error: 'Button_t' was not declared in this scope

    sketch_feb18a:191: error: expected `;' before 'buttonPressed'

    sketch_feb18a:200: error: 'menu' was not declared in this scope

    sketch_feb18a:205: error: 'readPushButton' was not declared in this scope

    sketch_feb18a:205: error: 'BP_NONE' was not declared in this scope

    sketch_feb18a:208: error: 'buttonPressed' was not declared in this scope

    sketch_feb18a:208: error: 'readPushButton' was not declared in this scope

    sketch_feb18a:208: error: 'BP_NONE' was not declared in this scope

    sketch_feb18a:219: error: 'readPushButton' was not declared in this scope

    sketch_feb18a:219: error: 'BP_NONE' was not declared in this scope

    sketch_feb18a:222: error: 'buttonPressed' was not declared in this scope

    sketch_feb18a:223: error: 'BP_UP' was not declared in this scope

    sketch_feb18a:229: error: 'BP_DOWN' was not declared in this scope

    sketch_feb18a:235: error: 'BP_LEFT' was not declared in this scope

    sketch_feb18a:239: error: 'BP_SELECT' was not declared in this scope

    sketch_feb18a.ino: In function 'void doMainMenuAction(byte)':

    sketch_feb18a:305: error: 'Button_t' was not declared in this scope

    sketch_feb18a:305: error: expected `;' before 'buttonPressed'

    sketch_feb18a:320: error: 'buttonPressed' was not declared in this scope

    sketch_feb18a:320: error: 'readPushButton' was not declared in this scope

    sketch_feb18a:320: error: 'BP_NONE' was not declared in this scope

    sketch_feb18a:326: error: 'buttonPressed' was not declared in this scope

    sketch_feb18a:327: error: 'BP_UP' was not declared in this scope

    sketch_feb18a:333: error: 'BP_DOWN' was not declared in this scope

    sketch_feb18a:339: error: 'BP_SELECT' was not declared in this scope

    sketch_feb18a:342: error: 'BP_LEFT' was not declared in this scope

    sketch_feb18a:359: error: 'Button_t' was not declared in this scope

    sketch_feb18a:359: error: expected `;' before 'buttonPressed'

    sketch_feb18a:364: error: 'buttonPressed' was not declared in this scope

    sketch_feb18a:364: error: 'readPushButton' was not declared in this scope

    sketch_feb18a:364: error: 'BP_NONE' was not declared in this scope

    sketch_feb18a:376: error: 'buttonPressed' was not declared in this scope

    sketch_feb18a:377: error: 'BP_UP' was not declared in this scope

    sketch_feb18a:384: error: 'BP_DOWN' was not declared in this scope

    sketch_feb18a:391: error: 'BP_SELECT' was not declared in this scope

    sketch_feb18a:394: error: 'BP_LEFT' was not declared in this scope

    sketch_feb18a.ino: In function 'uint8_t menu_fleches(uint8_t*, uint8_t, uint8_t)':

    sketch_feb18a:410: error: 'Button_t' was not declared in this scope

    sketch_feb18a:410: error: expected `;' before 'buttonPressed'

    sketch_feb18a:417: error: 'buttonPressed' was not declared in this scope

    sketch_feb18a:417: error: 'readPushButton' was not declared in this scope

    sketch_feb18a:417: error: 'BP_NONE' was not declared in this scope

    sketch_feb18a:423: error: 'buttonPressed' was not declared in this scope

    sketch_feb18a:424: error: 'BP_UP' was not declared in this scope

    sketch_feb18a:437: error: 'BP_DOWN' was not declared in this scope

    sketch_feb18a:441: error: 'BP_LEFT' was not declared in this scope

    sketch_feb18a:445: error: 'BP_RIGHT' was not declared in this scope

    sketch_feb18a:449: error: 'BP_SELECT' was not declared in this scope

    sketch_feb18a:453: error: 'BP_RST' was not declared in this scope

    bagou91

    07 juil. 2016 à 10:38

    tes erreurs sont dû au fait qu'il manque le fichier menu.h

    mon fichier librairie menu.h doit être dans le même dossier que poulailler.ino

    moi2

    07 juil. 2016 à 10:38

    c’est bon, j’ai trouvé

    moi c’est :

    #include “Menu-2.h”

    et pas

    #include “Menu.h”

    bagou91

    07 juil. 2016 à 10:38

    ok. je crois que c'est à cause du dossier Menu qui se trouve dans ton dossier C:UsersordiDocumentsArduinolibraries. Il est en conflit avec mon fichier.

    supprimes ce dossier momentanément et réessayes de compiler

    bagou91

    07 juil. 2016 à 10:38

    c'est à cause du site…

    certains fichiers uploadés sont renommés.

    moi2

    07 juil. 2016 à 10:39

    si on a une carte arduino uno on peut y alimenter en 9v ou en 12v sans soucis ?

    comme ça a la place le moteur est alimenter en 12v directement

    bagou91

    07 juil. 2016 à 10:39

    oui tu peux jusqu'à 12V d'après les spécifications officiels Arduino

    https://www.arduino.cc/en/Main/ArduinoBoardUno

    moi2

    07 juil. 2016 à 10:39

    une arduino uno doit surement avoir un horloge interne pour les delay

    bagou91

    07 juil. 2016 à 10:39

    non pas d'horloge au sens propre date, heure…

    il a une vitesse d'horloge pour compter des cycles. les delay sont calculés par rapport à ces cycles d'horloges.

    tu peux regarder la doc complète de l'ATMEGA328P pour en savoir plus:

    http://www.atmel.com/devices/atmega328p.aspx

    moi2

    07 juil. 2016 à 10:39

    on doit pouvoir facilement pouvoir mettre un témoin quand c'est ouvert et un témoin quand c'est ferme en reprenant sur les microshitch

    bagou91

    07 juil. 2016 à 10:39

    oui tu peux tout à fait. sur l'arduino pro mini, il reste la pin A0 de libre.

    sur un arduino nano il reste plusieurs pins de libre au choix..

    moi2

    07 juil. 2016 à 10:39

    quand les interrupteur ne sont pas appuyé il faut que le courant passe ou pas

    si on y met en gestion forcée, il faut appuyé sur quel touche pour que ça s’ouvre

    bagou91

    07 juil. 2016 à 10:39

    lorsque les interrupteurs de fin de course sont appuyés, le courant passe, et la pin d'entrée sur l'arduino se trouve à l'état haut.

    pour la gestion forcée, utilises les fleches haut/bas pour ouvrir ou fermer la porte.

    moi2

    07 juil. 2016 à 10:39

    la carte arduino est alimenté sur son 5v et son gnd?

    bagou91

    07 juil. 2016 à 10:39

    oui puisqu'il y a le convertisseur (régulateur) 5V en amont.

    moi2

    07 juil. 2016 à 10:39

    je voudrai adapté le code pour que quand c'est en gestion forcé il faut appuyé trois fois pour que ça se ferme et y mettre en auto pour que ça s'ouvre.

    quelle modification doit-je faire?

    bagou91

    07 juil. 2016 à 10:39

    pourrais tu ouvrir un sujet sur le forum ?

    il va falloir remanier plusieurs lignes de codes…

    moi2

    07 juil. 2016 à 10:39

    voila :

    http://ouiaremakers.com/topic/objectif-poulailler/

    Ipxav

    07 juil. 2016 à 10:39

    Excellent comme tuto ! Comment ça se passe si une poule ne rentre pas à l'heure programmée ? 😉

    bagou91

    07 juil. 2016 à 10:39

    Elle resterait dehors…

    Mais!

    J'ai vérifié le dicton “se coucher à l'heure des poules” et je les ai toujours vu rentrer à la tombée du jour. Elles vivent au rythme du soleil.

    Par sécurité je mets une heure de fermeture après le coucher du soleil.

    nanard_baudon

    07 juil. 2016 à 10:42

    Bon projet, mais le top serait de contrôler que toutes les poules sont bien rentrées…sinon gare la belette ou le renard!

    palou72

    07 juil. 2016 à 10:44

    Bonjour, super, j'ai envisage de faire cela pour mon poulailler, cela va bien me servir. J'ai penser de mettre un comptage de poules pour voir si toutes étaient bien rentrées.

    Question, pour ne pas avoir pris un moteur pas à pas?

    merci à plus

    bagou91

    07 juil. 2016 à 10:44

    Bonjour et merci pour ton appréciation.

    Je me suis naturellement orienté vers un moteur DC avec motoréducteur sans trop me poser de questions par rapport à un pas à pas 🙂 La seule chose à laquelle j'ai pensé était son couple suffisant pour remonter la porte.

    palou72

    07 juil. 2016 à 10:44

    Bonjour, quelle différence entre le programme poulailler 2 et le 3, est ce cela peut marcher avec un arduino 2560 mega.

    Merci

    A plus

    bagou91

    07 juil. 2016 à 10:44

    je ne vois pas de quoi tu parles: programme poulailler 2 et 3 ??

    oui ça fonctionnera aussi avec un arduino 2560 mega.

    palou72

    07 juil. 2016 à 10:44

    http://ouiaremakers.com/wp-content/uploads/formidable/poulailler-2.ino,

    et

    http://ouiaremakers.com/wp-content/uploads/formidable/poulailler-3.ino,

    il y a ces deux programmes dans ton tuto, je n'ai pas regarder en détail si il y avait une différence. Merci

    A plus

    alex85

    25 juil. 2016 à 18:04

    bonjour
    tres beau tuto !
    Auriez vous les code a mettre dans l'arduino ?
    les liens ne fonctionne pas.
    merci d'avance

    Manu1

    26 juil. 2016 à 12:05

    Bonjour, merci pour le partage ! Est-il possible d'avoir également le fichier Fritzing ?

    Manu1

    26 juil. 2016 à 13:17

    Une autre petite question, je teste avec une version plus ancienne du fichier poulaillier.ino et lorsque je téléverse sur l'Arduino nano, j'ai l'erreur suivante :

    poulailler:36: error: 'doMainMenuAction' was not declared in this scope
    & doMainMenuAction

    Faut-il déclarer "doMainMenuAction" à un endroit spécifique ?
    Merci

    bagou91

    12 août 2016 à 11:21

    Manu, alex85:
    j'ai corrigé le tuto et remis les fichiers sources.
    Suite à la mise en ligne de la nouvelle version du site, le tuto était corrompu.

    ayachemaxime

    13 sept. 2016 à 11:16

    Bonjour,
    Je n'arrive pas à accéder aux liens des fichiers corrigés, pourrais tu me les envoyés par mail: ayachemaxime@gmail.com. Sinon super idée !

    gersoiis

    19 sept. 2016 à 17:04

    Bonjour, j'ai également le meme probleme
    poulailler:36: error: 'doMainMenuAction' was not declared in this scope
    & doMainMenuAction
    J'ai essayé avec poulailler et poulailler 3 et cela ne change rien
    peux tu s'il te plait remettre les liens ?
    c'est vraiment sympa ton idée d'écran programmé pour le poulailler merci

    c.drik.pub

    27 sept. 2016 à 20:15

    Bonjour,
    J'avais dans l'idée de me faire une porte automatique avec un arduino.
    En faisant quelques recherches je suis tombé sur ta réalisation. Vraiment très chouette.
    Même problème pour moi.
    J'ai retélécharger à nouveau les fichiers. poulailler3 et menu3.h et obtiens l'erreur cité plus haut :

    oulailler:36: error: 'doMainMenuAction' was not declared in this scope

    &doMainMenuAction

    ^

    Utilisation de la bibliothèque LiquidCrystal version 1.0.5 dans le dossier: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal
    Utilisation de la bibliothèque Wire version 1.0 dans le dossier: C:\Users\cdrik\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.14\libraries\Wire
    Utilisation de la bibliothèque RTClib-master version 1.0.0 dans le dossier: C:\Program Files (x86)\Arduino\libraries\RTClib-master
    exit status 1
    'doMainMenuAction' was not declared in this scope

    J'ai également tenté avec le zip "poulailler_sources" mais idem (sauf qu'au lieu de l'erreur "poulailler:36:" c'est "poulailler:37:" le reste l'erreur est la même.
    Une idée d’où provient cette erreur ?
    Merci par avance.

    c.drik.pub

    28 sept. 2016 à 14:31

    Après quelques recherche l'erreur du 'doMainMenuAction' was not declared in this scope vient simplement du fait que j'étais sur la derniere version de l'IDE arduino.
    J'ai rétrogradé ma version à la 1.5.7 et ça roule au poil !
    Il en me reste plus qu'a tout cabler et installer !
    Merci pour le programme, je laisserai un nouveau commentaire pour vous dire si tout est OK.
    Encore merci.

    bagou91

    30 sept. 2016 à 14:10

    je viens de voir les derniers commentaires:
    renommez bien les fichiers de cette manière: poulailler.h et menu.h
    normalement ca devrait bien compiler.

    bagou91

    30 sept. 2016 à 14:14

    prenez le zip qui se trouve dans la section Fichiers Techniques.

    c.drik.pub

    06 oct. 2016 à 09:13

    Bonjour,
    Désolé mais pour ma part même avec le fichier sources.zip qui se trouve dans fichiers techniques cela ne veut pas se compiler avec la version 1.6.10 de l'IDE Arduino. Si je tente avec la version 1.5.7 cela se compile bien mais le comportement des boutons du LCD est incohérent.
    Quelle version de l'IDE Arduino utilisez vous ?
    Pourriez vous nous mettre une copie en zip de vote répertoire libraries ? (on ne sait jamais vous avez put-être une librairies qui diffère).
    Merci par avance.

    bagou91

    06 oct. 2016 à 11:54

    Je ne saurais te dire dans quelle ancienne version j'avais compilé.
    Depuis la publication du tuto, j'ai mis à jour mon IDE arduino en version 1.6.9, et je n'avais pas retenté une compilation. J'ai également l'erreur en v1.6.9

    Je viens de corriger la source, ça compile bien.
    En fait il faut remonter toutes les fonctions en haut du fichier juste après les déclarations de variables.
    Seul setup() et loop() doivent être en fin de fichier.

    c.drik.pub

    06 oct. 2016 à 13:19

    Super.
    Merci pour le test.
    Je viens donc d'installer la version 1.6.9 et de retester avec les nouvelles sources.
    Je n'ai plus l'erreur mais j'en ai une concernant RTClib (que je n'avais pas avant avec les vieilles version de l'IDE). Voici l'erreur :

    Arduino : 1.6.9 (Windows 10), Carte : "Arduino Pro or Pro Mini, ATmega328 (5V, 16 MHz)"

    libraries\RTClib-master\RTClib.cpp.o: In function `DateTime::DateTime(unsigned long)':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:58: multiple definition of `DateTime::DateTime(unsigned long)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:58: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `DateTime::DateTime(unsigned long)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `DateTime::DateTime(unsigned int, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `DateTime::DateTime(unsigned int, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `DateTime::DateTime(DateTime const&)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `DateTime::DateTime(DateTime const&)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `DateTime::DateTime(char const*, char const*)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `DateTime::DateTime(char const*, char const*)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `DateTime::DateTime(__FlashStringHelper const*, __FlashStringHelper const*)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `DateTime::DateTime(__FlashStringHelper const*, __FlashStringHelper const*)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `DateTime::dayOfWeek() const'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `DateTime::unixtime() const'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `DateTime::secondstime() const'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `DateTime::operator+(TimeSpan const&)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `DateTime::operator-(TimeSpan const&)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `DateTime::operator-(DateTime const&)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `TimeSpan::TimeSpan(long)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `TimeSpan::TimeSpan(long)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `TimeSpan::TimeSpan(int, signed char, signed char, signed char)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `TimeSpan::TimeSpan(int, signed char, signed char, signed char)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `TimeSpan::TimeSpan(TimeSpan const&)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `TimeSpan::TimeSpan(TimeSpan const&)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `TimeSpan::operator+(TimeSpan const&)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `TimeSpan::operator-(TimeSpan const&)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `RTC_DS1307::begin()'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `RTC_DS1307::writeSqwPinMode(Ds1307SqwPinMode)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `RTC_Millis::adjust(DateTime const&)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `RTC_Millis::offset'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `RTC_Millis::now()'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `RTC_DS1307::isrunning()'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `RTC_DS1307::now()'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `RTC_DS1307::readSqwPinMode()'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `RTC_DS1307::readnvram(unsigned char*, unsigned char, unsigned char)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `RTC_DS1307::readnvram(unsigned char)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `RTC_DS1307::adjust(DateTime const&)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `RTC_DS1307::writenvram(unsigned char, unsigned char*, unsigned char)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    libraries\RTClib-master\RTClib.cpp.o: In function `date2days':

    C:\Program Files (x86)\Arduino\libraries\RTClib-master/RTClib.cpp:40: multiple definition of `RTC_DS1307::writenvram(unsigned char, unsigned char)'

    sketch\RTClib-master\RTClib.cpp.o:sketch\RTClib-master/RTClib.cpp:40: first defined here

    collect2.exe: error: ld returned 1 exit status

    exit status 1
    Error compiling for board Arduino Pro or Pro Mini.

    Je n'ai pas affiché plus de détail dans les préférences de l'IDE mais je peux activer les détails et te renvoyer plus d'infos si besoin.

    bagou91

    06 oct. 2016 à 13:23

    tu as la librairie RTCLib en doublon. Elle existe à la fois dans C:\Program Files (x86)\Arduino\libraries\ et dans MesDocuments\Arduino\libraries
    il faut supprimer l'un des 2 dossiers

    c.drik.pub

    06 oct. 2016 à 14:26

    OK merci.
    J'ai vu ça après le post...
    Du coup ça compil bien.
    Par contre j'ai le même problème avec le comportement du LCD. C'est assez étrange....
    Lorsque je l'allume j'ai :
    Votre choix ?
    Config Date/heure

    Si je ne touche à rien il se met sur :
    00:00 01/01/2000
    auto: 105 lum:24

    Si je clic sur "LEFT" :
    Config Date/heure
    00:00 01/01/00
    là je peux modifier l'heure avec la flèche du haut, me déplacer vers la droite avec "RIGHT", par contre pour me déplacer vers là gauche je dois utiliser "DOWN" (car si j'utilise "LEFT" je reviens au menu précédent "Votre choix ? Config Date/heure")
    Si je met l'heure un cran trop haut, par exemple 15h00 au lieu de 14h00, je ne peux pas déscendre la valeur car le bouton "DOWN" me fait aller vers la gauche.
    Sinon le bouton "SELECT" n'a pas l'air de me donner quoi que ce soit...

    J'ai vu que ce shield avait la particularité d'avoir des résistance pour différencier les boutons (sinon ça ne serait pas géré uniquement par la A0). Penses tu que cela pourrait venir de là ?

    J'ai testé mon shield dfrobot avec le code d'exmple sur ce site au cas ou mon shield aurait un problème mais mes boutons ont bien tous été reconnus : http://tiptopboards.free.fr/arduino_forum/viewtopic.php?f=2&t=36

    c.drik.pub

    06 oct. 2016 à 14:32

    Je me répond à moi même :)
    Je t'ai dit qu'en faisant le test pour mon shield ça fonctionnait...
    J'ai donc juste repris les valeurs du site qui vont bien pour mon shield :)
    Mes valeurs sont :
    unsigned int val = analogRead(buttons);
    //Serial.println(val);
    if (val > 1000) return BP_NONE;
    if (val

    bagou91

    06 oct. 2016 à 14:30

    les valeurs sont surement différentes par rapport à celles que j'utilise dans mon code.
    lignes 31 à 37 à modifier selon tes propres bonnes valeurs

    c.drik.pub

    07 oct. 2016 à 21:01

    Bonjour,
    Je suis en train de finir d'assembler les composants.
    Il ne me reste que le driver moteur.
    Je me posait une question (idiote surement).
    Ou brancher tout ça :)
    J'ai le même driver moteur que sur tes photos (L298N).
    J'ai en sortie : OUT 1, OUT2, OUT3, OUT4
    En entrée j'ai : +12V, GND, 5V, FNA(avec un jumper dessus), IN1, IN2, IN3, IN3, et un autre jumper sans rien de noté.
    Pour l'entrée 12V je mets le + sur le 12V et le - sur le GND.
    Pour le 5V et les commandes là je pèches un peu...
    Le 5V vient de l'arduino ou du régulateur 5V ou les 2 ? j'ai beau regardé sur le fichier fritzing et je ne vois pas. En fait j'ai l'impression que ça viens des 2...
    Pour les commandes sur le fichiers fritzing je vois 1INa, 1INb et 1Diag/EN... ou les mettre sur mon driver ?
    Je reprécise le driver est le même que sur tes photos : https://www.amazon.fr/Bheema-double-commande-contr%C3%B4leur-Arduino/dp/B00Q6WPVU0/ref=sr_1_11?s=electronics&ie=UTF8&qid=1475866851&sr=1-11&keywords=driver+moteur+l298N

    Merci beaucoup par avance.

    bagou91

    07 oct. 2016 à 21:56

    moteur sur OUT1 OUT2, IN1 = 1INa, IN2 = 1INb, ENa = 1Diag/EN, régulateur alimente l'arduino et l'entrée en 5V.
    Bien vérifier que le moteur tourne dans le bon sens lorsque tu essaieras, sinon inverser le branchement du moteur.
    OUT3 OUT4 IN3 IN4 ne servent pas ici.

    c.drik.pub

    07 oct. 2016 à 22:22

    Super t'es trop génial :)
    Et sinon j'ai pris des interrupteurs à 3 broches.
    J'ai la possibilité en appuyant sur le contact soit de fermer le circuit avec 2 broches soit d'ouvrir avec 2 autres. Sur ton schéma il faut que le circuit soit ouvert ou fermé sur les interrupteur ?

    bagou91

    08 oct. 2016 à 08:03

    Il faut utiliser les broches des interrupteurs qui fermeront le circuit.
    Au repos, l'interrupteur est en "position normalement ouvert" dans le jargon électronique

    c.drik.pub

    08 oct. 2016 à 13:20

    Merci pour l'info.
    Je rencontre encore un problème que je n'arrive pas à expliquer.
    Pour simplifier la distribution du courant en sortie du régulateur j'ai fait des barettes de distribution.
    Mes barettes se composent ainsi :
    - Arduino
    - RTC
    - LCD
    - Cellule photoelec
    - InterHaut
    - InterBas

    Je n'arrive pas à comprendre le fonctionnement des interrupteurs car si j'appuie sur un des interrupteur (n'importe lequel) tout le montage s’éteint. Si je relâche tout se rallume. Pourtant tout est connecté en sortie de régulateur... je n'arrive pas à comprendre pourquoi les interrupteur coupe le reste du circuit.
    Mes interrupteurs sont fixé sur un bornier qui est elle même sur une platine. J'ai connecté comme ceci :
    - Inter => Bornier + => Platine ou est fixé le bornier => Barrette de distribution
    - Inter => Bornier - => Platine ou est fixé le bornier => Barrette de distribution et broche A10
    Je pense que mon branchement est mauvais mais je n'arrive pas à voir ou ....
    Pourrais tu me redonner un petit coup de main ?
    Merci d'avance.

    bagou91

    08 oct. 2016 à 17:44

    Tu as surement fait des courts-circuit !
    sSur les interrupteurs: 1 patte vers le +5V, l'autre patte vers l'entrée arduino approprié (D9 ou D10). Pas de patte vers la masse.

    c.drik.pub

    08 oct. 2016 à 18:39

    OK, en voyant le fichier fritzing je pensait que c'était raccordé à la masse (ça semble logique que ce ne le soit pas pourtant :) ).
    Par contre quand je met une patte sur le +5V et l'autre patte sur une des entrée, je n'arrive pas à utiliser le menu pour forcer l'ouverture ou la fermeture....
    Si je débranche un des interrupteur, je peux forcer la fermeture, si j'enlève l'autre je peux forcer l'ouverture et bien sur si j'enlève les 2 je peux forcer ouverture et fermeture. J'ai essayé en faisant contact ou non sur les interrupteurs et pas mieux...
    Je sent que je suis pas loin du bout :)

    bagou91

    08 oct. 2016 à 19:18

    es tu bien sûr d'avoir correctement raccorder les pattes des interrupteurs ?
    la 2eme patte va à une entrée de l'arduino mais aussi à un résistance qui à sa 2ème patte à la masse (cf schéma) (principe du pull-down resistor)

    c.drik.pub

    19 oct. 2016 à 19:08

    Bonjour,
    Navré de revenir à la charge....
    J'ai (enfin) fini d'installer le tout sur le poulailler.
    Je me heurte à un problème.... la porte s'ouvre à l'heure configurée comme prévue mais elle se ferme toute seul au bout de quelques seconde.
    Comment fais tu pour que la porte reste ouverte ?

    bagou91

    19 oct. 2016 à 22:14

    Rien de plus que le code donné....
    Vérifies ton heure de fermeture et que tu as mis la luminosité configurée à 0 en valeur.

    c.drik.pub

    20 oct. 2016 à 08:21

    OK.
    En fait je n'ai pas fait la partie mécanique comme toi. Mon moteur est à l'horizontal en haut de la porte un axe est raccordé dessu et un fil s'enroule autour de l'axe se qui fait se lever la porte. Lorsque la porte monte, ça appuie sur l'interrupteur qui coupe le moteur. Mais au bout de quelques seconde c'est comme si la porte se refermait sous son propre poids (pourtant c'est une porte aussi légère qu'un bout de carton :), type bois de cagette). Est ce que ton moteur se "bloque" d'un sens ou de l'autre ?

    bagou91

    20 oct. 2016 à 08:35

    Ah je comprends...
    Relis ce que j'ai écris dans mon choix de moteur et système d'engrenage.
    Le moteur n'étant plus sous tension, ton axe de moteur libre se retrouve entraîné par le poids de la porte.

    c.drik.pub

    20 oct. 2016 à 08:39

    Oui c'est bien ce que je pensait...
    Bon et bien il va falloir que je m'achète tout ça :)
    Merci beaucoup.

    c.drik.pub

    10 oct. 2016 à 08:43

    Super c’était bien ça.
    Merci beaucoup !

    c.drik.pub

    06 oct. 2016 à 14:34

    oui en effet :)
    mon message précédent à été tronqué.
    Je remet les valeurs au cas ou d'autre auraient le même soucis :

    if (val > 1000) return BP_NONE;
    if (val

    c.drik.pub

    06 oct. 2016 à 14:37

    le code doit être interprété par le site et me tronquer le message...
    je les donne donc différemment :
    - Right 50
    - Up 195
    - Down 380
    - Left 555
    - Select 790

    Voila !

    toutypasse

    17 oct. 2016 à 11:16

    bonjour pouvez vous m'envoyer des photos du cablage plus net car j'ai réussi à cabler le lcd keypad mais pas le restant les photos sont flous et je ne sais pas ou raccorder. Merci beaucoup voila mon adresse toutypasse@live.fr

    bagou91

    17 oct. 2016 à 11:32

    télécharger le schéma au format fritzing dans la partie fichiers techniques.
    en l'ouvrant avec Fritzing (gratuit), vous verrez les connexions avec le nom des pins.

    alex85

    18 oct. 2016 à 17:40

    bonjour
    voici ce que me marque arduino lors du televersement du programme
    Les options de compilation ont été modifiées, tout sera recompilé
    poulailler.ino.ino:2:18: fatal error: Menu.h: No such file or directory
    compilation terminated.
    Erreur lors de la compilation.

    Que se passe t il ?
    Merci d'avance pour vos réponse
    cdt

    enzoibanez

    17 déc. 2016 à 17:53

    Bonjour, je suis tombé sur votre superbe projet et ca m'a donné envie de me lancer pour mon poulallier, lachement attaqué par une fouine..
    J ai pris les composants que vous recommandiez, j 'ai placé dans un dossier le poulallier.ino et le menu.h, j'ai fait le montage sur la breadboard, j 'ai compilé les programmes sans erreur, et j'ai téléversé sans problème.
    mais voilà, j 'ai l'écran LCD qui s'allume d'un beau bleu immaculé sans aucune insciption du menu et au bout de 10 s il s'éteint sans aucune action moteur ou autre. comme si il manquait qq chose, je me creuse la tete, c'est la meilleure facon d'apprendre. A tout hazard, si ca vous parle comme non fonctionnement merci de me le dire, pour un coup de pouce :o) ca serait sympas. je précise que je suis débutant en arduino, mais j 'ai suivi scrupulesement le fritzing..et la compile est bonne.. arggG...

    bagou91

    29 déc. 2016 à 14:23

    Bonjour, désolé pour le retard de ma réponse...
    À priori si la compilation s'est bien fait, je ne vois qu'un possible problème dans le câblage...
    Le programme a l'air de fonctionner vu qu'il eteind l'écran au bout de 10s ce qui est prévu dans le code.

    bagou91

    29 déc. 2016 à 14:25

    PS: avez vous ajuster le contraste avec le potentiomètre du LCD ?

    CEGE

    29 déc. 2016 à 13:27

    Bonjour.
    Comme beaucoup, je suis débutant, et je cherche quel est le code idéal pour faire fonctionner cette tant souhaitée porte automatique. Quelqu'un a t'il réussi finalement à trouver le bon compromis ? j'aimerais bien me lancer dans quelque chose qui reste abordable pour quelqu'un qui n'est pas un expert.

    enzoibanez

    08 jan. 2017 à 21:18

    Bonsoir, incroyable j ai tourné pedant 30 secondes la vis du contraste et miracle le texte de commande est apparu. Merci bagou pour votre aide. Bon maintenant que je vois les commandes j ai un probleme avevc les boutons pour regler les heures levé et couché, le bp select ne onne rien je ne peix que naviguer dans le menu, choix marche forcé, gestion auto etc... c est peut etre une devlaration des boutons qui est pas bonne. ? Merci. Enzo

    bagou91

    09 jan. 2017 à 07:58

    Super!
    Regardes le commentaire de C.drik.pub: certaines valeurs ont dû être modifiées. Je l'indique également dans l'étape 3

    enzoibanez

    25 jan. 2017 à 15:25

    hello bagou91, merci pur le conseil j 'ai modifié les valeurs avec celle données dans le commentaire a cdricpub, mais rien n'y fait. j 'ai un shield lcd keypad de marque DIYMALL et je n'arrive pas à trouver une doc donnant les valeurs des boutons associés....une idée ? merci beaucoup de votre aide.

    bagou91

    25 jan. 2017 à 15:42

    tu peux récupérer la valeur des boutons en connectant A0 du lcd sur une entrée analogique d'un arduino. et à l'aide d'un sketch lisant l'entrée tu pourras déterminer les valeurs des boutons.

    enzoibanez

    25 jan. 2017 à 16:38

    merci j 'essaye ca.

    enzoibanez

    26 jan. 2017 à 22:38

    bonsoir, le sketch m 'a retourné ces valeurs. bizzare d'avoir 0 pour le boutton RIght :
    unsigned int val = analogRead(buttons);
    //Serial.println(val);
    if (val > 1000) return BP_NONE;
    if (val

    enzoibanez

    26 jan. 2017 à 22:42

    je reprends car ca m 'a coupé le message :


    val 1000 BP_NONE;
    val 0 BP_RIGHT;
    val 102 BP_UP;
    val 258 BP_DOWN;
    val 410 BP_LEFT;
    val 639 BP_SELECT;

    mais meme avec ces valeurs le fonctionnement du menu et des bouttons n 'est pas normal et je n'arrive pas à configurer les heures levé et couché. je continu ma quete ;o)

    bagou91

    27 jan. 2017 à 10:04

    0 pourrait être une valeur plausible. Essayes de mettre des Serial.println() un peu partout pour débugguer.

    vegetalswarning

    28 jan. 2017 à 23:08

    bonjour je voudrais savoir l'autonomie de votre système ? vous devez recharger la batterie de voiture tout les combien de temps ?

    bagou91

    29 jan. 2017 à 10:03

    Je recharge la batterie 1 fois par mois

    Geekoid

    17 fév. 2017 à 12:39

    Super projet très bien documenté! Bravo à toi!

    chartxu

    05 mar. 2017 à 16:17

    Bonne soir,
    Merci beaucoup pour votre projet de porte automatique au poulailler.
    J'ai construit et il fonctionne très bien. Cependant, je dois garder le moteur en marche pendant 2 secondes, une fois activé le capteur bas.
    Vous pourriez me dire comment entrer dans un délai de 2 secondes?.
    Merci beaucoup,
    José Antonio Salazar

    chartxu

    05 mar. 2017 à 16:19

    Le delay est nécessaire pour faire fonctionner la sécurité des joints mécaniques ont installé. Merci.

    bagou91

    06 mar. 2017 à 10:18

    ligne 495, après la boucle while(), tu peux ajouter un delay(2000). le moteur restera actif encore 2 secondes après que le capteur du bas soit enclenché.
    par contre ça va donner du "mou" au fil nylon qui tient la porte: attention à ce qu'il ne sorte pas trop de sa poulie.

    chartxu

    06 mar. 2017 à 17:48

    Merci pour la réponse. Fait les modifications, la performance parfaite. Pas de problème avec un fil de nylon, car portant un petit contrepoids. Si vous voulez, je peux envoyer des photos de ma porte (mon mail: pedresadearlanza@gmail.com).

    vico74

    26 mar. 2017 à 16:11

    salut, merci de partager ton idée. Je n'arrive pas a faire fonctionner le programme (avec une arduino uno).
    Tout fonctionne mais impossible de faire tourner le moteur, j ai essayé avec une autre programme et la le moteur marche.

    bagou91

    26 mar. 2017 à 21:20

    Bonjour. Vérifies tes branchements. Il n'y a aucune raison pour que ça ne fonctionne pas. Le Uno et le Pro Mini ont le même microprocesseur donc le programme fonctionne sur les 2 cartes.

    Bidji

    07 avr. 2017 à 20:27

    Bonjour, j'admire le travail que tu as réalisé! J'aimerai bien le réaliser chez moi mais j'ai un problème sur arduino:

    Arduino : 1.8.1 (Windows 10), Carte : "Arduino/Genuino Uno"

    C:\Users\hp pavilion\Desktop\Poulailler\poulailler.ino:2:18: fatal error: Menu.h: No such file or directory

    #include "Menu.h"

    ^

    compilation terminated.

    exit status 1
    Erreur de compilation pour la carte Arduino/Genuino Uno

    Ce rapport pourrait être plus détaillé avec
    l'option "Afficher les résultats détaillés de la compilation"
    activée dans Fichier -> Préférences.

    Merci de bien vouloir m'aider.

    bagou91

    08 avr. 2017 à 08:01

    As tu bien mis mon fichier menu.h dans le même dossier que poulailler.ino ?
    L'erreur informe que le fichier n'est pas trouvé.
    Lis bien tous les commentaires, tu y trouveras des réponses à tes possible interrogations et problèmes.

    Bidji

    08 avr. 2017 à 09:31

    Oui justement après avoir lu les commentaires j'ai mis les deux fichiers ensembles...

    Godbutcher

    16 avr. 2017 à 22:14

    Merci pour ton tuto. c'est vraiment super :) c'est exactement ce que je recherchais
    j’espère y arriver car je débute pour être franc. un pot m'a filé un driver moteur différent du tient. le successeur du L298N m'a t'il dit...
    http://www.ebay.fr/itm/281838858571?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
    Mais du coup j'ai du mal a m'y retrouvé sur les branchements étant donné que je n'ai pas les mêmes intitulé.
    D'un coté jai: PWMA / AIN2 / AIN1 / STBY / BIN1 / BIN2 / PWMB / GND
    et en face: VM / VCC / GND / A01 / A02 / B02 / B01 / GND
    et pas de 1Diag/EN ou ENa..
    Pourrais tu m'aider? :))
    ou dois je plutôt commander le même driver que toi?
    Un grand merci d'avance

    bagou91

    17 avr. 2017 à 16:55

    bonjour. Ce module utilise le même principe: un pont en H.
    Utilisez la partie A. Ensuite PWMA = Vcc 5V, AIN1 = 1INa, AIN2 = 1INb, STBY = 1Diag/EN. VM = 12V, A01 et A02 = moteur., GND = GND.
    N'utilisez pas les pins pour la partie B.

    Godbutcher

    18 avr. 2017 à 23:07

    ok super ;) merci beaucoup.
    si j"ai bien compris je dois utiliser les pins PWMA, AIN2, AIN1, STBY et GND d'un coté et les pins VM, GND, A01 et A02 de l'autre.
    Question surement bête mais a quoi sert le pin VCC présent sur le driver??
    merci pour ton aide

    bagou91

    19 avr. 2017 à 08:41

    Oui. J'avais oublié : Vcc = 5V

    Philibert31

    21 avr. 2017 à 13:00

    Merci pour ce superbe tuto.
    J'ai une question sur la surveillance de la batterie. J'ai vu que tu surveilles le niveau de ta batterie et que tu utilises les pin A6 et A7. Quel est ton montage, stp ? Merci par avance.

    bagou91

    21 avr. 2017 à 15:01

    Bonjour,
    Depuis la publication du tuto, j'ai mis à jour, et finalement je n'utilise plus cette surveillance de la batterie.
    Mais si tu souhaites le faire, il faut utiliser le principe du pont diviseur de tension pour mesurer la tension entre les 2 résistances mise en série et qui permettra d'en déduire la tension de la batterie.
    On ne peut pas mesurer directement la batterie, car l'arduino ne supporte que jusqu'à 5V max sur ces entrées.
    doc ici: https://fr.wikipedia.org/wiki/Diviseur_de_tension
    Si U=12V, R1=2,2kohm, R2=1kohm, alors U2=3.75V maximum.
    Quand la batterie se décharge, sa tension baisse et donc U2 baisse également.
    Dans la fonction loop() du sketch, tu peux ajouter:
    //calcul de la tension U2 (0 à 5Vmax) sur la pin A6, puis re-mapper pour connaitre la tension de la batterie (3.2 correspond à (R1+R2)/R2 ).
    float Ubatterie = (analogRead(A6) * 5 / 1023) * 3.2;
    if ( Ubatterie

    bagou91

    21 avr. 2017 à 15:02

    Dans la fonction loop() du sketch, tu peux ajouter:
    //calcul de la tension U2 (0 à 5Vmax) sur la pin A6, puis re-mapper pour connaitre la tension de la batterie (3.2 correspond à (R1+R2)/R2 ).
    float Ubatterie = (analogRead(A6) * 5 / 1023) * 3.2;
    if ( Ubatterie

    bagou91

    21 avr. 2017 à 15:11

    commentaire tronqué à chaque fois au même endroit :(
    voici mon explication entière: https://1fichier.com/?03nbtnht3y


    Champion

    Gagnant du Concours Concours DIY Arduino


    Incontournable

    + de 5 000 vues pour poulailler porte automatique



    Gotronic

    Voir l'espace DIY gotronic


    S'inscrire:


    • Vues: 8045
    • J'aime: 37