Demo of GP9002 VFD in grayscale mode
Dependencies: Adafruit-GFX-Library-master Adafruit-GP9002-Grayscale-VFD-Library mbed
Fork of GP9002adafruit by
Adafruit-Graphic-VFD-Display-Library-master/examples/GraphicVFDtest/GraphicVFDtest.cpp@0:414a9e6fed37, 2016-05-02 (annotated)
- Committer:
- oliverb
- Date:
- Mon May 02 11:24:17 2016 +0000
- Revision:
- 0:414a9e6fed37
- Child:
- 2:efef4231b922
Opening commit, currently program is for Arduino not MBED
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
oliverb | 0:414a9e6fed37 | 1 | #include <SPI.h> |
oliverb | 0:414a9e6fed37 | 2 | #include "Adafruit_GFX.h" |
oliverb | 0:414a9e6fed37 | 3 | #include "Adafruit_GP9002.h" |
oliverb | 0:414a9e6fed37 | 4 | |
oliverb | 0:414a9e6fed37 | 5 | #define _MISO 12 // VFD PIN#8 |
oliverb | 0:414a9e6fed37 | 6 | #define _CLK 13 // VFD PIN#11 |
oliverb | 0:414a9e6fed37 | 7 | #define _MOSI 11 // VFD PIN#12 |
oliverb | 0:414a9e6fed37 | 8 | #define _CS 10 // VFD PIN#13 |
oliverb | 0:414a9e6fed37 | 9 | #define _DC 9 // VFD PIN#14 |
oliverb | 0:414a9e6fed37 | 10 | // connect VFD #15, #16, #17 to 5V |
oliverb | 0:414a9e6fed37 | 11 | // connect VFD #9 #18 #19 #20 to ground |
oliverb | 0:414a9e6fed37 | 12 | |
oliverb | 0:414a9e6fed37 | 13 | Adafruit_GP9002 display = Adafruit_GP9002(_CLK, _MISO, _MOSI, _CS, _DC); |
oliverb | 0:414a9e6fed37 | 14 | |
oliverb | 0:414a9e6fed37 | 15 | // if using hardware SPI on an UNO or other classic Arduino, the pinouts are the same as |
oliverb | 0:414a9e6fed37 | 16 | // above. |
oliverb | 0:414a9e6fed37 | 17 | //Adafruit_GP9002 display = Adafruit_GP9002(_CS, _DC); |
oliverb | 0:414a9e6fed37 | 18 | |
oliverb | 0:414a9e6fed37 | 19 | |
oliverb | 0:414a9e6fed37 | 20 | #define NUMFLAKES 10 |
oliverb | 0:414a9e6fed37 | 21 | #define XPOS 0 |
oliverb | 0:414a9e6fed37 | 22 | #define YPOS 1 |
oliverb | 0:414a9e6fed37 | 23 | #define DELTAY 2 |
oliverb | 0:414a9e6fed37 | 24 | |
oliverb | 0:414a9e6fed37 | 25 | |
oliverb | 0:414a9e6fed37 | 26 | #define LOGO16_GLCD_HEIGHT 16 |
oliverb | 0:414a9e6fed37 | 27 | #define LOGO16_GLCD_WIDTH 16 |
oliverb | 0:414a9e6fed37 | 28 | static unsigned char PROGMEM logo16_glcd_bmp[] = |
oliverb | 0:414a9e6fed37 | 29 | { B00000000, B11000000, |
oliverb | 0:414a9e6fed37 | 30 | B00000001, B11000000, |
oliverb | 0:414a9e6fed37 | 31 | B00000001, B11000000, |
oliverb | 0:414a9e6fed37 | 32 | B00000011, B11100000, |
oliverb | 0:414a9e6fed37 | 33 | B11110011, B11100000, |
oliverb | 0:414a9e6fed37 | 34 | B11111110, B11111000, |
oliverb | 0:414a9e6fed37 | 35 | B01111110, B11111111, |
oliverb | 0:414a9e6fed37 | 36 | B00110011, B10011111, |
oliverb | 0:414a9e6fed37 | 37 | B00011111, B11111100, |
oliverb | 0:414a9e6fed37 | 38 | B00001101, B01110000, |
oliverb | 0:414a9e6fed37 | 39 | B00011011, B10100000, |
oliverb | 0:414a9e6fed37 | 40 | B00111111, B11100000, |
oliverb | 0:414a9e6fed37 | 41 | B00111111, B11110000, |
oliverb | 0:414a9e6fed37 | 42 | B01111100, B11110000, |
oliverb | 0:414a9e6fed37 | 43 | B01110000, B01110000, |
oliverb | 0:414a9e6fed37 | 44 | B00000000, B00110000 }; |
oliverb | 0:414a9e6fed37 | 45 | |
oliverb | 0:414a9e6fed37 | 46 | #include "adabmp.c" |
oliverb | 0:414a9e6fed37 | 47 | |
oliverb | 0:414a9e6fed37 | 48 | void setup() { |
oliverb | 0:414a9e6fed37 | 49 | Serial.begin(9600); |
oliverb | 0:414a9e6fed37 | 50 | |
oliverb | 0:414a9e6fed37 | 51 | display.begin(); |
oliverb | 0:414a9e6fed37 | 52 | // init done |
oliverb | 0:414a9e6fed37 | 53 | |
oliverb | 0:414a9e6fed37 | 54 | delay(2000); |
oliverb | 0:414a9e6fed37 | 55 | display.clearDisplay(); // clears the screen and buffer |
oliverb | 0:414a9e6fed37 | 56 | /* |
oliverb | 0:414a9e6fed37 | 57 | display.drawPixel(20, 20, WHITE); |
oliverb | 0:414a9e6fed37 | 58 | |
oliverb | 0:414a9e6fed37 | 59 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 60 | |
oliverb | 0:414a9e6fed37 | 61 | // draw many lines |
oliverb | 0:414a9e6fed37 | 62 | testdrawline(); |
oliverb | 0:414a9e6fed37 | 63 | delay(2000); |
oliverb | 0:414a9e6fed37 | 64 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 65 | // draw rectangles |
oliverb | 0:414a9e6fed37 | 66 | testdrawrect(); |
oliverb | 0:414a9e6fed37 | 67 | delay(2000); |
oliverb | 0:414a9e6fed37 | 68 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 69 | |
oliverb | 0:414a9e6fed37 | 70 | // draw multiple rectangles |
oliverb | 0:414a9e6fed37 | 71 | testfillrect(); |
oliverb | 0:414a9e6fed37 | 72 | delay(2000); |
oliverb | 0:414a9e6fed37 | 73 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 74 | |
oliverb | 0:414a9e6fed37 | 75 | // draw mulitple circles |
oliverb | 0:414a9e6fed37 | 76 | testdrawcircle(); |
oliverb | 0:414a9e6fed37 | 77 | delay(2000); |
oliverb | 0:414a9e6fed37 | 78 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 79 | */ |
oliverb | 0:414a9e6fed37 | 80 | |
oliverb | 0:414a9e6fed37 | 81 | // draw a circle, 10 pixel radius |
oliverb | 0:414a9e6fed37 | 82 | display.fillCircle(20, 20, 20, WHITE); |
oliverb | 0:414a9e6fed37 | 83 | delay(2000); |
oliverb | 0:414a9e6fed37 | 84 | |
oliverb | 0:414a9e6fed37 | 85 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 86 | testdrawroundrect(); |
oliverb | 0:414a9e6fed37 | 87 | delay(2000); |
oliverb | 0:414a9e6fed37 | 88 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 89 | |
oliverb | 0:414a9e6fed37 | 90 | testfillroundrect(); |
oliverb | 0:414a9e6fed37 | 91 | delay(2000); |
oliverb | 0:414a9e6fed37 | 92 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 93 | |
oliverb | 0:414a9e6fed37 | 94 | testdrawtriangle(); |
oliverb | 0:414a9e6fed37 | 95 | delay(2000); |
oliverb | 0:414a9e6fed37 | 96 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 97 | |
oliverb | 0:414a9e6fed37 | 98 | testfilltriangle(); |
oliverb | 0:414a9e6fed37 | 99 | delay(2000); |
oliverb | 0:414a9e6fed37 | 100 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 101 | |
oliverb | 0:414a9e6fed37 | 102 | // draw the first ~12 characters in the font |
oliverb | 0:414a9e6fed37 | 103 | testdrawchar(); |
oliverb | 0:414a9e6fed37 | 104 | delay(2000); |
oliverb | 0:414a9e6fed37 | 105 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 106 | |
oliverb | 0:414a9e6fed37 | 107 | // text display tests |
oliverb | 0:414a9e6fed37 | 108 | display.setTextSize(1); |
oliverb | 0:414a9e6fed37 | 109 | display.setTextColor(WHITE); |
oliverb | 0:414a9e6fed37 | 110 | display.setCursor(0,0); |
oliverb | 0:414a9e6fed37 | 111 | display.println("Hello, world!"); |
oliverb | 0:414a9e6fed37 | 112 | display.setTextColor(BLACK, WHITE); // 'inverted' text |
oliverb | 0:414a9e6fed37 | 113 | display.println(3.141592); |
oliverb | 0:414a9e6fed37 | 114 | display.setTextSize(2); |
oliverb | 0:414a9e6fed37 | 115 | display.setTextColor(WHITE); |
oliverb | 0:414a9e6fed37 | 116 | display.print("0x"); display.println(0xDEADBEEF, HEX); |
oliverb | 0:414a9e6fed37 | 117 | delay(2000); |
oliverb | 0:414a9e6fed37 | 118 | |
oliverb | 0:414a9e6fed37 | 119 | // miniature bitmap display |
oliverb | 0:414a9e6fed37 | 120 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 121 | display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); |
oliverb | 0:414a9e6fed37 | 122 | |
oliverb | 0:414a9e6fed37 | 123 | delay(1000); |
oliverb | 0:414a9e6fed37 | 124 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 125 | display.drawBitmap(0, 0, adabmp, 128, 64, 1); |
oliverb | 0:414a9e6fed37 | 126 | |
oliverb | 0:414a9e6fed37 | 127 | } |
oliverb | 0:414a9e6fed37 | 128 | |
oliverb | 0:414a9e6fed37 | 129 | |
oliverb | 0:414a9e6fed37 | 130 | void loop() { |
oliverb | 0:414a9e6fed37 | 131 | |
oliverb | 0:414a9e6fed37 | 132 | } |
oliverb | 0:414a9e6fed37 | 133 | |
oliverb | 0:414a9e6fed37 | 134 | |
oliverb | 0:414a9e6fed37 | 135 | void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { |
oliverb | 0:414a9e6fed37 | 136 | uint8_t icons[NUMFLAKES][3]; |
oliverb | 0:414a9e6fed37 | 137 | srandom(666); // whatever seed |
oliverb | 0:414a9e6fed37 | 138 | |
oliverb | 0:414a9e6fed37 | 139 | // initialize |
oliverb | 0:414a9e6fed37 | 140 | for (uint8_t f=0; f< NUMFLAKES; f++) { |
oliverb | 0:414a9e6fed37 | 141 | icons[f][XPOS] = random() % display.width(); |
oliverb | 0:414a9e6fed37 | 142 | icons[f][YPOS] = 0; |
oliverb | 0:414a9e6fed37 | 143 | icons[f][DELTAY] = random() % 5 + 1; |
oliverb | 0:414a9e6fed37 | 144 | |
oliverb | 0:414a9e6fed37 | 145 | Serial.print("x: "); |
oliverb | 0:414a9e6fed37 | 146 | Serial.print(icons[f][XPOS], DEC); |
oliverb | 0:414a9e6fed37 | 147 | Serial.print(" y: "); |
oliverb | 0:414a9e6fed37 | 148 | Serial.print(icons[f][YPOS], DEC); |
oliverb | 0:414a9e6fed37 | 149 | Serial.print(" dy: "); |
oliverb | 0:414a9e6fed37 | 150 | Serial.println(icons[f][DELTAY], DEC); |
oliverb | 0:414a9e6fed37 | 151 | } |
oliverb | 0:414a9e6fed37 | 152 | |
oliverb | 0:414a9e6fed37 | 153 | while (1) { |
oliverb | 0:414a9e6fed37 | 154 | // draw each icon |
oliverb | 0:414a9e6fed37 | 155 | for (uint8_t f=0; f< NUMFLAKES; f++) { |
oliverb | 0:414a9e6fed37 | 156 | display.drawBitmap(icons[f][XPOS], icons[f][YPOS], logo16_glcd_bmp, w, h, WHITE); |
oliverb | 0:414a9e6fed37 | 157 | } |
oliverb | 0:414a9e6fed37 | 158 | delay(200); |
oliverb | 0:414a9e6fed37 | 159 | |
oliverb | 0:414a9e6fed37 | 160 | // then erase it + move it |
oliverb | 0:414a9e6fed37 | 161 | for (uint8_t f=0; f< NUMFLAKES; f++) { |
oliverb | 0:414a9e6fed37 | 162 | display.drawBitmap(icons[f][XPOS], icons[f][YPOS], logo16_glcd_bmp, w, h, BLACK); |
oliverb | 0:414a9e6fed37 | 163 | // move it |
oliverb | 0:414a9e6fed37 | 164 | icons[f][YPOS] += icons[f][DELTAY]; |
oliverb | 0:414a9e6fed37 | 165 | // if its gone, reinit |
oliverb | 0:414a9e6fed37 | 166 | if (icons[f][YPOS] > display.height()) { |
oliverb | 0:414a9e6fed37 | 167 | icons[f][XPOS] = random() % display.width(); |
oliverb | 0:414a9e6fed37 | 168 | icons[f][YPOS] = 0; |
oliverb | 0:414a9e6fed37 | 169 | icons[f][DELTAY] = random() % 5 + 1; |
oliverb | 0:414a9e6fed37 | 170 | } |
oliverb | 0:414a9e6fed37 | 171 | } |
oliverb | 0:414a9e6fed37 | 172 | } |
oliverb | 0:414a9e6fed37 | 173 | } |
oliverb | 0:414a9e6fed37 | 174 | |
oliverb | 0:414a9e6fed37 | 175 | |
oliverb | 0:414a9e6fed37 | 176 | void testdrawchar(void) { |
oliverb | 0:414a9e6fed37 | 177 | display.setTextSize(1); |
oliverb | 0:414a9e6fed37 | 178 | display.setTextColor(WHITE); |
oliverb | 0:414a9e6fed37 | 179 | display.setCursor(0,0); |
oliverb | 0:414a9e6fed37 | 180 | |
oliverb | 0:414a9e6fed37 | 181 | for (uint8_t i=0; i < 168; i++) { |
oliverb | 0:414a9e6fed37 | 182 | if (i == '\n') continue; |
oliverb | 0:414a9e6fed37 | 183 | display.write(i); |
oliverb | 0:414a9e6fed37 | 184 | //if ((i > 0) && (i % 14 == 0)) |
oliverb | 0:414a9e6fed37 | 185 | //display.println(); |
oliverb | 0:414a9e6fed37 | 186 | } |
oliverb | 0:414a9e6fed37 | 187 | } |
oliverb | 0:414a9e6fed37 | 188 | |
oliverb | 0:414a9e6fed37 | 189 | void testdrawcircle(void) { |
oliverb | 0:414a9e6fed37 | 190 | for (uint8_t i=0; i<display.height(); i+=2) { |
oliverb | 0:414a9e6fed37 | 191 | display.drawCircle(display.width()/2, display.height()/2, i, WHITE); |
oliverb | 0:414a9e6fed37 | 192 | } |
oliverb | 0:414a9e6fed37 | 193 | } |
oliverb | 0:414a9e6fed37 | 194 | |
oliverb | 0:414a9e6fed37 | 195 | void testfillrect(void) { |
oliverb | 0:414a9e6fed37 | 196 | uint8_t color = 1; |
oliverb | 0:414a9e6fed37 | 197 | for (uint8_t i=0; i<display.height()/2; i+=3) { |
oliverb | 0:414a9e6fed37 | 198 | // alternate colors |
oliverb | 0:414a9e6fed37 | 199 | display.fillRect(i, i, display.width()-i*2, display.height()-i*2, color%2); |
oliverb | 0:414a9e6fed37 | 200 | color++; |
oliverb | 0:414a9e6fed37 | 201 | } |
oliverb | 0:414a9e6fed37 | 202 | } |
oliverb | 0:414a9e6fed37 | 203 | |
oliverb | 0:414a9e6fed37 | 204 | void testdrawtriangle(void) { |
oliverb | 0:414a9e6fed37 | 205 | for (int16_t i=0; i<min(display.width(),display.height())/2; i+=5) { |
oliverb | 0:414a9e6fed37 | 206 | display.drawTriangle(display.width()/2, display.height()/2-i, |
oliverb | 0:414a9e6fed37 | 207 | display.width()/2-i, display.height()/2+i, |
oliverb | 0:414a9e6fed37 | 208 | display.width()/2+i, display.height()/2+i, WHITE); |
oliverb | 0:414a9e6fed37 | 209 | } |
oliverb | 0:414a9e6fed37 | 210 | } |
oliverb | 0:414a9e6fed37 | 211 | |
oliverb | 0:414a9e6fed37 | 212 | void testfilltriangle(void) { |
oliverb | 0:414a9e6fed37 | 213 | uint8_t color = WHITE; |
oliverb | 0:414a9e6fed37 | 214 | for (int16_t i=min(display.width(),display.height())/2; i>0; i-=5) { |
oliverb | 0:414a9e6fed37 | 215 | display.fillTriangle(display.width()/2, display.height()/2-i, |
oliverb | 0:414a9e6fed37 | 216 | display.width()/2-i, display.height()/2+i, |
oliverb | 0:414a9e6fed37 | 217 | display.width()/2+i, display.height()/2+i, color); |
oliverb | 0:414a9e6fed37 | 218 | if (color == BLACK) color = WHITE; |
oliverb | 0:414a9e6fed37 | 219 | else color = BLACK; |
oliverb | 0:414a9e6fed37 | 220 | } |
oliverb | 0:414a9e6fed37 | 221 | } |
oliverb | 0:414a9e6fed37 | 222 | |
oliverb | 0:414a9e6fed37 | 223 | void testdrawroundrect(void) { |
oliverb | 0:414a9e6fed37 | 224 | for (uint8_t i=0; i<display.height()/4; i+=2) { |
oliverb | 0:414a9e6fed37 | 225 | display.drawRoundRect(i, i, display.width()-2*i, display.height()-2*i, display.height()/4, WHITE); |
oliverb | 0:414a9e6fed37 | 226 | } |
oliverb | 0:414a9e6fed37 | 227 | } |
oliverb | 0:414a9e6fed37 | 228 | |
oliverb | 0:414a9e6fed37 | 229 | void testfillroundrect(void) { |
oliverb | 0:414a9e6fed37 | 230 | uint8_t color = WHITE; |
oliverb | 0:414a9e6fed37 | 231 | for (uint8_t i=0; i<display.height()/4-2; i+=2) { |
oliverb | 0:414a9e6fed37 | 232 | display.fillRoundRect(i, i, display.width()-2*i, display.height()-2*i, display.height()/4, color); |
oliverb | 0:414a9e6fed37 | 233 | if (color == BLACK) color = WHITE; |
oliverb | 0:414a9e6fed37 | 234 | else color = BLACK; |
oliverb | 0:414a9e6fed37 | 235 | } |
oliverb | 0:414a9e6fed37 | 236 | } |
oliverb | 0:414a9e6fed37 | 237 | |
oliverb | 0:414a9e6fed37 | 238 | void testdrawrect(void) { |
oliverb | 0:414a9e6fed37 | 239 | for (uint8_t i=0; i<display.height()/2; i+=2) { |
oliverb | 0:414a9e6fed37 | 240 | display.drawRect(i, i, display.width()-2*i, display.height()-2*i, WHITE); |
oliverb | 0:414a9e6fed37 | 241 | } |
oliverb | 0:414a9e6fed37 | 242 | } |
oliverb | 0:414a9e6fed37 | 243 | |
oliverb | 0:414a9e6fed37 | 244 | void testdrawline() { |
oliverb | 0:414a9e6fed37 | 245 | for (uint8_t i=0; i<display.width(); i+=4) { |
oliverb | 0:414a9e6fed37 | 246 | display.drawLine(0, 0, i, display.height()-1, WHITE); |
oliverb | 0:414a9e6fed37 | 247 | } |
oliverb | 0:414a9e6fed37 | 248 | for (uint8_t i=0; i<display.height(); i+=4) { |
oliverb | 0:414a9e6fed37 | 249 | display.drawLine(0, 0, display.width()-1, i, WHITE); |
oliverb | 0:414a9e6fed37 | 250 | } |
oliverb | 0:414a9e6fed37 | 251 | delay(250); |
oliverb | 0:414a9e6fed37 | 252 | |
oliverb | 0:414a9e6fed37 | 253 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 254 | for (uint8_t i=0; i<display.width(); i+=4) { |
oliverb | 0:414a9e6fed37 | 255 | display.drawLine(0, display.height()-1, i, 0, WHITE); |
oliverb | 0:414a9e6fed37 | 256 | } |
oliverb | 0:414a9e6fed37 | 257 | for (int8_t i=display.height()-1; i>=0; i-=4) { |
oliverb | 0:414a9e6fed37 | 258 | display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); |
oliverb | 0:414a9e6fed37 | 259 | } |
oliverb | 0:414a9e6fed37 | 260 | delay(250); |
oliverb | 0:414a9e6fed37 | 261 | |
oliverb | 0:414a9e6fed37 | 262 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 263 | for (int8_t i=display.width()-1; i>=0; i-=4) { |
oliverb | 0:414a9e6fed37 | 264 | display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); |
oliverb | 0:414a9e6fed37 | 265 | } |
oliverb | 0:414a9e6fed37 | 266 | for (int8_t i=display.height()-1; i>=0; i-=4) { |
oliverb | 0:414a9e6fed37 | 267 | display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); |
oliverb | 0:414a9e6fed37 | 268 | } |
oliverb | 0:414a9e6fed37 | 269 | delay(250); |
oliverb | 0:414a9e6fed37 | 270 | |
oliverb | 0:414a9e6fed37 | 271 | display.clearDisplay(); |
oliverb | 0:414a9e6fed37 | 272 | for (uint8_t i=0; i<display.height(); i+=4) { |
oliverb | 0:414a9e6fed37 | 273 | display.drawLine(display.width()-1, 0, 0, i, WHITE); |
oliverb | 0:414a9e6fed37 | 274 | } |
oliverb | 0:414a9e6fed37 | 275 | for (uint8_t i=0; i<display.width(); i+=4) { |
oliverb | 0:414a9e6fed37 | 276 | display.drawLine(display.width()-1, 0, i, display.height()-1, WHITE); |
oliverb | 0:414a9e6fed37 | 277 | } |
oliverb | 0:414a9e6fed37 | 278 | delay(250); |
oliverb | 0:414a9e6fed37 | 279 | } |
oliverb | 0:414a9e6fed37 | 280 |