p kj
/
LPC824-DotMatrix
Microduino
Fork of LED_DZ by
main.cpp@1:14b7c3a3ec60, 2016-06-01 (annotated)
- 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?
User | Revision | Line number | New 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 | |
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 |