Demo of GP9002 VFD in grayscale mode

Dependencies:   Adafruit-GFX-Library-master Adafruit-GP9002-Grayscale-VFD-Library mbed

Fork of GP9002adafruit by Oliver Broad

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?

UserRevisionLine numberNew 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