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.
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
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.
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);
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?