Go Down

Topic: Génération aléatoire de boutons (Read 2567 times) previous topic - next topic

manghao

Salut, voilà j'ai quatres boutons et j'aimerai leurs attribuer un nombre compris entre 0 et 4.
C'est  qutres boutons ne doivent pas avoir le même numéro.

J'ai tenté plusieurs choses sans succès.

Je me tourne donc vers vous pour avoir de l'aide

icare

Bonjour,
Ton explication de ce que tu veux faire n'est pas clair pour moi, essaye d'être un peu plus précis.
Si tu veux affecter un nombre aléatoire (plutôt pseudo-aléatoire) as tu essayé la fonction random() ?
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

manghao

oui j'ai utilisé le random mais enfaite, c'est pour mon projet de bombe factice, 4 boutons (neutre, explose, désarme, enleve du temps)

mais je retombe toujours sur la même serie ou sinon même avec plusieurs vérifications j'ai des même nombres

icare

#3
Jul 06, 2014, 06:21 pm Last Edit: Jul 06, 2014, 06:22 pm by icare Reason: 1
Re,
Il faut initialiser ton random avec, par exemple, une lecture d'une pin analogique en l'air pour que la séquence des randoms ne démarrent pas toujours de la même façon.
Voila un exemple : http://arduino.cc/en/Reference/RandomSeed
2B OR NOT(2B) = FF
Arduino 1.0.5 à 1.8.5 + gEdit + Ubuntu 18.04 LTS

manghao


jfs

Tu as quoi d'autre sur ton montage (capteur, RTC, ... etc) ?
Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

infobarquee

bonjour,
si tu pouvais être plus explicite dans ton idée, ca arrangerait pas mal ;)
donne un exemple de ce que tu veux faire aussi.
AUCUNE AIDE PAR MP

manghao

Ce que je veux faire c'est:
j'ai quatres boutons poussoires matrciés à mon clavier 3*4 avec des lettres A/B/C/D attribuées à ces touches.

Je cherche donc a faire un mode aléatoire pour prendre un des qutres boutons et lui attribuer une fonction qui désamorce la bombe factice, un autre qui fait exploser, un autre qui fait rien et un dernier qui retire du temps au timer

infobarquee

ok,
tu veux que ca soit le plus difficile en plus pour corser la chose et que les boutons changent en permanence.
si un bouton est appuyé, ca arrête le mode aléatoire ou pas?

j'utiliserai millis()
toutes les 10s par exemple on prend les 4 derniers nombre dans un tableau
A = 1er
B = 2nd
C = 3eme
D = 4eme

un switch case 1-2-3-4
et le tour est joué
AUCUNE AIDE PAR MP

B@tto

+1

Ou bien autre solution : générer une liste très longue (à stocker dans la flash) de nombre aléatoire préétablis. Elle devra être tellement longue qu'elle ne soit pas mémorisable
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

manghao

Bah enfaite, ça change pas tout le temps, ça donne les fonctions aux boutons au démarrage de la carte arduino.
Et ensuite c'est fixe jusqu'a la partie suivante ou la génératiion recommence

bricoleau

Un truc comme ça ?

Code: [Select]
int boutons[4] = {0, 1, 2, 3};


void melanger(int tableau[], int taille)
{
  int i, a, b, c;

  randomSeed(analogRead(0));

  for (i=0;i<taille;i++)
  {
    a = random(taille);
    b = random(taille);
    c = tableau[a];
    tableau[a] = tableau[b];
    tableau[b] = c;
  }
}

void setup()
{
  melanger(boutons, 4); //eventuellement plusieurs fois
  ...
}
Tutoriels arduino : http://forum.arduino.cc/index.php?topic=398112.0

manghao

#12
Jul 07, 2014, 06:15 pm Last Edit: Jul 07, 2014, 06:19 pm by manghao Reason: 1

Un truc comme ça ?

Code: [Select]
int boutons[4] = {0, 1, 2, 3};


void melanger(int tableau[], int taille)
{
 int i, a, b, c;

 randomSeed(analogRead(0));

 for (i=0;i<taille;i++)
 {
   a = random(taille);
   b = random(taille);
   c = tableau[a];
   tableau[a] = tableau[b];
   tableau[b] = c;
 }
}

void setup()
{
 melanger(boutons, 4); //eventuellement plusieurs fois
 ...
}



merci, juste ensuite pour assigner le chiffre à mon bouton je fait comment car j'ai matricé mes 4 boutons a mon clavier 3*4 ce qui m'en fait un 4*4

donc j'ai

Code: [Select]

char Keys[ROWS][COLS] = {
  { '1', '2', '3', 'A' },
  { '4', '5', '6', 'B'} ,
  { '7', '8', '9', 'C' } ,
  { '*', '0', '#', 'D' }
};


et les 4 boutons sont donc A/B/C/D

Go Up