5 by 14 Neo array

Dependencies:   mbed

Committer:
RogerJKelly
Date:
Mon Jun 12 16:57:43 2017 +0000
Revision:
0:a32d1a85a830
working display using ARM to drive display.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RogerJKelly 0:a32d1a85a830 1 #include "mbed.h"
RogerJKelly 0:a32d1a85a830 2
RogerJKelly 0:a32d1a85a830 3 #include "NeoMatrix.h"
RogerJKelly 0:a32d1a85a830 4
RogerJKelly 0:a32d1a85a830 5 //#include "WS2812.h"
RogerJKelly 0:a32d1a85a830 6 //#include "PixelArray.h"
RogerJKelly 0:a32d1a85a830 7
RogerJKelly 0:a32d1a85a830 8 #define WS2812_BUF 70
RogerJKelly 0:a32d1a85a830 9
RogerJKelly 0:a32d1a85a830 10 #define Color(r, g, b) ((r&0xFF)<<16 | (g&0xFF) << 8 | (b&0xFF)) // pack colors
RogerJKelly 0:a32d1a85a830 11
RogerJKelly 0:a32d1a85a830 12 #define Red (Color(255,0,0))
RogerJKelly 0:a32d1a85a830 13 #define Green (Color(0,255,0))
RogerJKelly 0:a32d1a85a830 14 #define Blue (Color(0,0,255))
RogerJKelly 0:a32d1a85a830 15
RogerJKelly 0:a32d1a85a830 16
RogerJKelly 0:a32d1a85a830 17 // for KL25Z
RogerJKelly 0:a32d1a85a830 18 //DigitalOut CPU_Mon(PTD5); // to measure time in output loop
RogerJKelly 0:a32d1a85a830 19 // for LPC1768
RogerJKelly 0:a32d1a85a830 20 //DigitalOut CPU_Mon(p21); // to measure time in output loop
RogerJKelly 0:a32d1a85a830 21 // for STM32F103 Nucleo
RogerJKelly 0:a32d1a85a830 22 DigitalOut CPU_Mon(PB_6); // to measure time in output loop
RogerJKelly 0:a32d1a85a830 23
RogerJKelly 0:a32d1a85a830 24 DigitalOut myled(LED1);
RogerJKelly 0:a32d1a85a830 25 //DigitalOut myled2(LED2);
RogerJKelly 0:a32d1a85a830 26 //DigitalOut myled3(LED3);
RogerJKelly 0:a32d1a85a830 27
RogerJKelly 0:a32d1a85a830 28 //PixelArray px(WS2812_BUF);
RogerJKelly 0:a32d1a85a830 29 //NeoArr = px(1);
RogerJKelly 0:a32d1a85a830 30
RogerJKelly 0:a32d1a85a830 31 // See the program page for information on the timing numbers
RogerJKelly 0:a32d1a85a830 32 // The given numbers are for the K64F: 0, 5, 5, 0
RogerJKelly 0:a32d1a85a830 33 // K64F, KL46Z: 0, 5, 5, 0
RogerJKelly 0:a32d1a85a830 34 //NeoArr array(PTD2, 1, 0, 5, 5, 0);
RogerJKelly 0:a32d1a85a830 35 // LPC1768: 5, 10, 10, 15
RogerJKelly 0:a32d1a85a830 36 //NeoArr array(p18, 1, 5, 10, 10, 15);
RogerJKelly 0:a32d1a85a830 37 // STM32F103 Nucleo: 0, 5, 5, 0
RogerJKelly 0:a32d1a85a830 38 NeoArr array(PC_7, 1, 0, 5, 5, 0);
RogerJKelly 0:a32d1a85a830 39
RogerJKelly 0:a32d1a85a830 40 Ticker timer;
RogerJKelly 0:a32d1a85a830 41 char second_tick;
RogerJKelly 0:a32d1a85a830 42
RogerJKelly 0:a32d1a85a830 43 // -- sets a flag every time the 5 second timer fires
RogerJKelly 0:a32d1a85a830 44 void attime()
RogerJKelly 0:a32d1a85a830 45 {
RogerJKelly 0:a32d1a85a830 46 second_tick = true;
RogerJKelly 0:a32d1a85a830 47 //HazLed = 1; // turn Haz Led off
RogerJKelly 0:a32d1a85a830 48 //NmeaPrint = true;
RogerJKelly 0:a32d1a85a830 49 }
RogerJKelly 0:a32d1a85a830 50
RogerJKelly 0:a32d1a85a830 51 //const unsigned char smile_img[8] = {0x1E,0x21,0xD2,0xC0,0xD2,0xCC,0x21,0x1E}; // smiley
RogerJKelly 0:a32d1a85a830 52 void scroll_str(char *buff, int i)
RogerJKelly 0:a32d1a85a830 53 {
RogerJKelly 0:a32d1a85a830 54 //int start_px, end_px;
RogerJKelly 0:a32d1a85a830 55 //start_px = n;
RogerJKelly 0:a32d1a85a830 56 //end_px = n * -6;
RogerJKelly 0:a32d1a85a830 57
RogerJKelly 0:a32d1a85a830 58 array.clear();
RogerJKelly 0:a32d1a85a830 59 array.drawChar(0,i,0,buff[0], 128,128,128);
RogerJKelly 0:a32d1a85a830 60 array.drawChar(0,i+6,0,buff[1], 128,128,128);
RogerJKelly 0:a32d1a85a830 61 array.drawChar(0,i+12,0,buff[2], 128,128,128);
RogerJKelly 0:a32d1a85a830 62 if ( buff[3] == '&' )
RogerJKelly 0:a32d1a85a830 63 array.drawChar(0,i+18,0,buff[3], 255,255,0);
RogerJKelly 0:a32d1a85a830 64 else
RogerJKelly 0:a32d1a85a830 65 array.drawChar(0,i+18,0,buff[3], 255,0,0);
RogerJKelly 0:a32d1a85a830 66 //CPU_Mon = 1;
RogerJKelly 0:a32d1a85a830 67 array.write();
RogerJKelly 0:a32d1a85a830 68
RogerJKelly 0:a32d1a85a830 69 }
RogerJKelly 0:a32d1a85a830 70
RogerJKelly 0:a32d1a85a830 71 int main()
RogerJKelly 0:a32d1a85a830 72 {
RogerJKelly 0:a32d1a85a830 73 char led_str[6];
RogerJKelly 0:a32d1a85a830 74 char c;
RogerJKelly 0:a32d1a85a830 75 int distance = 900;
RogerJKelly 0:a32d1a85a830 76 float bright = 0.2; // 20% is bright enough for most indoor use and should run without need for external power
RogerJKelly 0:a32d1a85a830 77
RogerJKelly 0:a32d1a85a830 78 array.setBrightness(bright); // set brightness to default 0.2
RogerJKelly 0:a32d1a85a830 79 array.clear();
RogerJKelly 0:a32d1a85a830 80 myled = 1;
RogerJKelly 0:a32d1a85a830 81 wait_ms(500);
RogerJKelly 0:a32d1a85a830 82 myled = 0;
RogerJKelly 0:a32d1a85a830 83 wait_ms(500);
RogerJKelly 0:a32d1a85a830 84 myled = 1;
RogerJKelly 0:a32d1a85a830 85 second_tick = false;
RogerJKelly 0:a32d1a85a830 86 timer.attach(&attime, 1);
RogerJKelly 0:a32d1a85a830 87 c = '0';
RogerJKelly 0:a32d1a85a830 88
RogerJKelly 0:a32d1a85a830 89 while (true)
RogerJKelly 0:a32d1a85a830 90 {
RogerJKelly 0:a32d1a85a830 91 while ( 1 )
RogerJKelly 0:a32d1a85a830 92 {
RogerJKelly 0:a32d1a85a830 93 /******************************
RogerJKelly 0:a32d1a85a830 94 array.clear();
RogerJKelly 0:a32d1a85a830 95 array.write();
RogerJKelly 0:a32d1a85a830 96 wait_ms(2000);
RogerJKelly 0:a32d1a85a830 97 array.drawChar(0,0,0,'V', 1,128,1);
RogerJKelly 0:a32d1a85a830 98 array.drawChar(0,5,0,'C', 1,128,1);
RogerJKelly 0:a32d1a85a830 99 array.drawChar(0,10,0,'P', 1,128,1);
RogerJKelly 0:a32d1a85a830 100 array.write();
RogerJKelly 0:a32d1a85a830 101 wait_ms(2000);
RogerJKelly 0:a32d1a85a830 102 array.clear();
RogerJKelly 0:a32d1a85a830 103 array.drawChar(0,0,0,'2', 128,128,1);
RogerJKelly 0:a32d1a85a830 104 array.drawChar(0,5,0,'8', 128,128,1);
RogerJKelly 0:a32d1a85a830 105 array.drawChar(0,10,0,'7', 128,128,1);
RogerJKelly 0:a32d1a85a830 106 array.write();
RogerJKelly 0:a32d1a85a830 107 wait_ms(2000);
RogerJKelly 0:a32d1a85a830 108 ******************************/
RogerJKelly 0:a32d1a85a830 109 /**********************************
RogerJKelly 0:a32d1a85a830 110 for (char i='A'; i<'Z'; i+=3 )
RogerJKelly 0:a32d1a85a830 111 {
RogerJKelly 0:a32d1a85a830 112 array.clear();
RogerJKelly 0:a32d1a85a830 113 array.drawChar(0,0,0,i, 1,128,1);
RogerJKelly 0:a32d1a85a830 114 array.drawChar(0,5,0,i+1, 128,1,1);
RogerJKelly 0:a32d1a85a830 115 array.drawChar(0,10,0,i+2, 1,1,128);
RogerJKelly 0:a32d1a85a830 116 array.write();
RogerJKelly 0:a32d1a85a830 117 wait_ms(2000);
RogerJKelly 0:a32d1a85a830 118 }
RogerJKelly 0:a32d1a85a830 119 *************************************/
RogerJKelly 0:a32d1a85a830 120 array.clear();
RogerJKelly 0:a32d1a85a830 121 array.drawChar(0,0,0,'?', 128,0,0);
RogerJKelly 0:a32d1a85a830 122 array.drawChar(0,5,0,'6', 128,128,128);
RogerJKelly 0:a32d1a85a830 123 array.drawChar(0,9,0,':', 128,1,1);
RogerJKelly 0:a32d1a85a830 124 array.write();
RogerJKelly 0:a32d1a85a830 125 wait_ms(2000);
RogerJKelly 0:a32d1a85a830 126
RogerJKelly 0:a32d1a85a830 127 array.clear();
RogerJKelly 0:a32d1a85a830 128 array.drawChar(0,0,0,'?', 128,0,0);
RogerJKelly 0:a32d1a85a830 129 array.drawChar(0,5,0,'1', 128,128,128);
RogerJKelly 0:a32d1a85a830 130 array.drawChar(0,9,0,';', 128,1,1);
RogerJKelly 0:a32d1a85a830 131 array.write();
RogerJKelly 0:a32d1a85a830 132 wait_ms(2000);
RogerJKelly 0:a32d1a85a830 133
RogerJKelly 0:a32d1a85a830 134 array.clear();
RogerJKelly 0:a32d1a85a830 135 array.drawChar(0,0,0,'?', 128,0,0);
RogerJKelly 0:a32d1a85a830 136 array.drawChar(0,5,0,'8', 128,128,128);
RogerJKelly 0:a32d1a85a830 137 array.drawChar(0,9,0,'^', 128,1,1);
RogerJKelly 0:a32d1a85a830 138 array.write();
RogerJKelly 0:a32d1a85a830 139 wait_ms(2000);
RogerJKelly 0:a32d1a85a830 140
RogerJKelly 0:a32d1a85a830 141 /****************************************************
RogerJKelly 0:a32d1a85a830 142 array.fillScreen(0,128, 0, 0);
RogerJKelly 0:a32d1a85a830 143 array.write();
RogerJKelly 0:a32d1a85a830 144 wait_ms(2000);
RogerJKelly 0:a32d1a85a830 145
RogerJKelly 0:a32d1a85a830 146 array.fillScreen(0,0, 128, 0);
RogerJKelly 0:a32d1a85a830 147 array.write();
RogerJKelly 0:a32d1a85a830 148 wait_ms(2000);
RogerJKelly 0:a32d1a85a830 149
RogerJKelly 0:a32d1a85a830 150 array.fillScreen(0,0, 0, 128);
RogerJKelly 0:a32d1a85a830 151 array.write();
RogerJKelly 0:a32d1a85a830 152 wait_ms(2000);
RogerJKelly 0:a32d1a85a830 153
RogerJKelly 0:a32d1a85a830 154 array.clear();
RogerJKelly 0:a32d1a85a830 155 for(int i=0; i<14; i++)
RogerJKelly 0:a32d1a85a830 156 {
RogerJKelly 0:a32d1a85a830 157 for(int n=0; n<5; n++)
RogerJKelly 0:a32d1a85a830 158 {
RogerJKelly 0:a32d1a85a830 159 array.setPixel(0, i, n, 128, 0, 128);
RogerJKelly 0:a32d1a85a830 160 array.write();
RogerJKelly 0:a32d1a85a830 161 wait_ms(200);
RogerJKelly 0:a32d1a85a830 162 }
RogerJKelly 0:a32d1a85a830 163 }
RogerJKelly 0:a32d1a85a830 164
RogerJKelly 0:a32d1a85a830 165 wait_ms(2000);
RogerJKelly 0:a32d1a85a830 166 *****************************************/
RogerJKelly 0:a32d1a85a830 167
RogerJKelly 0:a32d1a85a830 168 //for ( i =
RogerJKelly 0:a32d1a85a830 169 /*****************************************
RogerJKelly 0:a32d1a85a830 170 //sprintf( led_str, "VCP", distance, c);
RogerJKelly 0:a32d1a85a830 171 for(int i=7;i>=-16;i--)
RogerJKelly 0:a32d1a85a830 172 {
RogerJKelly 0:a32d1a85a830 173 array.clear();
RogerJKelly 0:a32d1a85a830 174 array.drawChar(0,i,0,'V', 128,128,128);
RogerJKelly 0:a32d1a85a830 175 array.drawChar(0,i+6,0,'C', 128,128,128);
RogerJKelly 0:a32d1a85a830 176 array.drawChar(0,i+12,0,'P', 128,128,128);
RogerJKelly 0:a32d1a85a830 177 array.write();
RogerJKelly 0:a32d1a85a830 178 //scroll_str( led_str, i );
RogerJKelly 0:a32d1a85a830 179 wait_ms(75);
RogerJKelly 0:a32d1a85a830 180 }
RogerJKelly 0:a32d1a85a830 181 wait_ms(100);
RogerJKelly 0:a32d1a85a830 182 for(int i=7;i>=-16;i--)
RogerJKelly 0:a32d1a85a830 183 {
RogerJKelly 0:a32d1a85a830 184 array.clear();
RogerJKelly 0:a32d1a85a830 185 array.drawChar(0,i,0,'2', 128,128,128);
RogerJKelly 0:a32d1a85a830 186 array.drawChar(0,i+6,0,'7', 128,128,128);
RogerJKelly 0:a32d1a85a830 187 array.drawChar(0,i+12,0,'1', 128,128,128);
RogerJKelly 0:a32d1a85a830 188 array.write();
RogerJKelly 0:a32d1a85a830 189 //scroll_str( led_str, i );
RogerJKelly 0:a32d1a85a830 190 wait_ms(75);
RogerJKelly 0:a32d1a85a830 191 }
RogerJKelly 0:a32d1a85a830 192 wait_ms(100);
RogerJKelly 0:a32d1a85a830 193 array.clear();
RogerJKelly 0:a32d1a85a830 194 array.showImageRGB(0, 1, 255, 255, 0);
RogerJKelly 0:a32d1a85a830 195 array.write();
RogerJKelly 0:a32d1a85a830 196 wait_ms(400);
RogerJKelly 0:a32d1a85a830 197 *******************************************/
RogerJKelly 0:a32d1a85a830 198 //wait_ms(4000);
RogerJKelly 0:a32d1a85a830 199 }
RogerJKelly 0:a32d1a85a830 200 //sprintf( led_str, "%3d%c", distance, c);
RogerJKelly 0:a32d1a85a830 201 /*************************************************
RogerJKelly 0:a32d1a85a830 202 while ( 1 )
RogerJKelly 0:a32d1a85a830 203 {
RogerJKelly 0:a32d1a85a830 204 if ( distance > 500 ) c = '$';
RogerJKelly 0:a32d1a85a830 205 else c = '&';
RogerJKelly 0:a32d1a85a830 206 sprintf( led_str, "%3d%c", distance, c);
RogerJKelly 0:a32d1a85a830 207 for(int i=7;i>=-24;i--)
RogerJKelly 0:a32d1a85a830 208 {
RogerJKelly 0:a32d1a85a830 209 //myled = 1;
RogerJKelly 0:a32d1a85a830 210 //CPU_Mon = 1;
RogerJKelly 0:a32d1a85a830 211 //array.clear();
RogerJKelly 0:a32d1a85a830 212 //array.drawChar(0,i,0,'2', 128,128,128);
RogerJKelly 0:a32d1a85a830 213 //array.drawChar(0,i+6,0,'4', 128,128,128);
RogerJKelly 0:a32d1a85a830 214 //array.drawChar(0,i+12,0,'8', 128,128,128);
RogerJKelly 0:a32d1a85a830 215 //array.drawChar(0,i+18,0,'$', 255,0,0);
RogerJKelly 0:a32d1a85a830 216 //CPU_Mon = 1;
RogerJKelly 0:a32d1a85a830 217 //array.write();
RogerJKelly 0:a32d1a85a830 218 //myled = 0;
RogerJKelly 0:a32d1a85a830 219 //CPU_Mon = 0;
RogerJKelly 0:a32d1a85a830 220 scroll_str( led_str, i );
RogerJKelly 0:a32d1a85a830 221 wait_ms(75);
RogerJKelly 0:a32d1a85a830 222 }
RogerJKelly 0:a32d1a85a830 223 //wait_ms(500);
RogerJKelly 0:a32d1a85a830 224 //array.clear();
RogerJKelly 0:a32d1a85a830 225 //array.showImageRGB(0, 1, 255, 255, 0);
RogerJKelly 0:a32d1a85a830 226 //array.drawChar(0,i+18,0,'$', 255,0,0);
RogerJKelly 0:a32d1a85a830 227 //array.write();
RogerJKelly 0:a32d1a85a830 228 //wait_ms(500);
RogerJKelly 0:a32d1a85a830 229 distance -= 108;
RogerJKelly 0:a32d1a85a830 230 if ( distance < 100 ) distance = 900;
RogerJKelly 0:a32d1a85a830 231 }
RogerJKelly 0:a32d1a85a830 232
RogerJKelly 0:a32d1a85a830 233 if ( second_tick == true )
RogerJKelly 0:a32d1a85a830 234 {
RogerJKelly 0:a32d1a85a830 235 second_tick = false;
RogerJKelly 0:a32d1a85a830 236 array.clear();
RogerJKelly 0:a32d1a85a830 237 array.drawChar(0,0,1,c, 128,128,128);
RogerJKelly 0:a32d1a85a830 238 if ( c > '7' )
RogerJKelly 0:a32d1a85a830 239 array.drawChar(0,4,0,'^', 255,0,0);
RogerJKelly 0:a32d1a85a830 240 else if ( c > '4' )
RogerJKelly 0:a32d1a85a830 241 array.drawChar(0,4,0,':', 255,0,0);
RogerJKelly 0:a32d1a85a830 242 else if ( c == '3' )
RogerJKelly 0:a32d1a85a830 243 array.drawChar(0,5,1,'>', 255,0,0);
RogerJKelly 0:a32d1a85a830 244 else if ( c == '2' )
RogerJKelly 0:a32d1a85a830 245 array.drawChar(0,5,1,'<', 255,0,0);
RogerJKelly 0:a32d1a85a830 246 else
RogerJKelly 0:a32d1a85a830 247 array.drawChar(0,4,0,';', 255,0,0);
RogerJKelly 0:a32d1a85a830 248 array.write();
RogerJKelly 0:a32d1a85a830 249 c++;
RogerJKelly 0:a32d1a85a830 250 if ( c > '9' ) c = '0';
RogerJKelly 0:a32d1a85a830 251 }
RogerJKelly 0:a32d1a85a830 252 *******************************************/
RogerJKelly 0:a32d1a85a830 253 }
RogerJKelly 0:a32d1a85a830 254 }