Comment Progammer les RGB

Salut tout le monde je cherche actuellement comment faire pour programmer les LED RGB de la Gamebuino pour donner plus de vie a mon jeu (je programme sous Arduino)

Merci

Hello Benji,

En fait, allumer et éteindre les LEDs de la META revient simplement à dessiner des pixels sur une image 2x4 qui correspond à la grille de LEDs qui se trouve au dos de la console. Cette image est accessible via l’API gb.lights :

gauche         droite      gb.lights
+-------------------+         0 1
| o               o |         â–ˇ â–ˇ 0
| o   les LEDs    o |   <=>   â–ˇ â–ˇ 1
| o  sur la META  o |         â–ˇ â–ˇ 2
| o               o |         â–ˇ â–ˇ 3
+-------------------+

Tu peux dessiner sur gb.lights exactement de la même manière que tu le fais sur gb.display.
Autrement dit, tu peux par exemple utiliser les fonctions drawPixel() et drawImage() de cette API. Et tu peux même exécuter une animation à partir d’une spritesheet !

Voici deux exemples (que j’avais déjà dû donner quelque-part) pour illustrer ces techniques :

Avec gb.lights.drawPixel()

#include <Gamebuino-Meta.h>

void setup() {
    gb.begin();
}

void loop() {
    gb.waitForUpdate();
    
    // integer division by 2 to slow down the frame rate
    uint8_t n = gb.frameCount >> 1;
    Color c;
    for (uint8_t i=0; i<4; i++) {
        // turns only one LED on both sides with LIGHTBLUE color
        c = n % 4 == i ? LIGHTBLUE : BLACK;
        gb.lights.drawPixel(0, i, c);
        gb.lights.drawPixel(1, i, c);
    }
}

Avec gb.lights.drawImage()

#include <Gamebuino-Meta.h>

// encodes a 2x4 sprite
const uint8_t IMAGE_DATA[] = {
    2,    // frame width
    4,    // frame height
    0x08, // number of frames (lower byte)
    0x00, // number of frames (higher byte)
    2,    // animation speed
    0x7,  // transparent color
    1,    // indexed color mode
    0x09, 0x00, 0x00, 0x00, // frame 1/8
    0x00, 0x09, 0x00, 0x00, // frame 2/8
    0x00, 0x00, 0x09, 0x00, // frame 3/8
    0x00, 0x00, 0x00, 0x09, // frame 4/8
    0x00, 0x00, 0x00, 0x90, // frame 5/8
    0x00, 0x00, 0x90, 0x00, // frame 6/8
    0x00, 0x90, 0x00, 0x00, // frame 7/8
    0x90, 0x00, 0x00, 0x00  // frame 8/8
};

// builds the animated image
Image image(IMAGE_DATA);

void setup() {
    gb.begin();
}

void loop() {
    gb.waitForUpdate();
    // draws the image on the LEDs
    gb.lights.drawImage(0, 0, image);
}

Je te laisse le soin d’aller lire la doc de référence concernant ces 2 fonctions :

Voilà, j’espère que ça t’aidera !

3 Likes

Ok merci de ton explication clair

Tu as raisons de lui dire, il fait de super explications. Regardes aussi son explication de l’animation des sprites avec l’anim de Mario. C’est limpide :wink: En plus les anims sont vraiment bien faites pour illustrer l’exemple. Avec une très légère mise en page ça pourrait intégrer directement les références…

2 Likes