Adafruit 64x32 RGB LED Matrix - 3mm pitch Demo program for Nucleo F446RE. Use User button to display color palette in second framebuffer.

Dependencies:   HSV RGB_Matrix mbed

main.cpp

Committer:
JackB
Date:
2015-10-02
Revision:
0:a6240ee03fe3

File content as of revision 0:a6240ee03fe3:

#include "mbed.h"
#include "HSV.h"
#include "RGB_Matrix.h"
#include "Arial8x8.h"
#include "Arial12x12.h"
#include "HD44780_6x8.h"

#define  PIN_R1   D14
#define  PIN_R2   D15
#define  PIN_G1   D2
#define  PIN_G2   D3
#define  PIN_B1   D4
#define  PIN_B2   D5
#define  PIN_CLK  D6
#define  PIN_LAT  D7
#define  PIN_OE   D8
#define  PIN_A    D9
#define  PIN_B    D10
#define  PIN_C    D11
#define  PIN_D    D12

#define  PI  3.1415926536

AnalogIn analog_value(A0);

DigitalOut led1(LED1);
DigitalIn button(PC_13);

Ticker flipper;
HSV Hsv;

RGB_Matrix MyMatrix(PIN_R1, PIN_R2, PIN_G1, PIN_G2, PIN_B1, PIN_B2, PIN_CLK, PIN_LAT, PIN_OE, PIN_A, PIN_B, PIN_C, PIN_D);

void flip()
{
    led1 = !led1;
}

int main() {
    printf("\nRGB Matrix example\n");

    flipper.attach(&flip, 0.5); // the address of the function to be attached (flip) and the interval (0.5 seconds)

    MyMatrix.Init();
    MyMatrix.SetOrientation(LANDSCAPE_B);
    MyMatrix.set_font((unsigned char*) HD44780_6x8);
//    MyMatrix.character(1, 1, '3');
//    MyMatrix.printstring("0123456789");

//    MyMatrix.foreground(RGB(255,64,0));
//    MyMatrix.printstring("The quick brown fox jumps over");

    MyMatrix.locate(0, 0);
//    MyMatrix.foreground(RGB(255,255,0));
    MyMatrix.foreground(RGB(255,128,64)); // Warm white
    MyMatrix.printStringCenter("10:25:36");


    MyMatrix.locate(0, 1);
//    MyMatrix.foreground(RGB(255,64,0));
//    MyMatrix.foreground(RGB(64,128,255));
    MyMatrix.printStringCenter("Donderdag");

    MyMatrix.locate(0, 2);
//    MyMatrix.foreground(RGB(255,128,0));
    MyMatrix.printStringCenter("01 Okt");

    MyMatrix.locate(0, 3);
    MyMatrix.locatePixelX(2);
//    MyMatrix.foreground(RGB(0,255,0)); // Green
//    MyMatrix.foreground(RGB(64,0,255)); // Purple
    MyMatrix.foreground(RGB(255,128,64)); // Warm white
    MyMatrix.printString("2015");

    MyMatrix.locatePixelX(39);
//    MyMatrix.foreground(RGB(0,255,64));
//    MyMatrix.foreground(RGB(0,64,255));
    MyMatrix.printString("22~C");

//        MyMatrix.printf("Graphic");


    MyMatrix.setWriteBuffer(1);
        Hsv.SetS(1);
        Hsv.SetV(1);
        for (int i = 0; i < 360; i++)
        {
            for (int r = 1; r <= 36; r++) {
                float Sat = (float)r /15.0;
                Hsv.SetS(Sat);
                Hsv.SetH((float)i/360.0);
                float R = Hsv.GetR() * 255;
                float G = Hsv.GetG() * 255;
                float B = Hsv.GetB() * 255;
                int x = sin(i * PI / 180) * r;
                int y = cos(i * PI / 180) * r;
                MyMatrix.drawPixel(x + 32, y + 16, RGB((uint8_t) R, (uint8_t) G, (uint8_t) B));
            }
        }
//    MyMatrix.setDisplayBuffer(1);
//    MyMatrix.setDisplayBuffer(1);
//        wait(1.0);


    // spin in a main loop. flipper will interrupt it to call flip
    while(1) {
//        led1 = !led1;
        if (button)
            MyMatrix.setDisplayBuffer(0);
        else
            MyMatrix.setDisplayBuffer(1);

        wait(0.1);
    }
}