Aller au contenu

Filament ABS

pit34

Boutons HAUT/BAS pour contrôler LCD sous Marlin 1.1.8

Messages recommandés

Bonjour,

Sous Marlin 1.1.8, j'essaie de remplacer l'encodeur incrémental qui sert à contrôler les afficheur LCD par 2 boutons haut et bas.
J'ai déjà ajouté un écran oled 128x64 en I2C.

Je sais qu'un encodeur ne coûte pas grand chose mais je préfère essayer d'ajouter les boutons, pour améliorer mes connaissances en C++ et sur Marlin.

J'utilise une carte Arduino Mega pour simuler la carte MKS Base 1.0 de ma Discoeasy200.
Je me suis inspiré des contrôleurs  "TinyBoy2 128x64 OLED / Encoder Panel" et "RIGIDBOT_PANEL" pour commencer. Voila ce que j'ai fais :

  • Création d'un fichier pins_3_buttons_controller.h:
    Ce fichier est inspiré du fichier pin_RIGIDBOARD.h qui utilise des touches directionnelles. Il contiens les lignes de code ci-dessous, servant à définir les boutons UP, DWN et EN_C, et pour  supprimer les entrées EN1 et EN2 de l'encodeur:
  •     #if ENABLED(OLED_PANEL_3_BUTTONS)
          // Direction buttons
          #define BTN_UP    37
          #define BTN_DWN    35
          // 'R' button
          #undef BTN_ENC
          #define BTN_ENC    31
          // Disable encoder
          #undef BTN_EN1
          #define BTN_EN1    -1
          #undef BTN_EN2
          #define BTN_EN2    -1
        #endif
  •  Ajout des lignes suivantes au fichier Configuration.h, vers la ligne 1607, pour activer le contrôleur créé : 
  •     //
        // I2C 128x64 OLED / 3 Buttons Panel
        //
        #define OLED_PANEL_3_BUTTONS
  •  Ajout des lignes suivantes dans le fichier Conditionals_LCD.h, proche de la ligne 97, pour activer U8GLIB_SSD1306 et l'ULTIPANEL, comme c'est le cas pour le "TinyBoy2 128x64 OLED / Encoder Panel":
  •           #elif ENABLED(OLED_PANEL_3_BUTTONS)
                #define U8GLIB_SSD1306
                #define ULTIPANEL
  • Ajout des lignes suivantes dans le fichier pin.h, proche de la ligne 255, pour inclure mon fichier pins_3_buttons_controller.h:
  •     #if ENABLED(OLED_PANEL_3_BUTTONS)
          #include "pins_3_buttons_controller.h"   // Panel 3 buttons
  •       

Côté hardware, l'entrée des 3 boutons est flottante, et reliée à la masse lors de l'appui sur le bouton. Comme pour l'utilisation du clic encodeur EN_C déjà existant.
Le bouton EN_C fonctionne, mais pas les boutons UP et DWN.

J'ai essayé de changer le type d'entrée des boutons de "SET_INPUT" à "SET_INPUT_PULLUP" pour UP et DWN dans le fichier ultradlcd.cpp, aux lignes 4497 et 4500, mais ça ne fonctionne pas non plus.

Est-ce que vous pourriez m'indiquer à quel niveau je fais erreur et m'expliquer pourquoi ? C'est la même implémentation que pour les touches directionnelles du RIGIDBOT_PANEL dans le fichier pin_RIGIDBOARD.h, mais ça ne marche pas. Pourtant ce panel n'a pas d'encodeur.

Et comme question plus générale, j'aimerai savoir pourquoi la quasi-totalité des contrôleurs LCD utilisent un encodeur incrémental au lieu de boutons ? Quel est l'avantage d'utiliser ce codeur ?

 

Merci à vous et bonne journée.
 

Modifié (le) par pit34
Correction ortographe

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 4 heures, pit34 a dit :

j'aimerai savoir pourquoi la quasi-totalité des contrôleurs LCD utilisent un encodeur incrémental au lieu de boutons ?

à mon avis il doit être moins onéreux de mettre un encodeur rotatif que des boutons... 

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 1 minute, pascal_lb a dit :

à mon avis il doit être moins onéreux de mettre un encodeur rotatif que des boutons... 

C'est sûr mais parmi tous les contrôleurs qui existent, ceux avec boutons sont vraiment rares. Je me demande donc si au delà du prix il n'y a pas une raison pratique..

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut,

 

Il ne faut pas oublier que l'écran LCD (et son bouton rotatif) permet de régler des valeurs avec un écart proche de la centaine de "pas".

 

Tu t'imagine appuyer 80 fois sur un bouton pour atteindre la valeur souhaitée ?

 

:)

Partager ce message


Lien à poster
Partager sur d’autres sites

salut

ou sinon il faut inclure une option appuie long pour faire monter le chiffre de 10 en 10 ou de 100 a 100 

un peu comme sur les minuteries afin d'évite d'appuyé 80 fois sur le bouton 

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • Sur cette page :   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×