Go Down

Topic: Cube led 4*4*4 (Read 1 time) previous topic - next topic

victor56

Mar 18, 2014, 08:37 pm Last Edit: Mar 18, 2014, 08:53 pm by victor56 Reason: 1
Bonjour,
Je me suis lancé dans un mini projet, qui est un cube  à led simble (pas de rgb) en 4*4*4 pour commencer.J'ai donc acheté :

- Arduino mega 2560
- 5 Max 7221
- condo 10 uf , 100
-resistances etc....

Pour commencer j'ai cablé juste 8 Leds sur un max7221 , qui fonctionne sans soucis.Niveau programmation je suis bloqué ....
!
Premièrement j'ai la possibilité d'utiliser une librairie 'matrix' ou 'ledcontrol' les deux fonctionnent mais j'aimerai savoir laquelle est la plus optimisé pour un tel projet ?

Deuxiément j'aimerai pouvoir allumer toutes les leds (8)  simultanément en utilisant le scintillement non visible ,j' ai fait de cette facon : (le while (1)est juste pour testé ....) :

Code: [Select]

#include <binary.h>
#include <LedControl.h>
#include <SPI.h>

LedControl lc=LedControl(12,11,10,1);
int timer = 1;

void setup() {
 
  lc.shutdown(0,false);
  lc.setIntensity(0,8);
  lc.clearDisplay(0);
}

 
void loop () {


void setLed(int addr, int row, int col, boolean state);
while (1) {
lc.setLed(0,0,1,true);  
delay(timer);
lc.setLed(0,0,1,false);  
lc.setLed(0,0,5,true);
delay(timer);
lc.setLed(0,0,5,false);  
lc.setLed(0,0,2,true);
delay(timer);
lc.setLed(0,0,2,false);
lc.setLed(0,0,6,true);  
delay(timer);
lc.setLed(0,0,6,false);  
lc.setLed(0,0,3,true);
delay(timer);
lc.setLed(0,0,3,false);  
lc.setLed(0,0,7,true);
delay(timer);
lc.setLed(0,0,7,false);
lc.setLed(0,0,4,true);
delay(timer);
lc.setLed(0,0,4,false);
lc.setLed(0,0,0,true);
delay(timer);
lc.setLed(0,0,0,false);

}

}


Cela fonctionne mais est-ce la bonne solution ?


Deuxièment j'aimerai faire un scénario :
-on allume toutes les leds pendant 10 secondes
-On attents 2 secondes
-on allume la led 0,1,2,3 pendant 5 secondes
-On attends 2 secondes
-On allume la led 4,5,6,7

J'ai commencé de cette facon mais je ne voit pas comment réaliser le reste ?

Code: [Select]
#include <binary.h>
#include <LedControl.h>
#include <SPI.h>


int timer =150;
int temps;
LedControl lc=LedControl(12,11,10,1);



void setup() {
 
   lc.shutdown(0,false);
   lc.setIntensity(0,8);
   lc.clearDisplay(0);
}

 
void loop () {


void setLed(int addr, int row, int col, boolean state);


if((millis() - temps) < 3000)
{
lc.setLed(0,0,1,true);   
delay(timer);
lc.setLed(0,0,1,false); 
lc.setLed(0,0,5,true);
delay(timer);
lc.setLed(0,0,5,false); 
lc.setLed(0,0,2,true);
delay(timer);
lc.setLed(0,0,2,false);
lc.setLed(0,0,6,true);   
delay(timer);
lc.setLed(0,0,6,false); 
lc.setLed(0,0,3,true);
delay(timer);
lc.setLed(0,0,3,false); 
lc.setLed(0,0,7,true);
delay(timer);
lc.setLed(0,0,7,false);
lc.setLed(0,0,4,true);
delay(timer);
lc.setLed(0,0,4,false);
lc.setLed(0,0,0,true);
delay(timer);
lc.setLed(0,0,0,false);

}


}


Merci à vous


patg_

Bonjour,
Je n'ai pas le temps de répondre en détail mais je trouve la lib LedControl très adaptée pour ce que tu veux faire.
C'est celle que j'utilise aussi pour ce genre d'usage (un seul Max 7219).
Je parle un peu de l'usage que je fais de cette lib sur mon blog:
http://breizhmakers.over-blog.com/article-le-max7219-pilote-de-matrice-de-led-105513569.html
http://breizhmakers.over-blog.com/article-un-peu-d-animation-ou-le-scrolling-a-base-de-max7219-105669349.html

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

victor56

Merci de ta réponse, j'ai regardé ton blog j'ai appris pas mal de chose pour la conception physique du cube mais concernant le code je suis pas très avancé .

Merci

Go Up