[Résolu] Affichage vintage de pc avec plein de led... Possible?

Bonjour.
Cela fait quelques semaines que je joue avec ce fabuleux outil qu'est Arduino.
Adepte du tuning pc, j'ai réalisé un affichage LCD sur base d'un shield LCD et d'un arduino R3.
J'aimerais utiliser des max7219 pour allumer de manière aléatoire les led d'une ou deux matrices 8x8 led
afin d'obtenir l'effet "ordinateur des années 80" 8)

Le module Arduino est-il capable de générer une valeur aléatoire pour éteindre ou allumer une led de cette matrice? Pas de compteur binaire car au bout de quelques cycles, les mêmes leds restent allumées.

Merci pour toute aide à ce sujet.

bonjour,
l'option random (rand) est faite pour ca

Salut,

Sinon tu peux faire du pseudo-aléatoire en préchargeant plusieurs affichages et en bouclant dessus. Si t'en charge assez on n'y verra que du feu ...

J'ai un peu potassé la fonction RAND, elle permet de sortir une valeur aléatoire entre 2 valeurs cibles : OK
J'ai pas envie de changer totalement d'affichage.
Je clarifie :

Imaginons une base de temps T= 1 seconde, ça j'y arrive LOOP ok
Chaque seconde, je crée une valeur RAND entre 1 et 64 , j'y arrive aussi

Il me reste le souci allumage/extinction
En T=0 toutes les led éteintes
T= 1 RAND me sort par exemple "21" j'aimerais que la led 21 s'allume et reste allumée
T= 2 RAND me sort "42" la led 42 s'allume et reste allumée
...
T = 73 Rand me sort encore "42" j'aimerais que la led 42 s'éteigne puisqu'elle était allumée ! une sorte de flip/flop

Je ne trouve que des programmations avec des positions led prédéfinies
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
B11111,
B11111 etc

Petite relance?

Comment adresser une seule led?

Avec le RAND je pourrais générer un nombre qui allumerait cette led puis, un Rand pour éteindre une autre led etc...

non?

Le rand peut servir à choisir des leds.

Tu peux faire une fonction de ce genre que tu réutilises le moment venu

int random_f (int min, int max)
{
    return (min + (rand () % (max-min+1)));
}

// utilisation :
random_f(1,64); // renvoie un nombre entre 1 et 64

Concernant l'état des leds il faut choisir entre 1 et 0, sachant que le modulo 2 (x % 2) d'un nombre donne 0 ou 1.

Il faudra que tu donnes du code la prochaine fois

Partant d'une matrice de LED 8x8, toutes les secondes, je sortirais un nombre aléatoire entre 0 et 255.
Je décalerais l'affichage d'une rangée vers le bas et je me servirais de la valeur générée pour allumer la rangée de LED supérieure. Ainsi l'afficheur défilerait avec des valeurs qui changeraient aléatoirement.

La commande :

}
void loop() {
  // rangee aleatoire
  randRow = random(8);
    

  // colonne aleatoire
  randCol = random(8);
  
//allumer led sur col, row
lc.setLed(0,col,row,true); 

  delay(50);
}

Ne pourrait pas fonctionner?
Avec une valeur "col" et "row" définie par une commande RAND ?

Ma source : Tutorial – Arduino and the MAX7219 LED Display Driver IC | tronixstuff.com

Ou j'ai loupé un truc... (j'ai pas de quoi tester car le Max7219 est retenu par la Douane depuis presque 2 mois... :sob: )

Je viens de recommander un max7219 ... Espérons qu'il ait plus de chance en passant la douane...

yessssssssssss ça marche ! 8)

---> la preuve : Aléatoire

Comment ajouter un deuxième?

Personne ?

Leeleen:
Petite relance?

Comment adresser une seule led?

Avec le RAND je pourrais générer un nombre qui allumerait cette led puis, un Rand pour éteindre une autre led etc...

non?

J'utilise la librairie LedControl qui permet ca:

/* 
 * Set the status of a single Led.
 * Params :
 * addr  address of the display 
 * row   the row of the Led (0..7)
 * col   the column of the Led (0..7)
 * state If true the led is switched on, 
 *	 if false it is switched off
 */
void setLed(int addr, int row, int col, boolean state);

Voici ma programmation assez simpliste

#include "LedControl.h"
LedControl lc=LedControl(12,11,10,1);
#include <LedControl.h>

// pin 12 MAX7219 pin 1
// pin 11 CLK pin 13
// pin 10 LOAD pin 12

void setup()
{
lc.shutdown(0,false);// turn off power saving, enables display
lc.setIntensity(0,15);// sets brightness (0~15 possible values)
lc.clearDisplay(0);// clear screen
}
void loop() {

//allumer led sur col, row
lc.setLed(0,random(8),random(8),true);
lc.setLed(0,random(8),random(8),true);
lc.setLed(0,random(8),random(8),true);

//eteindre led sur col, row
delay(random(500));
lc.setLed(0,random(8),random(8),false);
lc.setLed(0,random(8),random(8),false);
lc.setLed(0,random(8),random(8),false);
}

Je ne peux pas simplement changer l'adressage de la led? au lieu de 8 colonnes en mettre 16?

3 semaines que j'attends mon second Max7219... Toujours rien.

Quelqu'un a une idée de modification pour ma programmation?