Go Down

Topic: [Résolu] Affichage vintage de pc avec plein de led... Possible? (Read 2789 times) previous topic - next topic

Leeleen

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.

infobarquee

AUCUNE AIDE PAR MP

B@tto

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 ...
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

Leeleen

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

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?

vohu

Le rand peut servir à choisir des leds.

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

Code: [Select]
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



fdufnews

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.

_pepe_

Supprimé

Leeleen

La commande :
Code: [Select]

}
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 : http://tronixstuff.com/2013/10/11/tutorial-arduino-max7219-led-display-driver-ic/

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

Leeleen

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

Leeleen

yessssssssssss ça marche ! 8)


---> la preuve :  Aléatoire

Comment ajouter un deuxième?


patg_

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:
Code: [Select]
/*
 * 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);

Mes Arduineries: http://breizhmakers.over-blog.com/

_pepe_

Supprimé

Leeleen


Voici ma programmation assez simpliste

Quote
#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?

Go Up