problème avec bouton poussoir

Bonjour ,

j'ai deux bouton un pour sélectionner un menu et l'autre pour descendre la sélection

le problème c'est que je suis obligé de rester appuyer sur bouton pour que l'autre fonctionne

les bouton sont souder sur une plaque avec une résistance a chaque bouton , le gnd et le plus de chaque bouton sont relier ensemble puis le tous a la carte arduino

Le tout à la carte arduino ? Comment as tu branché tes boutons? As tu mis un fil vers une pin pour détecter un appui ?

Tu ne donnes pas assez d'infos, montre également ton code

Chaque bouton a sont propre pin pin || - + Les - sont relier ensemble et les plus ensemble , j'ai mis une résistance à chaque moins

Rien compris

Si tu n'es pas plus clair sur le cablage, personne ne pourra t'aider.

Une photo du montage peut être?

ne seraient pas montés en série les BP ? :)

Bonsoir, un schéma vaut mieux que deux tu l'auras. Vieille adage. Pas besoin d'un logiciel de schéma, fait le sur papier et crayon puis tu le scan et au moins on vas comprendre.

voici le shema

Il me semble que ça devrait fonctionner si le montage est comme le schéma...

C'est quoi ton code?

On est passé de 2 à 4 boutons?

voici le shema

C'est pas un schéma, c'est une représentation graphique qui ne correspond pas a ta première question. Exemple: j'ai un four a pain mais je sais pas faire la pâte,voici une photo du sac de farine.

que ceux soit avec 2,3,4,ou 5 bouton le problème reste le même j'ai mis une représentation graphique pour que ceux soit plus clair a comprendre chimere322->pour info je suis boulanger est avec n'importe quel photo de sac de farine je peux te dire comment faire de la pâte.

merci au personne qui essaye de m'aider voici le code

#include "U8glib.h"
#include "M2tk.h"
#include "utility/m2ghu8g.h"

//U8g setup
U8GLIB_ST7920_128X64 u8g(12, 11, 10, U8G_PIN_NONE); // Câblage SPI

// DOGM132, DOGM128 and DOGXL160 shield
uint8_t uiKeyUpPin = 7;         
uint8_t uiKeyDownPin = 3;
uint8_t uiKeySelectPin = 2;

// Edit the following long int number
uint32_t number = 1234;

// Definition of the m2tklib menu
void fn_ok(m2_el_fnarg_p fnarg) {
  /* do something with the number */
}



M2_LABEL(el_label, NULL, "num: ");
M2_U32NUM(el_num, "a1c4", &number);
M2_BUTTON(el_ok, "", " ok ", fn_ok);
M2_LIST(list) = { &el_label, &el_num, &el_ok };
M2_HLIST(top_el_hlist, NULL, list);

M2tk m2(&top_el_hlist, m2_es_arduino, m2_eh_2bs, m2_gh_u8g_bfs);

// M2tk init
//M2tk m2(&el_num, m2_es_arduino, m2_eh_2bs, m2_gh_u8g_bfs);

// U8glib draw procedure: Just call the M2tklib draw procedure
void draw(void) {
    m2.draw();
}

// Arduino setup procedure (called only once)
void setup() {
  // Connect u8glib with m2tklib
  m2_SetU8g(u8g.getU8g(), m2_u8g_box_icon);

  // Assign u8g font to index 0
  m2.setFont(0, u8g_font_7x13);

  // Setup keys
  m2.setPin(M2_KEY_SELECT, uiKeySelectPin);
  m2.setPin(M2_KEY_NEXT, uiKeyDownPin);
}

// Arduino loop procedure
void loop() {
  m2.checkKey();
  if ( m2.handleKey() ) {
    u8g.firstPage();  
    do {
      draw();
    } while( u8g.nextPage() );
  }
}

ça ne me dit toujours pas la formule pour faire la pâte à pain.

Ici c'est le même problème, tu parle de menu et de sélection, donne le vrai schéma avec l'afficheur qui vas bien. Prend le sur un autre ton ou alors vas sur le site de voyance. Ceci est un forum d'entraide mais il n'y a pas de boule de cristal. Donne ton cahier des charges et ensuite ont aide.;

Ton schéma n'a rien à voir avec le code ?

Effectivement j’ai juste mis le schéma de "la représentation graphique " des boutons .
Je n’est pas de problème avec l’afficheur qui est le 12863 b v.2.0
. Pour être un peux plus claire c’est comme une télécommande d’arcade , des bouton pour monter et descendre , et bouton pour sélectionner .

Si vous voulez le schéma complet du montage pas de problème .
Merci encore de votre aide

bonjour, si tu mettais TON VRAI cablage et le code complet que TU UTILISE.

si tu ne donne pas ce que toi tu fais, personne ne pourra répondre.

desolé je mettais tromper de code

voici le bon code

#include <stdlib.h> 
#include "U8glib.h"
#include "M2tk.h"
#include "utility/m2ghu8g.h"
//U8g setup
U8GLIB_ST7920_128X64 u8g(12, 11, 10, U8G_PIN_NONE); // Câblage SPI

uint8_t uiKeyUpPin = 7;         
uint8_t uiKeyDownPin = 3;
uint8_t uiKeySelectPin = 2;
uint8_t uiKeyExitPin = 0;


//=================================================
// Forward declaration of the toplevel element
M2_EXTERN_ALIGN(top_el_x2l_menu);


//=================================================
// Define three user menus, just for demonstration. 

M2_ROOT(el_mnu1_sel, "t1", "Menu 1 selected", &top_el_x2l_menu);
M2_ALIGN(top_el_mnu1_sel, "-1|1W64H64", &el_mnu1_sel);

M2_ROOT(el_mnu2_sel, "t1", "Menu 2 selected", &top_el_x2l_menu);
M2_ALIGN(top_el_mnu2_sel, "-1|1W64H64", &el_mnu2_sel);

M2_ROOT(el_mnu3_sel, "t1", "Menu 3 selected", &top_el_x2l_menu);
M2_ALIGN(top_el_mnu3_sel, "-1|1W64H64", &el_mnu3_sel);


//=================================================
uint8_t value = 0;
char buf[20];

// define callback procedure, which returns a menu entry with a value
const char *xmenu_value(uint8_t idx, uint8_t msg)
{  
  if ( msg == M2_STRLIST_MSG_GET_STR ) {
    strcpy(buf, " Value: ");
    itoa((int)value, buf+strlen(buf), 10);
    return buf;
  }
  return "";
}

// define callback procedures which increment and decrement a value
const char *xmenu_inc(uint8_t idx, uint8_t msg) {
  if ( msg == M2_STRLIST_MSG_SELECT  ) {
      value++;
  }
  return "";
}

const char *xmenu_dec(uint8_t idx, uint8_t msg) {
  if ( msg == M2_STRLIST_MSG_SELECT  ) {
      value--;
  }
  return "";
}

//=================================================
// this is the overall menu structure for the X2L Menu

m2_xmenu_entry xmenu_data[] = 
{
  { "Menu 1", NULL, NULL }, /* expandable main menu entry */
  { ".", NULL, xmenu_value }, /* The label of this menu line is returned by the callback procedure */
  { ". Inc", NULL, xmenu_inc }, /* This callback increments the value */
  { ". Dec", NULL, xmenu_dec }, /* This callback decrements the value */
  { "Menu 2", NULL, NULL },
  { ". Sub 2-1", &top_el_mnu1_sel, NULL },
  { ". Sub 2-2", &top_el_mnu2_sel, NULL},
  { ". Sub 2-3", &top_el_mnu3_sel, NULL },
  { NULL, NULL, NULL },
};

//=================================================
// This is the main menu dialog box

// The first visible line and the total number of visible lines.
// Both values are written by M2_X2LMENU and read by M2_VSB
uint8_t el_x2l_first = 0;
uint8_t el_x2l_cnt = 3;

// M2_X2LMENU definition
// Option l4 = four visible lines
// Option e15 = first column has a width of 15 pixel
// Option W43 = second column has a width of 43/64 of the display width
// Option F3 = select font 3 for the extra column (icons)

M2_X2LMENU(el_x2l_strlist, "l4e15W43F3", &el_x2l_first, &el_x2l_cnt, xmenu_data, 65,102,'\0');
M2_SPACE(el_x2l_space, "W1h1");
M2_VSB(el_x2l_vsb, "l4W2r1", &el_x2l_first, &el_x2l_cnt);
M2_LIST(list_x2l) = { &el_x2l_strlist, &el_x2l_space, &el_x2l_vsb };
M2_HLIST(el_x2l_hlist, NULL, list_x2l);
M2_ALIGN(top_el_x2l_menu, "-1|1W64H64", &el_x2l_hlist);


//=================================================
// m2 object and constructor
M2tk m2(&top_el_x2l_menu, m2_es_arduino, m2_eh_4bs, m2_gh_u8g_ffs);

//=================================================
// Draw procedure, Arduino Setup & Loop


void draw(void) {
  m2.draw();
}

void setup(void) {
  // Connect u8glib with m2tklib
  m2_SetU8g(u8g.getU8g(), m2_u8g_box_icon);

  // Assign u8g font to index 0
  m2.setFont(0, u8g_font_6x13r);

  // Assign icon font to index 3
  m2.setFont(3, u8g_font_m2icon_7);

  // Setup keys
  m2.setPin(M2_KEY_SELECT, uiKeySelectPin);
  m2.setPin(M2_KEY_PREV, uiKeyUpPin);
  m2.setPin(M2_KEY_NEXT, uiKeyDownPin);
  m2.setPin(M2_KEY_EXIT, uiKeyExitPin);    
  
  /*
  m2.setPin(M2_KEY_SELECT, 7);
  m2.setPin(M2_KEY_ROT_ENC_A, 3);
  m2.setPin(M2_KEY_ROT_ENC_B, 4);
  */
  
}

void loop() {
  // menu management
  m2.checkKey();
  if ( m2.handleKey() != 0 ) {
    u8g.firstPage();  
    do {
      m2.checkKey();
      draw();
    } while( u8g.nextPage() );
  }
}

pour le câblage des bouton c’est bien la photo que j’ai mis juste que je fais corresponde les câble au pin correspondant au code . es-que le câblage de l’afficheur sera vraiment utile a la résolution de ceux problème?.

je pensais testé la plaque de bouton sur programme à part , a votre avis ?

le test est concluant aucun problème au niveau des bouton

Problème résolue :) :) :) :) :) :)

D'où venait le problème alors?

Si ça se trouve tu as juste monté un des bouton dans le mauvais sens, il faut que tu controle avec un multimètre les bornes de ton bouton pour voir si tu as mis la résistance au bon endroit. Je me suis fait avoir et le problème ressemble pas mal. Je peux me tromper mais ça vaux le coup de jeter un oeil.