Cube LED 4*4*4
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Cube LED 4*4*4



  1. #1
    inviteb1ea2cf1

    Cube LED 4*4*4


    ------

    Bonjour,

    Voila j'ai realiser un cube led 4*4*4 via ce site

    http://blog.spyou.org/wordpress-mu/2...sai-4x4x4-1-2/

    mais par contre j'ai petit soucis au niveau du code j'ai tout le temps les colonnes allumer ( il son connecter sur la partie analogique de ma carte arduino sur A4 / A5 ) impossible de les faire s'éteindre sauf dans le code quand je met 0 je voudrai si vous auriez une solution ??

    Voici le code sinon tout le reste marche

    #include <avr/pgmspace.h> // allows use of PROGMEM to store patterns in flash

    #define CUBESIZE 4
    #define PLANESIZE CUBESIZE*CUBESIZE
    #define PLANETIME 3333 // time each plane is displayed in us -> 100 Hz refresh
    #define TIMECONST 20 // multiplies DisplayTime to get ms - why not =100?


    // LED Pattern Table in PROGMEM - last column is display time in 100ms units
    // TODO this could be a lot more compact but not with binary pattern representation
    prog_uchar PROGMEM PatternTable[] = {
    // blink on and off





    B0001,B0000,B0000,B0000,B0001, B0000,B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000,B0000, B0000,4,
    B0011,B0000,B0000,B0000,B0011, B0000,B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000,B0000, B0000,4,
    B0011,B0010,B0000,B0000,B0011, B0010,B0000,B0000,B0000,B0000, B0000,B0000,B0000,B0000,B0000, B0000,4,







    // this is a dummy element for end of table (duration=0) aka !!!DO NOT TOUCH!!!
    B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, B0000, 0
    };

    /*
    ** Defining pins in array makes it easier to rearrange how cube is wired
    ** Adjust numbers here until LEDs flash in order - L to R, T to B
    ** Note that analog inputs 0-5 are also digital outputs 14-19!
    ** Pin DigitalOut0 (serial RX) and AnalogIn5 are left open for future apps
    */

    int LEDPin[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
    int PlanePin[] = {16, 17, 18, 19};

    // initialization
    void setup()
    {
    int pin; // loop counter
    // set up LED pins as output (active HIGH)
    for (pin=0; pin<PLANESIZE; pin++) {
    pinMode( LEDPin[pin], OUTPUT );
    }
    // set up plane pins as outputs (active LOW)
    for (pin=0; pin<CUBESIZE; pin++) {
    pinMode( PlanePin[pin], OUTPUT);
    }
    }

    // display pattern in table until DisplayTime is zero (then repeat)
    void loop()
    {
    // declare variables
    byte PatternBuf[PLANESIZE]; // saves current pattern from PatternTable
    int PatternIdx;
    byte DisplayTime; // time*100ms to display pattern
    unsigned long EndTime;
    int plane; // loop counter for cube refresh
    int patbufidx; // indexes which byte from pattern buffer
    int ledrow; // counts LEDs in refresh loop
    int ledcol; // counts LEDs in refresh loop
    int ledpin; // counts LEDs in refresh loop

    // Initialize PatternIdx to beginning of pattern table
    PatternIdx = 0;
    // loop over entries in pattern table - while DisplayTime>0
    do {
    // read pattern from PROGMEM and save in array
    memcpy_P( PatternBuf, PatternTable+PatternIdx, PLANESIZE );
    PatternIdx += PLANESIZE;
    // read DisplayTime from PROGMEM and increment index
    DisplayTime = pgm_read_byte_near( PatternTable + PatternIdx++ );
    // compute EndTime from current time (ms) and DisplayTime
    EndTime = millis() + ((unsigned long) DisplayTime) * TIMECONST;

    // loop while DisplayTime>0 and current time < EndTime
    while ( millis() < EndTime ) {
    patbufidx = 0; // reset index counter to beginning of buffer
    // loop over planes
    for (plane=0; plane<CUBESIZE; plane++) {
    // turn previous plane off
    if (plane==0) {
    digitalWrite( PlanePin[CUBESIZE-1], HIGH );
    } else {
    digitalWrite( PlanePin[plane-1], HIGH );
    }

    // load current plane pattern data into ports
    ledpin = 0;
    for (ledrow=0; ledrow<CUBESIZE; ledrow++) {
    for (ledcol=0; ledcol<CUBESIZE; ledcol++) {
    digitalWrite( LEDPin[ledpin++], PatternBuf[patbufidx] & (1 << ledcol) );
    }
    patbufidx++;
    }

    // turn current plane on
    digitalWrite( PlanePin[plane], LOW );
    // delay PLANETIME us
    delayMicroseconds( PLANETIME );
    } // for plane
    } // while <EndTime
    } while (DisplayTime > 0); // read patterns until time=0 which signals end
    }


    Cordialement

    -----

  2. #2
    inviteb1ea2cf1

    Re : Cube LED 4*4*4

    En faite se serai pour savoir si il y a un programme pour paramétré ce type de cube en B0000, B0100, etc...

    Cordialement

Discussions similaires

  1. cube de led 8x8x8
    Par biloux911 dans le forum Électronique
    Réponses: 17
    Dernier message: 30/09/2014, 08h36
  2. Comment convertirr des mètres en cube en décimètre cube?
    Par invite918f713b dans le forum Mathématiques du collège et du lycée
    Réponses: 7
    Dernier message: 24/03/2009, 09h26
  3. Comment faire allumer 1 led, 2 led, 3 led, etc
    Par inviteb70eb1f7 dans le forum Électronique
    Réponses: 5
    Dernier message: 17/07/2008, 21h18
  4. Un cube de LED qui change de couleur
    Par invite12c0a44e dans le forum Électronique
    Réponses: 1
    Dernier message: 26/11/2007, 21h59
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...