work fine

Dependencies:   mbed

Committer:
lixianyu
Date:
Wed Jun 01 13:38:30 2016 +0000
Revision:
1:14b7c3a3ec60
Parent:
0:5ca227682ee7
Child:
2:487a727d6181
??????????0,0?????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lixianyu 0:5ca227682ee7 1 // 本作品采用知识共享 署名-非商业性使用-相同方式共享 3.0 未本地化版本 许可协议进行许可
lixianyu 0:5ca227682ee7 2 // 访问 http://creativecommons.org/licenses/by-nc-sa/3.0/ 查看该许可协议
lixianyu 0:5ca227682ee7 3 // ==============
lixianyu 0:5ca227682ee7 4
lixianyu 0:5ca227682ee7 5 // 版权所有:
lixianyu 0:5ca227682ee7 6 // @老潘orz wasdpkj@hotmail.com
lixianyu 0:5ca227682ee7 7 // ==============
lixianyu 0:5ca227682ee7 8
lixianyu 0:5ca227682ee7 9 // Microduino-IDE
lixianyu 0:5ca227682ee7 10 // ==============
lixianyu 0:5ca227682ee7 11 // Microduino Getting start:
lixianyu 0:5ca227682ee7 12 // http://www.microduino.cc/download/
lixianyu 0:5ca227682ee7 13
lixianyu 0:5ca227682ee7 14 // Microduino IDE Support:
lixianyu 0:5ca227682ee7 15 // https://github.com/wasdpkj/Microduino-IDE-Support/
lixianyu 0:5ca227682ee7 16
lixianyu 0:5ca227682ee7 17 // ==============
lixianyu 0:5ca227682ee7 18 // Microduino wiki:
lixianyu 0:5ca227682ee7 19 // http://wiki.microduino.cc
lixianyu 0:5ca227682ee7 20
lixianyu 0:5ca227682ee7 21 // ==============
lixianyu 0:5ca227682ee7 22 // E-mail:
lixianyu 0:5ca227682ee7 23 // Kejia Pan
lixianyu 0:5ca227682ee7 24 // pankejia@microduino.cc
lixianyu 0:5ca227682ee7 25
lixianyu 0:5ca227682ee7 26 // ==============
lixianyu 0:5ca227682ee7 27 // Weibo:
lixianyu 0:5ca227682ee7 28 // @老潘orz
lixianyu 0:5ca227682ee7 29
lixianyu 0:5ca227682ee7 30 #define _MAIN_CPP
lixianyu 0:5ca227682ee7 31
lixianyu 0:5ca227682ee7 32 #include "mbed.h"
lixianyu 0:5ca227682ee7 33 #include "MicroduinoPinNames.h"
lixianyu 0:5ca227682ee7 34 #include "Microduino_Matrix.h"
lixianyu 0:5ca227682ee7 35
lixianyu 0:5ca227682ee7 36 uint8_t Addr[MatrixPix_X][MatrixPix_Y] = {
lixianyu 0:5ca227682ee7 37 { 64}
lixianyu 0:5ca227682ee7 38 };
lixianyu 0:5ca227682ee7 39
lixianyu 0:5ca227682ee7 40 Matrix display = Matrix(Addr);
lixianyu 0:5ca227682ee7 41 AnalogIn gAnalogIn(A0);
lixianyu 0:5ca227682ee7 42 Timer g_Timer;
lixianyu 0:5ca227682ee7 43
lixianyu 0:5ca227682ee7 44 static const uint8_t logoA[] = { //低位在前 逐行
lixianyu 0:5ca227682ee7 45 0x00, 0x66, 0x66, 0xDB, 0xDB, 0xDB, 0xDB, 0x00
lixianyu 0:5ca227682ee7 46 };
lixianyu 0:5ca227682ee7 47
lixianyu 0:5ca227682ee7 48 static const uint8_t logoB[] = { //BMP File
lixianyu 0:5ca227682ee7 49 0x42, 0x4D, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00,
lixianyu 0:5ca227682ee7 50 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00,
lixianyu 0:5ca227682ee7 51 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00, 0x20, 0x2E, 0x00, 0x00, 0x20, 0x2E, 0x00, 0x00, 0x00, 0x00,
lixianyu 0:5ca227682ee7 52 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xFF, 0xEE, 0xEE, 0xEE,
lixianyu 0:5ca227682ee7 53 0xEE, 0xEE, 0xFF, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xFF, 0xEE, 0xEE, 0xEE, 0xEE, 0xDD, 0xEE, 0xEE,
lixianyu 0:5ca227682ee7 54 0xEE, 0x4D, 0x8E, 0x65, 0x26, 0x94, 0x50, 0x26, 0x94, 0x50, 0x26, 0x94, 0x50, 0x26, 0x94, 0x50,
lixianyu 0:5ca227682ee7 55 0x24, 0x60, 0x51, 0xEE, 0xEE, 0xDD, 0xEE, 0xEE, 0xEE, 0xDD, 0xBB, 0x99, 0xDD, 0xBB, 0x99, 0x4B,
lixianyu 0:5ca227682ee7 56 0x94, 0xD4, 0x2B, 0x69, 0x96, 0xCC, 0xBB, 0x84, 0xCC, 0xAA, 0x88, 0xFF, 0xEE, 0xDD, 0xFF, 0xEE,
lixianyu 0:5ca227682ee7 57 0xEE, 0xC7, 0xBB, 0x99, 0x50, 0xB2, 0x70, 0x26, 0x94, 0x50, 0x26, 0x94, 0x50, 0x47, 0x94, 0x4D,
lixianyu 0:5ca227682ee7 58 0xCC, 0xAA, 0x88, 0xEE, 0xEE, 0xDD, 0xEE, 0xEE, 0xEE, 0xDB, 0xCC, 0xB3, 0x53, 0xBB, 0x88, 0x53,
lixianyu 0:5ca227682ee7 59 0xBB, 0x88, 0x53, 0xBB, 0x88, 0x26, 0x94, 0x50, 0xB5, 0xAA, 0x92, 0xEE, 0xEE, 0xDD, 0xFF, 0xEE,
lixianyu 0:5ca227682ee7 60 0xEE, 0xDD, 0xDD, 0xCC, 0x53, 0xBB, 0x88, 0x3A, 0xD5, 0x95, 0x53, 0xBB, 0x88, 0x48, 0xAF, 0x50,
lixianyu 0:5ca227682ee7 61 0xCC, 0xAA, 0x99, 0xEE, 0xEE, 0xDD, 0xEE, 0xEE, 0xEE, 0xE2, 0xCB, 0xCD, 0x53, 0xBB, 0x88, 0x53,
lixianyu 0:5ca227682ee7 62 0xBB, 0x88, 0x3A, 0xD5, 0x95, 0x50, 0xB2, 0x70, 0xD6, 0xBB, 0xB1, 0xFF, 0xEE, 0xDD, 0xDD, 0xEE,
lixianyu 0:5ca227682ee7 63 0xEE, 0xEE, 0xEE, 0xEE, 0xFF, 0xFF, 0xEE, 0xEE, 0xEE, 0xEE, 0xFF, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
lixianyu 0:5ca227682ee7 64 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xDD, 0x00, 0x00,
lixianyu 0:5ca227682ee7 65 };
lixianyu 0:5ca227682ee7 66
lixianyu 1:14b7c3a3ec60 67 DigitalOut myled(D13);
lixianyu 0:5ca227682ee7 68 #define delay wait_ms
lixianyu 0:5ca227682ee7 69 void randomSeed(unsigned long seed)
lixianyu 0:5ca227682ee7 70 {
lixianyu 0:5ca227682ee7 71 if (seed != 0) {
lixianyu 0:5ca227682ee7 72 //srandom(seed);
lixianyu 0:5ca227682ee7 73 srand(seed);
lixianyu 0:5ca227682ee7 74 }
lixianyu 0:5ca227682ee7 75 }
lixianyu 0:5ca227682ee7 76
lixianyu 0:5ca227682ee7 77 long random(long howbig)
lixianyu 0:5ca227682ee7 78 {
lixianyu 0:5ca227682ee7 79 if (howbig == 0) {
lixianyu 0:5ca227682ee7 80 return 0;
lixianyu 0:5ca227682ee7 81 }
lixianyu 0:5ca227682ee7 82 return rand() % howbig;
lixianyu 0:5ca227682ee7 83 }
lixianyu 0:5ca227682ee7 84
lixianyu 0:5ca227682ee7 85 long random(long howsmall, long howbig)
lixianyu 0:5ca227682ee7 86 {
lixianyu 0:5ca227682ee7 87 if (howsmall >= howbig) {
lixianyu 0:5ca227682ee7 88 return howsmall;
lixianyu 0:5ca227682ee7 89 }
lixianyu 0:5ca227682ee7 90 long diff = howbig - howsmall;
lixianyu 0:5ca227682ee7 91 return random(diff) + howsmall;
lixianyu 0:5ca227682ee7 92 }
lixianyu 0:5ca227682ee7 93
lixianyu 1:14b7c3a3ec60 94 Serial pc(P0_4,P0_0);
lixianyu 1:14b7c3a3ec60 95 #if 0
lixianyu 0:5ca227682ee7 96 int main()
lixianyu 0:5ca227682ee7 97 {
lixianyu 0:5ca227682ee7 98 int i;
lixianyu 0:5ca227682ee7 99 char buf[32];
lixianyu 1:14b7c3a3ec60 100 myled = 0;
lixianyu 1:14b7c3a3ec60 101 pc.baud(115200);
lixianyu 0:5ca227682ee7 102 g_Timer.start();
lixianyu 1:14b7c3a3ec60 103 #if 1
lixianyu 0:5ca227682ee7 104 //getDeviceAddr
lixianyu 0:5ca227682ee7 105 for (int a = 0; a < display.getMatrixNum(); a++) {
lixianyu 1:14b7c3a3ec60 106 pc.printf("device add = %d", display.getDeviceAddr(a));
lixianyu 1:14b7c3a3ec60 107 pc.printf(" ");
lixianyu 0:5ca227682ee7 108 }
lixianyu 1:14b7c3a3ec60 109 pc.printf("\r\n");
lixianyu 0:5ca227682ee7 110 #endif
lixianyu 1:14b7c3a3ec60 111 myled = !myled;
lixianyu 0:5ca227682ee7 112 display.clearDisplay();
lixianyu 0:5ca227682ee7 113 //setLedColor
lixianyu 0:5ca227682ee7 114 for (int y = 0; y < display.getHeight() * 8; y++) {
lixianyu 0:5ca227682ee7 115 for (int x = 0; x < display.getWidth() * 8; x++) {
lixianyu 1:14b7c3a3ec60 116 randomSeed(x);
lixianyu 0:5ca227682ee7 117 display.setLedColor(x, y, random(0, 255), random(0, 255), random(0, 255)); //x, y, r, g, b
lixianyu 1:14b7c3a3ec60 118 delay(1000);
lixianyu 0:5ca227682ee7 119 }
lixianyu 0:5ca227682ee7 120 }
lixianyu 0:5ca227682ee7 121 delay(1000);
lixianyu 1:14b7c3a3ec60 122 myled = !myled;
lixianyu 0:5ca227682ee7 123
lixianyu 0:5ca227682ee7 124 //setLed
lixianyu 0:5ca227682ee7 125 display.clearDisplay();
lixianyu 0:5ca227682ee7 126 display.setColor(0, 255, 0);
lixianyu 0:5ca227682ee7 127 for (int y = 0; y < display.getHeight() * 8; y++) {
lixianyu 0:5ca227682ee7 128 for (int x = 0; x < display.getWidth() * 8; x++) {
lixianyu 0:5ca227682ee7 129 display.setLed(x, y, true); //x, y, sta
lixianyu 0:5ca227682ee7 130 delay(5);
lixianyu 0:5ca227682ee7 131 }
lixianyu 0:5ca227682ee7 132 }
lixianyu 0:5ca227682ee7 133 delay(1000);
lixianyu 1:14b7c3a3ec60 134 myled = !myled;
lixianyu 0:5ca227682ee7 135
lixianyu 0:5ca227682ee7 136 //setLed
lixianyu 0:5ca227682ee7 137 display.clearDisplay();
lixianyu 0:5ca227682ee7 138 display.setColor(255, 0, 0);
lixianyu 0:5ca227682ee7 139 for (int y = 0; y < display.getHeight() * 8; y++) {
lixianyu 0:5ca227682ee7 140 for (int x = 0; x < display.getWidth() * 8; x++) {
lixianyu 0:5ca227682ee7 141 display.setLed(x, y, true); //x, y, sta
lixianyu 0:5ca227682ee7 142 delay(5);
lixianyu 0:5ca227682ee7 143 }
lixianyu 0:5ca227682ee7 144 }
lixianyu 0:5ca227682ee7 145 delay(1000);
lixianyu 1:14b7c3a3ec60 146 myled = !myled;
lixianyu 0:5ca227682ee7 147
lixianyu 0:5ca227682ee7 148 display.clearDisplay();
lixianyu 0:5ca227682ee7 149 display.setColor(0, 255, 0);
lixianyu 0:5ca227682ee7 150 display.drawBMP(0, 0, 8, 8, logoA); //x,y,w,h,data
lixianyu 0:5ca227682ee7 151 delay(2000);
lixianyu 1:14b7c3a3ec60 152 myled = !myled;
lixianyu 0:5ca227682ee7 153
lixianyu 0:5ca227682ee7 154 display.clearDisplay();
lixianyu 0:5ca227682ee7 155 //Windows Bitmap (BMP) file,24bit
lixianyu 0:5ca227682ee7 156 display.drawBMP(0, 0, logoB); //x,y,data
lixianyu 0:5ca227682ee7 157 delay(2000);
lixianyu 1:14b7c3a3ec60 158 myled = !myled;
lixianyu 0:5ca227682ee7 159
lixianyu 0:5ca227682ee7 160 //clearColor
lixianyu 0:5ca227682ee7 161 display.clearColor();
lixianyu 0:5ca227682ee7 162 //writeString H
lixianyu 0:5ca227682ee7 163 display.writeString("Microduino", MODE_H, 20, 0); //string, MODE, time ,y
lixianyu 0:5ca227682ee7 164 display.clearDisplay();
lixianyu 0:5ca227682ee7 165 //writeString V
lixianyu 0:5ca227682ee7 166 display.writeString("Microduino", MODE_V, 20, 0); //string, MODE, time ,x
lixianyu 0:5ca227682ee7 167 display.clearDisplay();
lixianyu 1:14b7c3a3ec60 168 myled = !myled;
lixianyu 0:5ca227682ee7 169 while(1) {
lixianyu 1:14b7c3a3ec60 170 display.setColor(random(0, 255), random(0, 255), random(0, 255));
lixianyu 0:5ca227682ee7 171
lixianyu 0:5ca227682ee7 172 display.drawBox(0, 0, 8, 8); //x,y,w,h
lixianyu 0:5ca227682ee7 173 delay(2000);
lixianyu 0:5ca227682ee7 174 display.clearDisplay();
lixianyu 0:5ca227682ee7 175
lixianyu 0:5ca227682ee7 176 display.drawRBox(0, 0, 8, 8, 2); //x,y,w,h,r
lixianyu 0:5ca227682ee7 177 delay(2000);
lixianyu 0:5ca227682ee7 178 display.clearDisplay();
lixianyu 0:5ca227682ee7 179
lixianyu 0:5ca227682ee7 180 display.drawFrame(0, 0, 8, 8); //x,y,w,h
lixianyu 0:5ca227682ee7 181 delay(2000);
lixianyu 0:5ca227682ee7 182 display.clearDisplay();
lixianyu 0:5ca227682ee7 183
lixianyu 0:5ca227682ee7 184 display.drawRFrame(0, 0, 8, 8, 2); //x,y,w,h,r
lixianyu 0:5ca227682ee7 185 delay(2000);
lixianyu 0:5ca227682ee7 186 display.clearDisplay();
lixianyu 0:5ca227682ee7 187
lixianyu 0:5ca227682ee7 188 display.drawCircle(3, 3, 3); //x,y,r
lixianyu 0:5ca227682ee7 189 delay(2000);
lixianyu 0:5ca227682ee7 190 display.clearDisplay();
lixianyu 0:5ca227682ee7 191
lixianyu 0:5ca227682ee7 192 display.drawDisc(3, 3, 3); //x,y,r
lixianyu 0:5ca227682ee7 193 delay(2000);
lixianyu 0:5ca227682ee7 194 display.clearDisplay();
lixianyu 0:5ca227682ee7 195
lixianyu 0:5ca227682ee7 196 display.drawLine(0, 0, 7, 7); //x,y,x1,y1
lixianyu 0:5ca227682ee7 197 delay(2000);
lixianyu 0:5ca227682ee7 198 display.clearDisplay();
lixianyu 0:5ca227682ee7 199
lixianyu 0:5ca227682ee7 200 i = display.getStringWidth("mCookie!");
lixianyu 0:5ca227682ee7 201 display.setColor(255, 255, 0);
lixianyu 0:5ca227682ee7 202 display.setFontMode(MODE_H);
lixianyu 0:5ca227682ee7 203 strcpy(buf, "mCookie!");
lixianyu 0:5ca227682ee7 204 for (int a = display.getWidth() * 8; a > -i - display.getWidth() * 8; a--) {
lixianyu 0:5ca227682ee7 205 display.setCursor(a, 0); //x, y
lixianyu 0:5ca227682ee7 206 display.print(buf);
lixianyu 0:5ca227682ee7 207 delay(20);
lixianyu 0:5ca227682ee7 208 }
lixianyu 0:5ca227682ee7 209 display.clearDisplay();
lixianyu 0:5ca227682ee7 210
lixianyu 0:5ca227682ee7 211 i = display.getStringHeight("mCookie!");
lixianyu 0:5ca227682ee7 212 display.setColor(255, 0, 255);
lixianyu 0:5ca227682ee7 213 display.setFontMode(MODE_V);
lixianyu 0:5ca227682ee7 214 for (int a = display.getHeight() * 8; a > -i - display.getHeight() * 8; a--) {
lixianyu 0:5ca227682ee7 215 display.setCursor(0, a); //x, y
lixianyu 0:5ca227682ee7 216 display.print("mCookie!");
lixianyu 0:5ca227682ee7 217 delay(20);
lixianyu 0:5ca227682ee7 218 }
lixianyu 0:5ca227682ee7 219 display.clearDisplay();
lixianyu 0:5ca227682ee7 220
lixianyu 0:5ca227682ee7 221 //Print
lixianyu 0:5ca227682ee7 222 int timer = g_Timer.read_ms();
lixianyu 0:5ca227682ee7 223 display.setColor(0, 255, 255);
lixianyu 0:5ca227682ee7 224 display.setFontMode(MODE_H);
lixianyu 0:5ca227682ee7 225 while (g_Timer.read_ms() - timer < 5000) {
lixianyu 0:5ca227682ee7 226 display.setCursor(0, 0); //x, y
lixianyu 0:5ca227682ee7 227 display.print((g_Timer.read_ms() - timer) / 100);
lixianyu 0:5ca227682ee7 228 delay(20);
lixianyu 0:5ca227682ee7 229 }
lixianyu 0:5ca227682ee7 230 display.clearDisplay();
lixianyu 0:5ca227682ee7 231
lixianyu 0:5ca227682ee7 232 //String to char*
lixianyu 0:5ca227682ee7 233 String _buffer_data = "Analog(A0):";
lixianyu 0:5ca227682ee7 234 //_buffer_data += analogRead(A0);
lixianyu 0:5ca227682ee7 235 _buffer_data += gAnalogIn.read_u16();
lixianyu 0:5ca227682ee7 236
lixianyu 0:5ca227682ee7 237 char buffer_data[128];
lixianyu 0:5ca227682ee7 238 for (int a = 0; a < 128; a++) {
lixianyu 0:5ca227682ee7 239 buffer_data[a] = NULL;
lixianyu 0:5ca227682ee7 240 }
lixianyu 0:5ca227682ee7 241
lixianyu 0:5ca227682ee7 242 for (int a = 0; a < _buffer_data.length(); a++) {
lixianyu 0:5ca227682ee7 243 buffer_data[a] = _buffer_data[a];
lixianyu 0:5ca227682ee7 244 }
lixianyu 0:5ca227682ee7 245
lixianyu 0:5ca227682ee7 246 display.setColor(255, 255, 255);
lixianyu 0:5ca227682ee7 247 display.clearDisplay();
lixianyu 0:5ca227682ee7 248 display.writeString(buffer_data, MODE_H, 50, 1);
lixianyu 1:14b7c3a3ec60 249 myled = !myled;
lixianyu 1:14b7c3a3ec60 250 }
lixianyu 1:14b7c3a3ec60 251 }
lixianyu 1:14b7c3a3ec60 252 #elif 0
lixianyu 1:14b7c3a3ec60 253 int main()
lixianyu 1:14b7c3a3ec60 254 {
lixianyu 1:14b7c3a3ec60 255 int i;
lixianyu 1:14b7c3a3ec60 256 char buf[32];
lixianyu 1:14b7c3a3ec60 257 myled = 0;
lixianyu 1:14b7c3a3ec60 258 pc.baud(115200);
lixianyu 1:14b7c3a3ec60 259 g_Timer.start();
lixianyu 1:14b7c3a3ec60 260 pc.printf("rand max = %d\r\n", RAND_MAX);
lixianyu 1:14b7c3a3ec60 261 #if 1
lixianyu 1:14b7c3a3ec60 262 //getDeviceAddr
lixianyu 1:14b7c3a3ec60 263 for (int a = 0; a < display.getMatrixNum(); a++) {
lixianyu 1:14b7c3a3ec60 264 pc.printf("device add = %d", display.getDeviceAddr(a));
lixianyu 1:14b7c3a3ec60 265 pc.printf(" ");
lixianyu 1:14b7c3a3ec60 266 }
lixianyu 1:14b7c3a3ec60 267 pc.printf("\r\n");
lixianyu 1:14b7c3a3ec60 268 //wait(5.0);
lixianyu 1:14b7c3a3ec60 269 pc.printf("Let us go into while\r\n");
lixianyu 1:14b7c3a3ec60 270 #endif
lixianyu 1:14b7c3a3ec60 271 while (1) {
lixianyu 1:14b7c3a3ec60 272 myled = 1;
lixianyu 1:14b7c3a3ec60 273 //wait(2.0);
lixianyu 1:14b7c3a3ec60 274 //pc.printf("clearDisplay....\r\n");
lixianyu 1:14b7c3a3ec60 275 display.clearDisplay();
lixianyu 1:14b7c3a3ec60 276 int16_t height = display.getHeight();
lixianyu 1:14b7c3a3ec60 277 int16_t width = display.getWidth();
lixianyu 1:14b7c3a3ec60 278 //pc.printf("height = %d, width = %d\r\n", height, width);
lixianyu 1:14b7c3a3ec60 279 for (int y = 0; y < display.getHeight() * 8; y++) {
lixianyu 1:14b7c3a3ec60 280 for (int x = 0; x < display.getWidth() * 8; x++) {
lixianyu 1:14b7c3a3ec60 281 randomSeed(23);
lixianyu 1:14b7c3a3ec60 282 //display.setLedColor(x, y, random(0, 255), random(0, 255), random(0, 255)); //x, y, r, g, b
lixianyu 1:14b7c3a3ec60 283 display.setLedColor(x, y, 156, 200, 56); //x, y, r, g, b
lixianyu 1:14b7c3a3ec60 284 wait_ms(5);
lixianyu 1:14b7c3a3ec60 285 }
lixianyu 1:14b7c3a3ec60 286 }
lixianyu 1:14b7c3a3ec60 287 myled = 0;
lixianyu 1:14b7c3a3ec60 288 wait(1);
lixianyu 1:14b7c3a3ec60 289 }
lixianyu 1:14b7c3a3ec60 290 }
lixianyu 1:14b7c3a3ec60 291 #elif 0
lixianyu 1:14b7c3a3ec60 292 I2C i2c(P0_11, P0_10);
lixianyu 1:14b7c3a3ec60 293 void main()
lixianyu 1:14b7c3a3ec60 294 {
lixianyu 1:14b7c3a3ec60 295 pc.baud(115200);
lixianyu 1:14b7c3a3ec60 296 pc.printf("Hello Microduino!\r\n");
lixianyu 1:14b7c3a3ec60 297 wait(3.5);
lixianyu 1:14b7c3a3ec60 298 i2c.frequency(400000);
lixianyu 1:14b7c3a3ec60 299 //i2c.start();
lixianyu 1:14b7c3a3ec60 300 uint8_t address = 64;
lixianyu 1:14b7c3a3ec60 301 char cmd = 0x60;
lixianyu 1:14b7c3a3ec60 302 int ret = i2c.write(address<<1, &cmd, 1, false);
lixianyu 1:14b7c3a3ec60 303 //int ret = i2c.write(0x60);
lixianyu 1:14b7c3a3ec60 304 pc.printf("clear led ret = %d\r\n", ret);
lixianyu 1:14b7c3a3ec60 305 //i2c.stop();
lixianyu 1:14b7c3a3ec60 306
lixianyu 1:14b7c3a3ec60 307 uint8_t _value_r = random(0, 255);
lixianyu 1:14b7c3a3ec60 308 uint8_t _value_g = random(0, 255);
lixianyu 1:14b7c3a3ec60 309 uint8_t _value_b = random(0, 255);
lixianyu 1:14b7c3a3ec60 310 uint8_t temp[4];
lixianyu 1:14b7c3a3ec60 311 //temp[0] = 0x80 | (_row << 3) | _col;
lixianyu 1:14b7c3a3ec60 312 temp[1] = _value_b / 8;
lixianyu 1:14b7c3a3ec60 313 temp[2] = 0x20 | _value_g / 8;
lixianyu 1:14b7c3a3ec60 314 temp[3] = 0x40 | _value_r / 8;
lixianyu 1:14b7c3a3ec60 315 randomSeed(23);
lixianyu 1:14b7c3a3ec60 316 while (1) {
lixianyu 1:14b7c3a3ec60 317 i2c.write(address<<1, &cmd, 1, false);
lixianyu 1:14b7c3a3ec60 318 wait_ms(900);
lixianyu 1:14b7c3a3ec60 319 myled = !myled;
lixianyu 1:14b7c3a3ec60 320 for (int y = 0; y < display.getHeight() * 8; y++) {
lixianyu 1:14b7c3a3ec60 321 for (int x = 0; x < display.getWidth() * 8; x++) {
lixianyu 1:14b7c3a3ec60 322 //randomSeed(23);
lixianyu 1:14b7c3a3ec60 323 //display.setLedColor(x, y, random(0, 255), random(0, 255), random(0, 255)); //x, y, r, g, b
lixianyu 1:14b7c3a3ec60 324 //display.setLedColor(x, y, 156, 200, 56); //x, y, r, g, b
lixianyu 1:14b7c3a3ec60 325 _value_r = random(0, 255);
lixianyu 1:14b7c3a3ec60 326 _value_g = random(0, 255);
lixianyu 1:14b7c3a3ec60 327 _value_b = random(0, 255);
lixianyu 1:14b7c3a3ec60 328 temp[0] = 0x80 | (x << 3) | y;
lixianyu 1:14b7c3a3ec60 329 temp[1] = _value_b / 8;
lixianyu 1:14b7c3a3ec60 330 temp[2] = 0x20 | _value_g / 8;
lixianyu 1:14b7c3a3ec60 331 temp[3] = 0x40 | _value_r / 8;
lixianyu 1:14b7c3a3ec60 332 i2c.write(address<<1, (char*)temp, 4, false);
lixianyu 1:14b7c3a3ec60 333 wait_ms(5);
lixianyu 1:14b7c3a3ec60 334 }
lixianyu 1:14b7c3a3ec60 335 }
lixianyu 1:14b7c3a3ec60 336 wait(1.9);
lixianyu 0:5ca227682ee7 337 }
lixianyu 0:5ca227682ee7 338 }
lixianyu 1:14b7c3a3ec60 339 #elif 0
lixianyu 1:14b7c3a3ec60 340 void main()
lixianyu 1:14b7c3a3ec60 341 {
lixianyu 1:14b7c3a3ec60 342 randomSeed(gAnalogIn.read_u16());
lixianyu 1:14b7c3a3ec60 343 while (1) {
lixianyu 1:14b7c3a3ec60 344 display.setColor(random(0, 255), random(0, 255), random(0, 255));
lixianyu 1:14b7c3a3ec60 345 display.drawBox(0, 0, 8, 8); //x,y,w,h
lixianyu 1:14b7c3a3ec60 346 delay(2000);
lixianyu 1:14b7c3a3ec60 347 display.clearDisplay();
lixianyu 1:14b7c3a3ec60 348 delay(599);
lixianyu 1:14b7c3a3ec60 349 //randomSeed(gAnalogIn.read_u16());
lixianyu 1:14b7c3a3ec60 350 }
lixianyu 1:14b7c3a3ec60 351 }
lixianyu 1:14b7c3a3ec60 352 #else
lixianyu 1:14b7c3a3ec60 353 uint8_t donghua[128] = {
lixianyu 1:14b7c3a3ec60 354 0,0, 1,0, 2,0, 3,0, 4,0, 5,0, 6,0, 7,0,
lixianyu 1:14b7c3a3ec60 355 7,1, 7,2, 7,3, 7,4, 7,5, 7,6, 7,7,
lixianyu 1:14b7c3a3ec60 356 6,7, 5,7, 4,7, 3,7, 2,7, 1,7, 0,7,
lixianyu 1:14b7c3a3ec60 357 0,6, 0,5, 0,4, 0,3, 0,2, 0,1,
lixianyu 1:14b7c3a3ec60 358 1,1, 2,1, 3,1, 4,1, 5,1, 6,1,
lixianyu 1:14b7c3a3ec60 359 };
lixianyu 1:14b7c3a3ec60 360 void main()
lixianyu 1:14b7c3a3ec60 361 {
lixianyu 1:14b7c3a3ec60 362 uint8_t r,g,b;
lixianyu 1:14b7c3a3ec60 363 randomSeed(gAnalogIn.read_u16());
lixianyu 1:14b7c3a3ec60 364 display.clearDisplay();
lixianyu 1:14b7c3a3ec60 365 int8_t x = 0;
lixianyu 1:14b7c3a3ec60 366 int8_t y = 0;
lixianyu 1:14b7c3a3ec60 367 int8_t xMax = 7;
lixianyu 1:14b7c3a3ec60 368 int8_t yMax = 7;
lixianyu 1:14b7c3a3ec60 369 int8_t xMin = 0;
lixianyu 1:14b7c3a3ec60 370 int8_t yMin = 0;
lixianyu 1:14b7c3a3ec60 371 uint8_t state = 0;
lixianyu 1:14b7c3a3ec60 372 r = random(0, 255);
lixianyu 1:14b7c3a3ec60 373 g = random(0, 255);
lixianyu 1:14b7c3a3ec60 374 b = random(0, 255);
lixianyu 1:14b7c3a3ec60 375 while (true) {
lixianyu 1:14b7c3a3ec60 376 display.setLedColor(x, y, r, g, b); //x, y, r, g, b
lixianyu 1:14b7c3a3ec60 377 delay(50);
lixianyu 1:14b7c3a3ec60 378 if (x == 3 && y == 4) {
lixianyu 1:14b7c3a3ec60 379 x = 0;
lixianyu 1:14b7c3a3ec60 380 y = 0;
lixianyu 1:14b7c3a3ec60 381 xMax = 7;
lixianyu 1:14b7c3a3ec60 382 yMax = 7;
lixianyu 1:14b7c3a3ec60 383 xMin = 0;
lixianyu 1:14b7c3a3ec60 384 yMin = 0;
lixianyu 1:14b7c3a3ec60 385 display.clearDisplay();
lixianyu 1:14b7c3a3ec60 386 delay(500);
lixianyu 1:14b7c3a3ec60 387 state = 0;
lixianyu 1:14b7c3a3ec60 388 r = random(0, 255);
lixianyu 1:14b7c3a3ec60 389 g = random(0, 255);
lixianyu 1:14b7c3a3ec60 390 b = random(0, 255);
lixianyu 1:14b7c3a3ec60 391 display.setLedColor(0, 0, r, g, b); //x, y, r, g, b
lixianyu 1:14b7c3a3ec60 392 //continue;
lixianyu 1:14b7c3a3ec60 393 }
lixianyu 1:14b7c3a3ec60 394
lixianyu 1:14b7c3a3ec60 395 if (state == 0) {
lixianyu 1:14b7c3a3ec60 396 x++;
lixianyu 1:14b7c3a3ec60 397 if (x > xMax) {
lixianyu 1:14b7c3a3ec60 398 state = 1;
lixianyu 1:14b7c3a3ec60 399 x = xMax;
lixianyu 1:14b7c3a3ec60 400 y++;
lixianyu 1:14b7c3a3ec60 401 }
lixianyu 1:14b7c3a3ec60 402 } else if (state == 1) {
lixianyu 1:14b7c3a3ec60 403 y++;
lixianyu 1:14b7c3a3ec60 404 if (y > yMax) {
lixianyu 1:14b7c3a3ec60 405 state = 2;
lixianyu 1:14b7c3a3ec60 406 y = yMax;
lixianyu 1:14b7c3a3ec60 407 x--;
lixianyu 1:14b7c3a3ec60 408 }
lixianyu 1:14b7c3a3ec60 409 } else if (state == 2) {
lixianyu 1:14b7c3a3ec60 410 x--;
lixianyu 1:14b7c3a3ec60 411 if (x < xMin) {
lixianyu 1:14b7c3a3ec60 412 state = 3;
lixianyu 1:14b7c3a3ec60 413 x = xMin;
lixianyu 1:14b7c3a3ec60 414 y--;
lixianyu 1:14b7c3a3ec60 415 }
lixianyu 1:14b7c3a3ec60 416 } else if (state == 3) {
lixianyu 1:14b7c3a3ec60 417 y--;
lixianyu 1:14b7c3a3ec60 418 if (y == yMin) {
lixianyu 1:14b7c3a3ec60 419 state = 0;
lixianyu 1:14b7c3a3ec60 420 y = yMin+1;
lixianyu 1:14b7c3a3ec60 421 x++;
lixianyu 1:14b7c3a3ec60 422 xMax--;
lixianyu 1:14b7c3a3ec60 423 yMax--;
lixianyu 1:14b7c3a3ec60 424 xMin++;
lixianyu 1:14b7c3a3ec60 425 yMin++;
lixianyu 1:14b7c3a3ec60 426 }
lixianyu 1:14b7c3a3ec60 427 }
lixianyu 1:14b7c3a3ec60 428 }
lixianyu 1:14b7c3a3ec60 429 }
lixianyu 1:14b7c3a3ec60 430 #endif