Probleme utilisation bouton arcade avec arduino

Bonjour à toutes et à tous.
J'aimerai utiliser un bouton d'arcade que j'ai en stock chez avec mon arduino.
Mon bouton d'arcade possède 3 pins que j'ai compris comme cela :slight_smile:

  • pin1 : led du bouton
  • pin 2 : pin "appui sur bouton"
  • pin 3 : GND

Je veux pouvoir programmer l'allumage et l'extinction de la led du bouton et récupérer le signal de "l'appui bouton"

J'ai donc effectué les branchements suivant :

  • pin 1 du bouton vers pin 4 de l'arduino
  • pin 2 du bouton vers pin 2 de l'arduino
  • pin 3 du bouton vers pin GND de l'arduino

et pour testé j'ai écrit un programme très simple qui consiste à inverser l'état de la LED_BULTIN lors de l'appui sur le bouton. Le voici :

#define Bouton 2
#define LedBouton 4

void setup()
{
  pinMode(Bouton, INPUT_PULLUP);
  //pinMode(LedBouton,OUTPUT);
  //digitalWrite(LedBouton,HIGH);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN,LOW);
  
}

void loop()
{
  if(digitalRead(Bouton)==LOW)
  {
    digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN));
  }
}

Tout marche bien tant que je ne décommente pas les deux lignes concernant la led du bouton.
Si j'allume la led du bouton plus rien ne fonctionne.

Quelqu'un pourrait-il m'expliquer pourquoi ?
Merci d'avance pour vos réponses

:warning:
il faut sans doute une résistance de limitation de courant pour la LED (parfois ce sont aussi des LEDs 12V pour ce genre de boutons, pas sûr que les 5V de l'arduino soient suffisants)

pour le code

const byte pinBouton = 2;
const byte pinLed = 4;

void setup() {
  pinMode(pinBouton, INPUT_PULLUP);
  pinMode(pinLed, OUTPUT);
}

void loop() {
  digitalWrite(pinLed, digitalRead(pinBouton) == LOW ? HIGH : LOW);
}

Bonjour et merci pour ta réponse...
Je me suis sans doute mal exprimé.. La led du bouton s'allume bien mais dans ce cas plus rien ne se passe quand j'appuie sur le bouton.
Merci
jeff

avez vous une résistance ?

si vous n'en avez pas vous risquez de griller votre pin ou votre arduino et l'appui peut le faire planter à cause de la demande de courant trop importante

Je n'ai effectivement pas mis de resistance.
Je vais tester ce soir en rentrant du travail.
Quelle valeur de résistance mettriez vous ?
Cordialement

faut espérer que l'arduino n'est pas mort :wink:

en fait il faudrait connaître le type de LED pour répondre correctement

essayez avec 220Ω ou 330Ω par exemple.

l'autre option ne nécessite pas d'Arduino (mais quand même la résistance) c'est de relier le bouton et la LED. dans ce cas votre Arduino n'a pas à gérer l'allumage. l'arduino peut lire l'état du bouton cependant si vous voulez

Ce serait du coup plus simple de tout releier a l'arduino directement non?
Pour le bouton,une resistance de 100Ω devrait aller.Pour la LED,220Ω est bien car cela limite le courant sans non plus trop atténuer la LED.330Ω Me semble beaucoup quand meme...
Cordialement
flix09 :space_invader:

@flix09

Pourquoi ?

J'achète votre bluff et votre avis à l'emporte pièce.

Merci de documenter précisément les réponses aux questions suivantes :

  • pourquoi une résistance sur le bouton ?
  • et vous la connectez où .
  • Pourquoi ne pas utiliser le pullup interne de l'arduino ?
  • pourquoi 100Ω ?

Pour la LED

  • Pourquoi 220Ω plutôt que 330Ω et pas 100Ω ?
  • Quelle sera la tension aux bornes de la diode dans les deux cas ?
  • Quel sera le courant tiré sur la pin et passant dans la LED dans les deux cas ?

Pour pas qu'il ne tire trop de courant

Devant le 5v du bouton(ou plus)

On peut mais une resistance,ça reste plus simple :wink:

Il me semble que c'est une bonne valeur,que l'on pourrat ensuite adaptée au cas ou...

220ΩCar pareil,c'est une valeur assez haute,mais qui laissera quand meme assez de courant a la LED pour bien briller,100Ω me semble un peu juste,330Ω un peu trop.

Ça,je ne sais pas,j'avoue :sweat_smile:

Donc pris en flagrant délit d'affirmations gratuites...

Non, dans l'absolu pour éviter un court circuit et une pin qui flotte

Non.. relisez des docs sur le pullup ou pulldown

ben non.. rien à câbler ni à acheter. la résistance s'active par une ligne de code... Parfois il en faut, mais il faut comprendre quand c'est nécessaire, par exemple le pullup interne n'est pas assez fort.

c'est limpide et scientifiquement imparable :)

vous n'en savez rien puisque l'on n'a pas les caractéristiques de la LED....

ah enfin un peu d'honnêteté quand il s'agit de faire des calculs et d'appliquer des connaissances il n'y a plus personne...

Bref, vu que vous ne vous impliquez pas dans le développement de vos connaissances, à défaut d'une carrière d'ingénieur ou scientifique, vous devriez faire de la politique ou commercial - ils affirment souvent des choses de manière très sûrs d'eux, même quand ils n'en savent rien ou que c'est une bêtise... (mais faudra quand même bosser l'orthographe).

l'Arduino ne prélève qu'un petit courant, pour simplifier, c'est comme l'air : la résistance est trop grande pour laisser passer un courant très important, cependant, la tension peut être mesurée.

C'est comme un multimètre : il ne doit pas modifier le circuit, juste lire des valeurs.

Dans des soucis de compatibilité, c'est utile. Dans ce cas, c'est inutile car l'Arduino est en est sûrement équipée...
Mais on ne connait pas son nom.

Quel est l'Arduino s'il vous plaît @jeff22150 ?

Moui ? Je suis là !

Le résisteur, dans son terme exact, va encaisser 5 volts.
Et un rapide calcul grâce à la loi d'Ohm nous apprends que :

intensité = tension / résistance
(Intensité en ampères
Tension en volts
Résistance en Ohm)

Soit intensité = 5 / 100 = 0,05

Donc l'intensité de ce circuit en occurence consomme 50mAh environ, car d'autres facteurs influences les valeurs réelles (résistance du conducteur, taux de précision du résisteur, précision de la source d'alimentation, etc.).

En effet, sur une LED "classique" 220 Ohm peuvent suffire. Mais je ne vois pas réellement l'importance actuelle de distinguer 220 Ohm de 330 Ohm. On pourra en reparler plus tard, surtout qu'on ne connait pas les caractéristiques de la LED.

Trois cas.
220, 330 et 100 Ohm.
On ne connait pas les caractéristiques de la LED. Je ne peux donc rien affirmer.

Pareil que la réponse précédente. On pourrait aussi faire des mesures pour s'aider.

Il y a deux possibilités de circuit : soit

Soit


Comme @J-M-L l'a montré.

En rajoutant un peu de code, évidemment.

c'était un quizz pour @flix09

Pour la 250 000e fois voici comment on calcule la résistance à mettre en série avec une DEL (led pour ceux qui ne connaissent pas le français).

  1. Préalable : Courbe tension courant d'une diode :
    Electronique de puissance : la diode

Cette courbe montre que, passé la tension de seuil, la tension reste quasiment constante, quelle que soit la valeur du courant.

  1. Tension de seuil de conduction suivant les diodes :
    Elle dépend des diodes.
    diode de signal Vs ~= 0,7 V
    Del Rouge Vs ~= 1,6 V
    Del Jaune/Orange Vs ~= 1,8 V / 2 V
    Del Verte Vs ~= 2,2 V / 2,4 V
    Del Bleue ou blanche Vs ~= 3 V / 3,5V

  2. Rôle de la résistance :
    Puisque Vdel est une quasi constante qui ne dépend que de la del, il faut que la résistance apporte le complément de tension pour que l'on ait Vcc = Vr + Vdel.
    Si on ne met pas de résistance le courant devient théoriquement infini, en pratique quelque chose crame dans le circuit.
    R = (Vcc - Vdel) / I

4/ Choix de la valeur du Courant dans une del.
Depuis 50 ans les dels ont fait des progrès, mais la littérature est bloquée sur 20 mA.
Depuis on fait des dels qui s'éclairent parfaitement avec 5 mA.

Tout va dépendre des conditions de lumière ambiante. Le courant sera différent si la del est placée en intérieur ou en plein soleil.

Résumé :
Il n'y a pas de valeur que l'on puisse conseiller.
Tout dépend de :

  • la valeur de Vcc
  • la couleur de la del
  • le courant que l'on choisi de faire passer dans la del

Et pour finir c'est le genre de calcul où l'on est pas à 50 ohms prés.
Mais pour pouvoir faire des approximations en toute sécurité, il faut comprendre le mécanisme de calcul et pas se contenter de recettes de cuisine. Surtout quand ce mécanisme est très simple.

Si vous avez la curiosité de regarder les schémas électriques des cartes microcontrôleur que vous achetez, les résistances en série avec les dels sont très souvent égales à 1000 ohms.

Del = diode électro luminescente
Led = light emitting diode