Li Weiyi
/
LED_DZ
work fine
main.cpp@2:487a727d6181, 2016-06-02 (annotated)
- Committer:
- lixianyu
- Date:
- Thu Jun 02 01:07:50 2016 +0000
- Revision:
- 2:487a727d6181
- Parent:
- 1:14b7c3a3ec60
drawBMP work.
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 | #include "mbed.h" |
lixianyu | 0:5ca227682ee7 | 32 | #include "MicroduinoPinNames.h" |
lixianyu | 0:5ca227682ee7 | 33 | #include "Microduino_Matrix.h" |
lixianyu | 2:487a727d6181 | 34 | #include "SomeCartoon.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 | 2:487a727d6181 | 40 | static uint8_t logoA[] = { //低位在前 逐行 |
lixianyu | 0:5ca227682ee7 | 41 | 0x00, 0x66, 0x66, 0xDB, 0xDB, 0xDB, 0xDB, 0x00 |
lixianyu | 0:5ca227682ee7 | 42 | }; |
lixianyu | 0:5ca227682ee7 | 43 | |
lixianyu | 2:487a727d6181 | 44 | static uint8_t logoB[] = { //BMP File |
lixianyu | 0:5ca227682ee7 | 45 | 0x42, 0x4D, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, |
lixianyu | 0:5ca227682ee7 | 46 | 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, |
lixianyu | 0:5ca227682ee7 | 47 | 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00, 0x20, 0x2E, 0x00, 0x00, 0x20, 0x2E, 0x00, 0x00, 0x00, 0x00, |
lixianyu | 0:5ca227682ee7 | 48 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xFF, 0xEE, 0xEE, 0xEE, |
lixianyu | 0:5ca227682ee7 | 49 | 0xEE, 0xEE, 0xFF, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xFF, 0xEE, 0xEE, 0xEE, 0xEE, 0xDD, 0xEE, 0xEE, |
lixianyu | 0:5ca227682ee7 | 50 | 0xEE, 0x4D, 0x8E, 0x65, 0x26, 0x94, 0x50, 0x26, 0x94, 0x50, 0x26, 0x94, 0x50, 0x26, 0x94, 0x50, |
lixianyu | 0:5ca227682ee7 | 51 | 0x24, 0x60, 0x51, 0xEE, 0xEE, 0xDD, 0xEE, 0xEE, 0xEE, 0xDD, 0xBB, 0x99, 0xDD, 0xBB, 0x99, 0x4B, |
lixianyu | 0:5ca227682ee7 | 52 | 0x94, 0xD4, 0x2B, 0x69, 0x96, 0xCC, 0xBB, 0x84, 0xCC, 0xAA, 0x88, 0xFF, 0xEE, 0xDD, 0xFF, 0xEE, |
lixianyu | 0:5ca227682ee7 | 53 | 0xEE, 0xC7, 0xBB, 0x99, 0x50, 0xB2, 0x70, 0x26, 0x94, 0x50, 0x26, 0x94, 0x50, 0x47, 0x94, 0x4D, |
lixianyu | 0:5ca227682ee7 | 54 | 0xCC, 0xAA, 0x88, 0xEE, 0xEE, 0xDD, 0xEE, 0xEE, 0xEE, 0xDB, 0xCC, 0xB3, 0x53, 0xBB, 0x88, 0x53, |
lixianyu | 0:5ca227682ee7 | 55 | 0xBB, 0x88, 0x53, 0xBB, 0x88, 0x26, 0x94, 0x50, 0xB5, 0xAA, 0x92, 0xEE, 0xEE, 0xDD, 0xFF, 0xEE, |
lixianyu | 0:5ca227682ee7 | 56 | 0xEE, 0xDD, 0xDD, 0xCC, 0x53, 0xBB, 0x88, 0x3A, 0xD5, 0x95, 0x53, 0xBB, 0x88, 0x48, 0xAF, 0x50, |
lixianyu | 0:5ca227682ee7 | 57 | 0xCC, 0xAA, 0x99, 0xEE, 0xEE, 0xDD, 0xEE, 0xEE, 0xEE, 0xE2, 0xCB, 0xCD, 0x53, 0xBB, 0x88, 0x53, |
lixianyu | 0:5ca227682ee7 | 58 | 0xBB, 0x88, 0x3A, 0xD5, 0x95, 0x50, 0xB2, 0x70, 0xD6, 0xBB, 0xB1, 0xFF, 0xEE, 0xDD, 0xDD, 0xEE, |
lixianyu | 0:5ca227682ee7 | 59 | 0xEE, 0xEE, 0xEE, 0xEE, 0xFF, 0xFF, 0xEE, 0xEE, 0xEE, 0xEE, 0xFF, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, |
lixianyu | 0:5ca227682ee7 | 60 | 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xDD, 0x00, 0x00, |
lixianyu | 0:5ca227682ee7 | 61 | }; |
lixianyu | 0:5ca227682ee7 | 62 | |
lixianyu | 0:5ca227682ee7 | 63 | #define delay wait_ms |
lixianyu | 2:487a727d6181 | 64 | DigitalOut myled(D13); |
lixianyu | 2:487a727d6181 | 65 | Matrix display(Addr); |
lixianyu | 2:487a727d6181 | 66 | AnalogIn gAnalogIn(A0); |
lixianyu | 2:487a727d6181 | 67 | Timer g_Timer; |
lixianyu | 2:487a727d6181 | 68 | Serial pc(D1, D0); // tx, rx |
lixianyu | 0:5ca227682ee7 | 69 | |
lixianyu | 0:5ca227682ee7 | 70 | int main() |
lixianyu | 0:5ca227682ee7 | 71 | { |
lixianyu | 0:5ca227682ee7 | 72 | int i; |
lixianyu | 0:5ca227682ee7 | 73 | char buf[32]; |
lixianyu | 1:14b7c3a3ec60 | 74 | myled = 0; |
lixianyu | 1:14b7c3a3ec60 | 75 | pc.baud(115200); |
lixianyu | 0:5ca227682ee7 | 76 | g_Timer.start(); |
lixianyu | 2:487a727d6181 | 77 | |
lixianyu | 0:5ca227682ee7 | 78 | for (int a = 0; a < display.getMatrixNum(); a++) { |
lixianyu | 1:14b7c3a3ec60 | 79 | pc.printf("device add = %d", display.getDeviceAddr(a)); |
lixianyu | 1:14b7c3a3ec60 | 80 | pc.printf(" "); |
lixianyu | 0:5ca227682ee7 | 81 | } |
lixianyu | 1:14b7c3a3ec60 | 82 | pc.printf("\r\n"); |
lixianyu | 2:487a727d6181 | 83 | |
lixianyu | 1:14b7c3a3ec60 | 84 | myled = !myled; |
lixianyu | 0:5ca227682ee7 | 85 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 86 | //setLedColor |
lixianyu | 0:5ca227682ee7 | 87 | for (int y = 0; y < display.getHeight() * 8; y++) { |
lixianyu | 0:5ca227682ee7 | 88 | for (int x = 0; x < display.getWidth() * 8; x++) { |
lixianyu | 1:14b7c3a3ec60 | 89 | randomSeed(x); |
lixianyu | 0:5ca227682ee7 | 90 | display.setLedColor(x, y, random(0, 255), random(0, 255), random(0, 255)); //x, y, r, g, b |
lixianyu | 2:487a727d6181 | 91 | delay(20); |
lixianyu | 2:487a727d6181 | 92 | } |
lixianyu | 2:487a727d6181 | 93 | } |
lixianyu | 2:487a727d6181 | 94 | delay(1000); |
lixianyu | 2:487a727d6181 | 95 | myled = !myled; |
lixianyu | 2:487a727d6181 | 96 | |
lixianyu | 2:487a727d6181 | 97 | //setLed |
lixianyu | 2:487a727d6181 | 98 | display.clearDisplay(); |
lixianyu | 2:487a727d6181 | 99 | display.setColor(255, 0, 0); |
lixianyu | 2:487a727d6181 | 100 | for (int y = 0; y < display.getHeight() * 8; y++) { |
lixianyu | 2:487a727d6181 | 101 | for (int x = 0; x < display.getWidth() * 8; x++) { |
lixianyu | 2:487a727d6181 | 102 | display.setLed(x, y, true); //x, y, sta |
lixianyu | 2:487a727d6181 | 103 | delay(5); |
lixianyu | 0:5ca227682ee7 | 104 | } |
lixianyu | 0:5ca227682ee7 | 105 | } |
lixianyu | 0:5ca227682ee7 | 106 | delay(1000); |
lixianyu | 1:14b7c3a3ec60 | 107 | myled = !myled; |
lixianyu | 0:5ca227682ee7 | 108 | |
lixianyu | 0:5ca227682ee7 | 109 | //setLed |
lixianyu | 0:5ca227682ee7 | 110 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 111 | display.setColor(0, 255, 0); |
lixianyu | 0:5ca227682ee7 | 112 | for (int y = 0; y < display.getHeight() * 8; y++) { |
lixianyu | 0:5ca227682ee7 | 113 | for (int x = 0; x < display.getWidth() * 8; x++) { |
lixianyu | 0:5ca227682ee7 | 114 | display.setLed(x, y, true); //x, y, sta |
lixianyu | 0:5ca227682ee7 | 115 | delay(5); |
lixianyu | 0:5ca227682ee7 | 116 | } |
lixianyu | 0:5ca227682ee7 | 117 | } |
lixianyu | 0:5ca227682ee7 | 118 | delay(1000); |
lixianyu | 1:14b7c3a3ec60 | 119 | myled = !myled; |
lixianyu | 2:487a727d6181 | 120 | |
lixianyu | 0:5ca227682ee7 | 121 | //setLed |
lixianyu | 0:5ca227682ee7 | 122 | display.clearDisplay(); |
lixianyu | 2:487a727d6181 | 123 | display.setColor(0, 0, 255); |
lixianyu | 0:5ca227682ee7 | 124 | for (int y = 0; y < display.getHeight() * 8; y++) { |
lixianyu | 0:5ca227682ee7 | 125 | for (int x = 0; x < display.getWidth() * 8; x++) { |
lixianyu | 0:5ca227682ee7 | 126 | display.setLed(x, y, true); //x, y, sta |
lixianyu | 0:5ca227682ee7 | 127 | delay(5); |
lixianyu | 0:5ca227682ee7 | 128 | } |
lixianyu | 0:5ca227682ee7 | 129 | } |
lixianyu | 0:5ca227682ee7 | 130 | delay(1000); |
lixianyu | 1:14b7c3a3ec60 | 131 | myled = !myled; |
lixianyu | 0:5ca227682ee7 | 132 | |
lixianyu | 0:5ca227682ee7 | 133 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 134 | display.setColor(0, 255, 0); |
lixianyu | 0:5ca227682ee7 | 135 | display.drawBMP(0, 0, 8, 8, logoA); //x,y,w,h,data |
lixianyu | 0:5ca227682ee7 | 136 | delay(2000); |
lixianyu | 1:14b7c3a3ec60 | 137 | myled = !myled; |
lixianyu | 0:5ca227682ee7 | 138 | |
lixianyu | 0:5ca227682ee7 | 139 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 140 | //Windows Bitmap (BMP) file,24bit |
lixianyu | 0:5ca227682ee7 | 141 | display.drawBMP(0, 0, logoB); //x,y,data |
lixianyu | 0:5ca227682ee7 | 142 | delay(2000); |
lixianyu | 1:14b7c3a3ec60 | 143 | myled = !myled; |
lixianyu | 0:5ca227682ee7 | 144 | |
lixianyu | 0:5ca227682ee7 | 145 | //clearColor |
lixianyu | 0:5ca227682ee7 | 146 | display.clearColor(); |
lixianyu | 0:5ca227682ee7 | 147 | //writeString H |
lixianyu | 0:5ca227682ee7 | 148 | display.writeString("Microduino", MODE_H, 20, 0); //string, MODE, time ,y |
lixianyu | 0:5ca227682ee7 | 149 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 150 | //writeString V |
lixianyu | 0:5ca227682ee7 | 151 | display.writeString("Microduino", MODE_V, 20, 0); //string, MODE, time ,x |
lixianyu | 0:5ca227682ee7 | 152 | display.clearDisplay(); |
lixianyu | 1:14b7c3a3ec60 | 153 | myled = !myled; |
lixianyu | 0:5ca227682ee7 | 154 | while(1) { |
lixianyu | 2:487a727d6181 | 155 | display.clearDisplay(); |
lixianyu | 2:487a727d6181 | 156 | drawCartoon01(); |
lixianyu | 2:487a727d6181 | 157 | display.clearDisplay(); |
lixianyu | 2:487a727d6181 | 158 | drawCartoon02(); |
lixianyu | 2:487a727d6181 | 159 | display.clearDisplay(); |
lixianyu | 2:487a727d6181 | 160 | drawCartoon03(); |
lixianyu | 2:487a727d6181 | 161 | |
lixianyu | 1:14b7c3a3ec60 | 162 | display.setColor(random(0, 255), random(0, 255), random(0, 255)); |
lixianyu | 0:5ca227682ee7 | 163 | display.drawBox(0, 0, 8, 8); //x,y,w,h |
lixianyu | 0:5ca227682ee7 | 164 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 165 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 166 | |
lixianyu | 0:5ca227682ee7 | 167 | display.drawRBox(0, 0, 8, 8, 2); //x,y,w,h,r |
lixianyu | 0:5ca227682ee7 | 168 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 169 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 170 | |
lixianyu | 0:5ca227682ee7 | 171 | display.drawFrame(0, 0, 8, 8); //x,y,w,h |
lixianyu | 0:5ca227682ee7 | 172 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 173 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 174 | |
lixianyu | 0:5ca227682ee7 | 175 | display.drawRFrame(0, 0, 8, 8, 2); //x,y,w,h,r |
lixianyu | 0:5ca227682ee7 | 176 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 177 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 178 | |
lixianyu | 0:5ca227682ee7 | 179 | display.drawCircle(3, 3, 3); //x,y,r |
lixianyu | 0:5ca227682ee7 | 180 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 181 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 182 | |
lixianyu | 0:5ca227682ee7 | 183 | display.drawDisc(3, 3, 3); //x,y,r |
lixianyu | 0:5ca227682ee7 | 184 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 185 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 186 | |
lixianyu | 0:5ca227682ee7 | 187 | display.drawLine(0, 0, 7, 7); //x,y,x1,y1 |
lixianyu | 0:5ca227682ee7 | 188 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 189 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 190 | |
lixianyu | 0:5ca227682ee7 | 191 | i = display.getStringWidth("mCookie!"); |
lixianyu | 0:5ca227682ee7 | 192 | display.setColor(255, 255, 0); |
lixianyu | 0:5ca227682ee7 | 193 | display.setFontMode(MODE_H); |
lixianyu | 0:5ca227682ee7 | 194 | strcpy(buf, "mCookie!"); |
lixianyu | 0:5ca227682ee7 | 195 | for (int a = display.getWidth() * 8; a > -i - display.getWidth() * 8; a--) { |
lixianyu | 0:5ca227682ee7 | 196 | display.setCursor(a, 0); //x, y |
lixianyu | 0:5ca227682ee7 | 197 | display.print(buf); |
lixianyu | 0:5ca227682ee7 | 198 | delay(20); |
lixianyu | 0:5ca227682ee7 | 199 | } |
lixianyu | 0:5ca227682ee7 | 200 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 201 | |
lixianyu | 0:5ca227682ee7 | 202 | i = display.getStringHeight("mCookie!"); |
lixianyu | 0:5ca227682ee7 | 203 | display.setColor(255, 0, 255); |
lixianyu | 0:5ca227682ee7 | 204 | display.setFontMode(MODE_V); |
lixianyu | 0:5ca227682ee7 | 205 | for (int a = display.getHeight() * 8; a > -i - display.getHeight() * 8; a--) { |
lixianyu | 0:5ca227682ee7 | 206 | display.setCursor(0, a); //x, y |
lixianyu | 0:5ca227682ee7 | 207 | display.print("mCookie!"); |
lixianyu | 0:5ca227682ee7 | 208 | delay(20); |
lixianyu | 0:5ca227682ee7 | 209 | } |
lixianyu | 0:5ca227682ee7 | 210 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 211 | |
lixianyu | 0:5ca227682ee7 | 212 | |
lixianyu | 0:5ca227682ee7 | 213 | int timer = g_Timer.read_ms(); |
lixianyu | 0:5ca227682ee7 | 214 | display.setColor(0, 255, 255); |
lixianyu | 0:5ca227682ee7 | 215 | display.setFontMode(MODE_H); |
lixianyu | 0:5ca227682ee7 | 216 | while (g_Timer.read_ms() - timer < 5000) { |
lixianyu | 0:5ca227682ee7 | 217 | display.setCursor(0, 0); //x, y |
lixianyu | 0:5ca227682ee7 | 218 | display.print((g_Timer.read_ms() - timer) / 100); |
lixianyu | 0:5ca227682ee7 | 219 | delay(20); |
lixianyu | 0:5ca227682ee7 | 220 | } |
lixianyu | 0:5ca227682ee7 | 221 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 222 | |
lixianyu | 0:5ca227682ee7 | 223 | //String to char* |
lixianyu | 0:5ca227682ee7 | 224 | String _buffer_data = "Analog(A0):"; |
lixianyu | 0:5ca227682ee7 | 225 | //_buffer_data += analogRead(A0); |
lixianyu | 0:5ca227682ee7 | 226 | _buffer_data += gAnalogIn.read_u16(); |
lixianyu | 0:5ca227682ee7 | 227 | |
lixianyu | 0:5ca227682ee7 | 228 | char buffer_data[128]; |
lixianyu | 0:5ca227682ee7 | 229 | for (int a = 0; a < 128; a++) { |
lixianyu | 0:5ca227682ee7 | 230 | buffer_data[a] = NULL; |
lixianyu | 0:5ca227682ee7 | 231 | } |
lixianyu | 0:5ca227682ee7 | 232 | |
lixianyu | 0:5ca227682ee7 | 233 | for (int a = 0; a < _buffer_data.length(); a++) { |
lixianyu | 0:5ca227682ee7 | 234 | buffer_data[a] = _buffer_data[a]; |
lixianyu | 0:5ca227682ee7 | 235 | } |
lixianyu | 0:5ca227682ee7 | 236 | |
lixianyu | 0:5ca227682ee7 | 237 | display.setColor(255, 255, 255); |
lixianyu | 0:5ca227682ee7 | 238 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 239 | display.writeString(buffer_data, MODE_H, 50, 1); |
lixianyu | 1:14b7c3a3ec60 | 240 | myled = !myled; |
lixianyu | 1:14b7c3a3ec60 | 241 | } |
lixianyu | 2:487a727d6181 | 242 | } |