pit34 Posté(e) Février 23, 2018 Partager Posté(e) Février 23, 2018 (modifié) 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) Février 23, 2018 par pit34 Correction ortographe Lien vers le commentaire Partager sur d’autres sites More sharing options...
pascal_lb Posté(e) Février 23, 2018 Partager Posté(e) Février 23, 2018 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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
pit34 Posté(e) Février 23, 2018 Auteur Partager Posté(e) Février 23, 2018 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.. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yo' Posté(e) Février 23, 2018 Partager Posté(e) Février 23, 2018 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 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
pit34 Posté(e) Février 23, 2018 Auteur Partager Posté(e) Février 23, 2018 Effectivement, c'est une bonne raison pour utiliser quasi-systématiquement un encodeur rotatif Lien vers le commentaire Partager sur d’autres sites More sharing options...
vri8 Posté(e) Février 24, 2018 Partager Posté(e) Février 24, 2018 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant