Tirage au sort sur 25 ou 30 led Possible?

hu attends, si ça mélange que quand tu appuies, alors c'est que ton bouton est raccordé au 5V et non à la masse. c'est pour ça que mes exemples ne fonctionnent pas !

dans le code que je t'ai donné inverse à chaque fois LOW avec HIGH et inversement, et ça va fonctionner comme prévu

Oups j'ai oublié de dire que j'avais bien inversé le HIGH et LOW dans la version simplifiée.

  while(digitalRead(10) == HIGH)//si bouton activé on rentre dans la boucle
    { delay(10); }//on ne ne fait rien, on attend

Encore merci.

ha donc quand c'est inversé ça ne fonctionne pas comme prévu, donc ton bouton est bien cablé entre pin et gnd

...

donc les premiers exemples auraient du fonctionner comme prévu ! il y a un truc qui m'échappe...

J'avais essayé d'inverser LOW et HIGH et j'avais même tenté avec un INPUT et résitance pullup / pulldown : Pas de changement.

Maintenant, ça fonctionne. C'est le principal !

J'ai tout percé, fixé, soudé...
30 leds c'est beau !

Je branche et ... rien ne va :o
Je teste chaque sortie de l'arduino : parfait
Je teste chaque borne de la matrice de led et catastrophe ! Mon alim indique 5v et 1A !!! En effet, les led RGB déraillent complètement en tête-bêche, j'ai des retours de courant sur les autre leds.
J'alimente 2 bornes en + et - , une led s'allume parfaitement et 8 autres s'allument aussi mais faiblement !

Bref, j'arrache et je remplacerai par de la led basique verte et orange.

En achevant le code, je remarque qu'à l'allumage, un nombre aléatoire est déjà choisi. Ne serait-il pas possible de déplacer la commande "bouton" AVANT le random ?

EDIT : ça marche !

void setup() {
  // put your setup code here, to run once:
const byte pinsLeds[] = {2, 3, 4, 5, 6, 7};
Serial.begin(9600);
  pinMode(10,INPUT_PULLUP); // pour l'interrupteur
  
}

void loop(){
 delay(40); // juste assez de temps pour que l'allumage soit visible
  int etat = digitalRead(10); // a sera HIGH ou LOW selon bouton
      while(digitalRead(10) == HIGH)//si bouton activé on mélange
    { delay(10); }//on ne ne fait rien, on attends
    pinMode(2, INPUT);
    digitalWrite(2, LOW);
    pinMode(3, INPUT);
    digitalWrite(3, LOW);
    pinMode(4, INPUT);
    digitalWrite(4, LOW);
    pinMode(5, INPUT);
    digitalWrite(5, LOW);
    pinMode(6, INPUT);
    digitalWrite(6, LOW);
    pinMode(7, INPUT);
    digitalWrite(7, LOW);  
     


    



;int nbAlea;
  randomSeed(analogRead(0));
  nbAlea=random(1, 31); 
  Serial.println(nbAlea);
  
 if (nbAlea == 1)  //  adressages led au pif 
{
  pinMode(2, OUTPUT);
  digitalWrite(2, HIGH);
  pinMode(3, OUTPUT);
  digitalWrite(3, LOW);
  }
if (nbAlea == 2)
{
  pinMode(2, OUTPUT);
  digitalWrite(2, HIGH);
  pinMode(4, OUTPUT);
  digitalWrite(4, LOW);
  }
if (nbAlea == 3)
{
  pinMode(2, OUTPUT);
  digitalWrite(2, HIGH);
  pinMode(5, OUTPUT);
  digitalWrite(5, LOW);
  }
if (nbAlea == 4)
{
  pinMode(2, OUTPUT);
  digitalWrite(2, HIGH);
  pinMode(6, OUTPUT);
  digitalWrite(6, LOW);
  }
 if (nbAlea == 5)
{
  pinMode(2, OUTPUT);
  digitalWrite(2, HIGH);
  pinMode(7, OUTPUT);
  digitalWrite(7, LOW);
  }
 if (nbAlea == 6)
{
  pinMode(3, OUTPUT);
  digitalWrite(3, HIGH);
  pinMode(2, OUTPUT);
  digitalWrite(2, LOW);
  }
 if (nbAlea == 7)
{
  pinMode(3, OUTPUT);
  digitalWrite(3, HIGH);
  pinMode(4, OUTPUT);
  digitalWrite(4, LOW);
  }
 if (nbAlea == 8)
{
  pinMode(3, OUTPUT);
  digitalWrite(3, HIGH);
  pinMode(5, OUTPUT);
  digitalWrite(5, LOW);
  }
 if (nbAlea == 9)
{
  pinMode(3, OUTPUT);
  digitalWrite(3, HIGH);
  pinMode(6, OUTPUT);
  digitalWrite(6, LOW);
  }
 if (nbAlea == 10)
{
  pinMode(3, OUTPUT);
  digitalWrite(3, HIGH);
  pinMode(7, OUTPUT);
  digitalWrite(7, LOW);
  }
 if (nbAlea == 11)
{
  pinMode(4, OUTPUT);
  digitalWrite(4, HIGH);
  pinMode(2, OUTPUT);
  digitalWrite(2, LOW);
  }
 if (nbAlea == 12)
{
  pinMode(4, OUTPUT);
  digitalWrite(4, HIGH);
  pinMode(3, OUTPUT);
  digitalWrite(3, LOW);
  }

  if (nbAlea == 13)
{
  pinMode(4, OUTPUT);
  digitalWrite(4, HIGH);
  pinMode(5, OUTPUT);
  digitalWrite(5, LOW);
  }
  if (nbAlea == 14)
{
  pinMode(4, OUTPUT);
  digitalWrite(4, HIGH);
  pinMode(6, OUTPUT);
  digitalWrite(6, LOW);
  }
  if (nbAlea == 15)
{
  pinMode(4, OUTPUT);
  digitalWrite(4, HIGH);
  pinMode(7, OUTPUT);
  digitalWrite(7, LOW);
  }
  if (nbAlea == 16)
{
  pinMode(5, OUTPUT);
  digitalWrite(5, HIGH);
  pinMode(2, OUTPUT);
  digitalWrite(2, LOW);
  }
  if (nbAlea == 17)
{
  pinMode(5, OUTPUT);
  digitalWrite(5, HIGH);
  pinMode(3, OUTPUT);
  digitalWrite(3, LOW);
  }
  if (nbAlea == 18)
{
  pinMode(5, OUTPUT);
  digitalWrite(5, HIGH);
  pinMode(4, OUTPUT);
  digitalWrite(4, LOW);
  }
  if (nbAlea == 19)
{
  pinMode(5, OUTPUT);
  digitalWrite(5, HIGH);
  pinMode(6, OUTPUT);
  digitalWrite(6, LOW);
  }
  if (nbAlea == 20)
{
  pinMode(5, OUTPUT);
  digitalWrite(5, HIGH);
  pinMode(7, OUTPUT);
  digitalWrite(7, LOW);
  }
  if (nbAlea == 21)
{
  pinMode(6, OUTPUT);
  digitalWrite(6, HIGH);
  pinMode(2, OUTPUT);
  digitalWrite(2, LOW);
  }
   if (nbAlea == 22)
{
  pinMode(6, OUTPUT);
  digitalWrite(6, HIGH);
  pinMode(3, OUTPUT);
  digitalWrite(3, LOW);
  }
   if (nbAlea == 23)
{
  pinMode(6, OUTPUT);
  digitalWrite(6, HIGH);
  pinMode(4, OUTPUT);
  digitalWrite(4, LOW);
  }
   if (nbAlea == 24)
{
  pinMode(6, OUTPUT);
  digitalWrite(6, HIGH);
  pinMode(5, OUTPUT);
  digitalWrite(5, LOW);
  }
   if (nbAlea == 25)
{
  pinMode(6, OUTPUT);
  digitalWrite(6, HIGH);
  pinMode(7, OUTPUT);
  digitalWrite(7, LOW);
  }
   if (nbAlea == 26)
{
  pinMode(7, OUTPUT);
  digitalWrite(7, HIGH);
  pinMode(2, OUTPUT);
  digitalWrite(2, LOW);
  }
    if (nbAlea == 27)
{
  pinMode(7, OUTPUT);
  digitalWrite(7, HIGH);
  pinMode(3, OUTPUT);
  digitalWrite(3, LOW);
  }
     if (nbAlea == 28)
{
  pinMode(7, OUTPUT);
  digitalWrite(7, HIGH);
  pinMode(4, OUTPUT);
  digitalWrite(4, LOW);
  }
     if (nbAlea == 29)
{
  pinMode(7, OUTPUT);
  digitalWrite(7, HIGH);
  pinMode(5, OUTPUT);
  digitalWrite(5, LOW);
  }
     if (nbAlea == 30)
{
  pinMode(7, OUTPUT);
  digitalWrite(7, HIGH);
  pinMode(6, OUTPUT);
  digitalWrite(6, LOW);
  }}

Prochaine étape j'ajoute un buzzer quand le bouton est appuyé...

Leeleen:
En effet, les led RGB déraillent complètement en tête-bêche, j'ai des retours de courant sur les autre leds. ..

Comment on peut mettre des leds RGB tête bêche? Ce n'est pas possible il y a une anode ou cathode commune.

Les LED sont simplement conçues avec un petit circuit changeant leur couleur

Heu..., je n'avais pas vu que tu parlais de leds clignotantes.

Je pense que mon arduino "bas de gamme" est vraiment limité.
J'ai tenté le buzzer, un petit bruit de fond se fait entendre.
Même en LOW, les sorties ont une tension parasite.
Heureusement, il m'a pas couté cher...

pour les leds la solution et simple, il faut rajouter une diode (par exemple 1n4004) en série avec chaque led. Là ça ne fonctionne pas car avec le circuit interne de changement de couleur, elle ne se comporte pas comme une diode et laisser passer un courant inverse important. en rajoutannt une vraie diode on restaure la fonction et ça va fonctionner.

pour le buzzer, quel est ton branchement ? et ton code ? que l'arduino soit chinois ou pas, il y a le même microcontroleur dessus, donc les mêmes performances, à priori

Pour les LED, en orange/vert c'est joli aussi ! ;D

Pour le buzzer, il fonctionnait lors de l'appui. Câblé en pin12 et masse.
Selon le vendeur c'est un actif. Bizarre avec 3 pin... En alimentant les 2 pin "externes" en 5v, ça buzz.

pinMode(12, OUTPUT) ;
digitalWrite(12, LOW) ;

et dans la commande WHILE je modifiais en

{
digitalWrite(12, HIGH) ;
delay(10) ;
digitalWrite(12, LOW) ;
}

C'était nickel quand j'appuyais. Mais même au premier lancement, alors que la sortie est LOW, j'ai un bruit parasite sur la borne.

J'ai loupé un truc?
EDIT je viens de voir que pour ce grésillement la commande TONE NOTONE résout le problème
(...)

met ton code complet.

si ça grésille je pense que c'est que l'activation de ta broche 12 est dans une boucle où elle est activée puis désactivée très rapidement, et ça fait ce grésillement. il faudrait la laisser à LOW sans changement d'état pour ne pas avoir de bruit

Je laisse tomber le buzzer, pas le temps.
J'installe le panneau dans ma classe demain :grin: