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@0:a6240ee03fe3, 2015-10-02 (annotated)
- Committer:
- JackB
- Date:
- Fri Oct 02 22:30:36 2015 +0000
- Revision:
- 0:a6240ee03fe3
Adafruit 64x32 RGB LED Matrix - 3mm pitch Demo program for Nucleo F446RE.; Use User button to display color palette in second framebuffer.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JackB | 0:a6240ee03fe3 | 1 | #include "mbed.h" |
JackB | 0:a6240ee03fe3 | 2 | #include "HSV.h" |
JackB | 0:a6240ee03fe3 | 3 | #include "RGB_Matrix.h" |
JackB | 0:a6240ee03fe3 | 4 | #include "Arial8x8.h" |
JackB | 0:a6240ee03fe3 | 5 | #include "Arial12x12.h" |
JackB | 0:a6240ee03fe3 | 6 | #include "HD44780_6x8.h" |
JackB | 0:a6240ee03fe3 | 7 | |
JackB | 0:a6240ee03fe3 | 8 | #define PIN_R1 D14 |
JackB | 0:a6240ee03fe3 | 9 | #define PIN_R2 D15 |
JackB | 0:a6240ee03fe3 | 10 | #define PIN_G1 D2 |
JackB | 0:a6240ee03fe3 | 11 | #define PIN_G2 D3 |
JackB | 0:a6240ee03fe3 | 12 | #define PIN_B1 D4 |
JackB | 0:a6240ee03fe3 | 13 | #define PIN_B2 D5 |
JackB | 0:a6240ee03fe3 | 14 | #define PIN_CLK D6 |
JackB | 0:a6240ee03fe3 | 15 | #define PIN_LAT D7 |
JackB | 0:a6240ee03fe3 | 16 | #define PIN_OE D8 |
JackB | 0:a6240ee03fe3 | 17 | #define PIN_A D9 |
JackB | 0:a6240ee03fe3 | 18 | #define PIN_B D10 |
JackB | 0:a6240ee03fe3 | 19 | #define PIN_C D11 |
JackB | 0:a6240ee03fe3 | 20 | #define PIN_D D12 |
JackB | 0:a6240ee03fe3 | 21 | |
JackB | 0:a6240ee03fe3 | 22 | #define PI 3.1415926536 |
JackB | 0:a6240ee03fe3 | 23 | |
JackB | 0:a6240ee03fe3 | 24 | AnalogIn analog_value(A0); |
JackB | 0:a6240ee03fe3 | 25 | |
JackB | 0:a6240ee03fe3 | 26 | DigitalOut led1(LED1); |
JackB | 0:a6240ee03fe3 | 27 | DigitalIn button(PC_13); |
JackB | 0:a6240ee03fe3 | 28 | |
JackB | 0:a6240ee03fe3 | 29 | Ticker flipper; |
JackB | 0:a6240ee03fe3 | 30 | HSV Hsv; |
JackB | 0:a6240ee03fe3 | 31 | |
JackB | 0:a6240ee03fe3 | 32 | 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); |
JackB | 0:a6240ee03fe3 | 33 | |
JackB | 0:a6240ee03fe3 | 34 | void flip() |
JackB | 0:a6240ee03fe3 | 35 | { |
JackB | 0:a6240ee03fe3 | 36 | led1 = !led1; |
JackB | 0:a6240ee03fe3 | 37 | } |
JackB | 0:a6240ee03fe3 | 38 | |
JackB | 0:a6240ee03fe3 | 39 | int main() { |
JackB | 0:a6240ee03fe3 | 40 | printf("\nRGB Matrix example\n"); |
JackB | 0:a6240ee03fe3 | 41 | |
JackB | 0:a6240ee03fe3 | 42 | flipper.attach(&flip, 0.5); // the address of the function to be attached (flip) and the interval (0.5 seconds) |
JackB | 0:a6240ee03fe3 | 43 | |
JackB | 0:a6240ee03fe3 | 44 | MyMatrix.Init(); |
JackB | 0:a6240ee03fe3 | 45 | MyMatrix.SetOrientation(LANDSCAPE_B); |
JackB | 0:a6240ee03fe3 | 46 | MyMatrix.set_font((unsigned char*) HD44780_6x8); |
JackB | 0:a6240ee03fe3 | 47 | // MyMatrix.character(1, 1, '3'); |
JackB | 0:a6240ee03fe3 | 48 | // MyMatrix.printstring("0123456789"); |
JackB | 0:a6240ee03fe3 | 49 | |
JackB | 0:a6240ee03fe3 | 50 | // MyMatrix.foreground(RGB(255,64,0)); |
JackB | 0:a6240ee03fe3 | 51 | // MyMatrix.printstring("The quick brown fox jumps over"); |
JackB | 0:a6240ee03fe3 | 52 | |
JackB | 0:a6240ee03fe3 | 53 | MyMatrix.locate(0, 0); |
JackB | 0:a6240ee03fe3 | 54 | // MyMatrix.foreground(RGB(255,255,0)); |
JackB | 0:a6240ee03fe3 | 55 | MyMatrix.foreground(RGB(255,128,64)); // Warm white |
JackB | 0:a6240ee03fe3 | 56 | MyMatrix.printStringCenter("10:25:36"); |
JackB | 0:a6240ee03fe3 | 57 | |
JackB | 0:a6240ee03fe3 | 58 | |
JackB | 0:a6240ee03fe3 | 59 | MyMatrix.locate(0, 1); |
JackB | 0:a6240ee03fe3 | 60 | // MyMatrix.foreground(RGB(255,64,0)); |
JackB | 0:a6240ee03fe3 | 61 | // MyMatrix.foreground(RGB(64,128,255)); |
JackB | 0:a6240ee03fe3 | 62 | MyMatrix.printStringCenter("Donderdag"); |
JackB | 0:a6240ee03fe3 | 63 | |
JackB | 0:a6240ee03fe3 | 64 | MyMatrix.locate(0, 2); |
JackB | 0:a6240ee03fe3 | 65 | // MyMatrix.foreground(RGB(255,128,0)); |
JackB | 0:a6240ee03fe3 | 66 | MyMatrix.printStringCenter("01 Okt"); |
JackB | 0:a6240ee03fe3 | 67 | |
JackB | 0:a6240ee03fe3 | 68 | MyMatrix.locate(0, 3); |
JackB | 0:a6240ee03fe3 | 69 | MyMatrix.locatePixelX(2); |
JackB | 0:a6240ee03fe3 | 70 | // MyMatrix.foreground(RGB(0,255,0)); // Green |
JackB | 0:a6240ee03fe3 | 71 | // MyMatrix.foreground(RGB(64,0,255)); // Purple |
JackB | 0:a6240ee03fe3 | 72 | MyMatrix.foreground(RGB(255,128,64)); // Warm white |
JackB | 0:a6240ee03fe3 | 73 | MyMatrix.printString("2015"); |
JackB | 0:a6240ee03fe3 | 74 | |
JackB | 0:a6240ee03fe3 | 75 | MyMatrix.locatePixelX(39); |
JackB | 0:a6240ee03fe3 | 76 | // MyMatrix.foreground(RGB(0,255,64)); |
JackB | 0:a6240ee03fe3 | 77 | // MyMatrix.foreground(RGB(0,64,255)); |
JackB | 0:a6240ee03fe3 | 78 | MyMatrix.printString("22~C"); |
JackB | 0:a6240ee03fe3 | 79 | |
JackB | 0:a6240ee03fe3 | 80 | // MyMatrix.printf("Graphic"); |
JackB | 0:a6240ee03fe3 | 81 | |
JackB | 0:a6240ee03fe3 | 82 | |
JackB | 0:a6240ee03fe3 | 83 | MyMatrix.setWriteBuffer(1); |
JackB | 0:a6240ee03fe3 | 84 | Hsv.SetS(1); |
JackB | 0:a6240ee03fe3 | 85 | Hsv.SetV(1); |
JackB | 0:a6240ee03fe3 | 86 | for (int i = 0; i < 360; i++) |
JackB | 0:a6240ee03fe3 | 87 | { |
JackB | 0:a6240ee03fe3 | 88 | for (int r = 1; r <= 36; r++) { |
JackB | 0:a6240ee03fe3 | 89 | float Sat = (float)r /15.0; |
JackB | 0:a6240ee03fe3 | 90 | Hsv.SetS(Sat); |
JackB | 0:a6240ee03fe3 | 91 | Hsv.SetH((float)i/360.0); |
JackB | 0:a6240ee03fe3 | 92 | float R = Hsv.GetR() * 255; |
JackB | 0:a6240ee03fe3 | 93 | float G = Hsv.GetG() * 255; |
JackB | 0:a6240ee03fe3 | 94 | float B = Hsv.GetB() * 255; |
JackB | 0:a6240ee03fe3 | 95 | int x = sin(i * PI / 180) * r; |
JackB | 0:a6240ee03fe3 | 96 | int y = cos(i * PI / 180) * r; |
JackB | 0:a6240ee03fe3 | 97 | MyMatrix.drawPixel(x + 32, y + 16, RGB((uint8_t) R, (uint8_t) G, (uint8_t) B)); |
JackB | 0:a6240ee03fe3 | 98 | } |
JackB | 0:a6240ee03fe3 | 99 | } |
JackB | 0:a6240ee03fe3 | 100 | // MyMatrix.setDisplayBuffer(1); |
JackB | 0:a6240ee03fe3 | 101 | // MyMatrix.setDisplayBuffer(1); |
JackB | 0:a6240ee03fe3 | 102 | // wait(1.0); |
JackB | 0:a6240ee03fe3 | 103 | |
JackB | 0:a6240ee03fe3 | 104 | |
JackB | 0:a6240ee03fe3 | 105 | // spin in a main loop. flipper will interrupt it to call flip |
JackB | 0:a6240ee03fe3 | 106 | while(1) { |
JackB | 0:a6240ee03fe3 | 107 | // led1 = !led1; |
JackB | 0:a6240ee03fe3 | 108 | if (button) |
JackB | 0:a6240ee03fe3 | 109 | MyMatrix.setDisplayBuffer(0); |
JackB | 0:a6240ee03fe3 | 110 | else |
JackB | 0:a6240ee03fe3 | 111 | MyMatrix.setDisplayBuffer(1); |
JackB | 0:a6240ee03fe3 | 112 | |
JackB | 0:a6240ee03fe3 | 113 | wait(0.1); |
JackB | 0:a6240ee03fe3 | 114 | } |
JackB | 0:a6240ee03fe3 | 115 | } |