Li Weiyi
/
LED_DZ
work fine
main.cpp@0:5ca227682ee7, 2016-05-31 (annotated)
- Committer:
- lixianyu
- Date:
- Tue May 31 15:32:03 2016 +0000
- Revision:
- 0:5ca227682ee7
- Child:
- 1:14b7c3a3ec60
???????(Pass compile!)
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 | 0:5ca227682ee7 | 67 | DigitalOut myled(LED1); |
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 | 0:5ca227682ee7 | 94 | int main() |
lixianyu | 0:5ca227682ee7 | 95 | { |
lixianyu | 0:5ca227682ee7 | 96 | int i; |
lixianyu | 0:5ca227682ee7 | 97 | char buf[32]; |
lixianyu | 0:5ca227682ee7 | 98 | g_Timer.start(); |
lixianyu | 0:5ca227682ee7 | 99 | #if 0 |
lixianyu | 0:5ca227682ee7 | 100 | //getDeviceAddr |
lixianyu | 0:5ca227682ee7 | 101 | for (int a = 0; a < display.getMatrixNum(); a++) { |
lixianyu | 0:5ca227682ee7 | 102 | Serial.print(display.getDeviceAddr(a)); |
lixianyu | 0:5ca227682ee7 | 103 | Serial.print(" "); |
lixianyu | 0:5ca227682ee7 | 104 | } |
lixianyu | 0:5ca227682ee7 | 105 | Serial.println(""); |
lixianyu | 0:5ca227682ee7 | 106 | #endif |
lixianyu | 0:5ca227682ee7 | 107 | |
lixianyu | 0:5ca227682ee7 | 108 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 109 | //setLedColor |
lixianyu | 0:5ca227682ee7 | 110 | for (int y = 0; y < display.getHeight() * 8; y++) { |
lixianyu | 0:5ca227682ee7 | 111 | for (int x = 0; x < display.getWidth() * 8; x++) { |
lixianyu | 0:5ca227682ee7 | 112 | randomSeed(45); |
lixianyu | 0:5ca227682ee7 | 113 | display.setLedColor(x, y, random(0, 255), random(0, 255), random(0, 255)); //x, y, r, g, b |
lixianyu | 0:5ca227682ee7 | 114 | delay(5); |
lixianyu | 0:5ca227682ee7 | 115 | } |
lixianyu | 0:5ca227682ee7 | 116 | } |
lixianyu | 0:5ca227682ee7 | 117 | delay(1000); |
lixianyu | 0:5ca227682ee7 | 118 | |
lixianyu | 0:5ca227682ee7 | 119 | //setLed |
lixianyu | 0:5ca227682ee7 | 120 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 121 | display.setColor(0, 255, 0); |
lixianyu | 0:5ca227682ee7 | 122 | for (int y = 0; y < display.getHeight() * 8; y++) { |
lixianyu | 0:5ca227682ee7 | 123 | for (int x = 0; x < display.getWidth() * 8; x++) { |
lixianyu | 0:5ca227682ee7 | 124 | display.setLed(x, y, true); //x, y, sta |
lixianyu | 0:5ca227682ee7 | 125 | delay(5); |
lixianyu | 0:5ca227682ee7 | 126 | } |
lixianyu | 0:5ca227682ee7 | 127 | } |
lixianyu | 0:5ca227682ee7 | 128 | delay(1000); |
lixianyu | 0:5ca227682ee7 | 129 | |
lixianyu | 0:5ca227682ee7 | 130 | //setLed |
lixianyu | 0:5ca227682ee7 | 131 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 132 | display.setColor(255, 0, 0); |
lixianyu | 0:5ca227682ee7 | 133 | for (int y = 0; y < display.getHeight() * 8; y++) { |
lixianyu | 0:5ca227682ee7 | 134 | for (int x = 0; x < display.getWidth() * 8; x++) { |
lixianyu | 0:5ca227682ee7 | 135 | display.setLed(x, y, true); //x, y, sta |
lixianyu | 0:5ca227682ee7 | 136 | delay(5); |
lixianyu | 0:5ca227682ee7 | 137 | } |
lixianyu | 0:5ca227682ee7 | 138 | } |
lixianyu | 0:5ca227682ee7 | 139 | delay(1000); |
lixianyu | 0:5ca227682ee7 | 140 | |
lixianyu | 0:5ca227682ee7 | 141 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 142 | display.setColor(0, 255, 0); |
lixianyu | 0:5ca227682ee7 | 143 | display.drawBMP(0, 0, 8, 8, logoA); //x,y,w,h,data |
lixianyu | 0:5ca227682ee7 | 144 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 145 | |
lixianyu | 0:5ca227682ee7 | 146 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 147 | //Windows Bitmap (BMP) file,24bit |
lixianyu | 0:5ca227682ee7 | 148 | display.drawBMP(0, 0, logoB); //x,y,data |
lixianyu | 0:5ca227682ee7 | 149 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 150 | |
lixianyu | 0:5ca227682ee7 | 151 | //clearColor |
lixianyu | 0:5ca227682ee7 | 152 | display.clearColor(); |
lixianyu | 0:5ca227682ee7 | 153 | //writeString H |
lixianyu | 0:5ca227682ee7 | 154 | display.writeString("Microduino", MODE_H, 20, 0); //string, MODE, time ,y |
lixianyu | 0:5ca227682ee7 | 155 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 156 | //writeString V |
lixianyu | 0:5ca227682ee7 | 157 | display.writeString("Microduino", MODE_V, 20, 0); //string, MODE, time ,x |
lixianyu | 0:5ca227682ee7 | 158 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 159 | while(1) { |
lixianyu | 0:5ca227682ee7 | 160 | display.setColor(255, 255, 0); |
lixianyu | 0:5ca227682ee7 | 161 | |
lixianyu | 0:5ca227682ee7 | 162 | display.drawBox(0, 0, 8, 8); //x,y,w,h |
lixianyu | 0:5ca227682ee7 | 163 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 164 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 165 | |
lixianyu | 0:5ca227682ee7 | 166 | display.drawRBox(0, 0, 8, 8, 2); //x,y,w,h,r |
lixianyu | 0:5ca227682ee7 | 167 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 168 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 169 | |
lixianyu | 0:5ca227682ee7 | 170 | display.drawFrame(0, 0, 8, 8); //x,y,w,h |
lixianyu | 0:5ca227682ee7 | 171 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 172 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 173 | |
lixianyu | 0:5ca227682ee7 | 174 | display.drawRFrame(0, 0, 8, 8, 2); //x,y,w,h,r |
lixianyu | 0:5ca227682ee7 | 175 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 176 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 177 | |
lixianyu | 0:5ca227682ee7 | 178 | display.drawCircle(3, 3, 3); //x,y,r |
lixianyu | 0:5ca227682ee7 | 179 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 180 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 181 | |
lixianyu | 0:5ca227682ee7 | 182 | display.drawDisc(3, 3, 3); //x,y,r |
lixianyu | 0:5ca227682ee7 | 183 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 184 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 185 | |
lixianyu | 0:5ca227682ee7 | 186 | display.drawLine(0, 0, 7, 7); //x,y,x1,y1 |
lixianyu | 0:5ca227682ee7 | 187 | delay(2000); |
lixianyu | 0:5ca227682ee7 | 188 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 189 | |
lixianyu | 0:5ca227682ee7 | 190 | i = display.getStringWidth("mCookie!"); |
lixianyu | 0:5ca227682ee7 | 191 | display.setColor(255, 255, 0); |
lixianyu | 0:5ca227682ee7 | 192 | display.setFontMode(MODE_H); |
lixianyu | 0:5ca227682ee7 | 193 | strcpy(buf, "mCookie!"); |
lixianyu | 0:5ca227682ee7 | 194 | for (int a = display.getWidth() * 8; a > -i - display.getWidth() * 8; a--) { |
lixianyu | 0:5ca227682ee7 | 195 | display.setCursor(a, 0); //x, y |
lixianyu | 0:5ca227682ee7 | 196 | display.print(buf); |
lixianyu | 0:5ca227682ee7 | 197 | delay(20); |
lixianyu | 0:5ca227682ee7 | 198 | } |
lixianyu | 0:5ca227682ee7 | 199 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 200 | |
lixianyu | 0:5ca227682ee7 | 201 | i = display.getStringHeight("mCookie!"); |
lixianyu | 0:5ca227682ee7 | 202 | display.setColor(255, 0, 255); |
lixianyu | 0:5ca227682ee7 | 203 | display.setFontMode(MODE_V); |
lixianyu | 0:5ca227682ee7 | 204 | for (int a = display.getHeight() * 8; a > -i - display.getHeight() * 8; a--) { |
lixianyu | 0:5ca227682ee7 | 205 | display.setCursor(0, a); //x, y |
lixianyu | 0:5ca227682ee7 | 206 | display.print("mCookie!"); |
lixianyu | 0:5ca227682ee7 | 207 | delay(20); |
lixianyu | 0:5ca227682ee7 | 208 | } |
lixianyu | 0:5ca227682ee7 | 209 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 210 | |
lixianyu | 0:5ca227682ee7 | 211 | |
lixianyu | 0:5ca227682ee7 | 212 | int timer = g_Timer.read_ms(); |
lixianyu | 0:5ca227682ee7 | 213 | display.setColor(0, 255, 255); |
lixianyu | 0:5ca227682ee7 | 214 | display.setFontMode(MODE_H); |
lixianyu | 0:5ca227682ee7 | 215 | while (g_Timer.read_ms() - timer < 5000) { |
lixianyu | 0:5ca227682ee7 | 216 | display.setCursor(0, 0); //x, y |
lixianyu | 0:5ca227682ee7 | 217 | display.print((g_Timer.read_ms() - timer) / 100); |
lixianyu | 0:5ca227682ee7 | 218 | delay(20); |
lixianyu | 0:5ca227682ee7 | 219 | } |
lixianyu | 0:5ca227682ee7 | 220 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 221 | |
lixianyu | 0:5ca227682ee7 | 222 | //String to char* |
lixianyu | 0:5ca227682ee7 | 223 | String _buffer_data = "Analog(A0):"; |
lixianyu | 0:5ca227682ee7 | 224 | //_buffer_data += analogRead(A0); |
lixianyu | 0:5ca227682ee7 | 225 | _buffer_data += gAnalogIn.read_u16(); |
lixianyu | 0:5ca227682ee7 | 226 | |
lixianyu | 0:5ca227682ee7 | 227 | char buffer_data[128]; |
lixianyu | 0:5ca227682ee7 | 228 | for (int a = 0; a < 128; a++) { |
lixianyu | 0:5ca227682ee7 | 229 | buffer_data[a] = NULL; |
lixianyu | 0:5ca227682ee7 | 230 | } |
lixianyu | 0:5ca227682ee7 | 231 | |
lixianyu | 0:5ca227682ee7 | 232 | for (int a = 0; a < _buffer_data.length(); a++) { |
lixianyu | 0:5ca227682ee7 | 233 | buffer_data[a] = _buffer_data[a]; |
lixianyu | 0:5ca227682ee7 | 234 | } |
lixianyu | 0:5ca227682ee7 | 235 | |
lixianyu | 0:5ca227682ee7 | 236 | display.setColor(255, 255, 255); |
lixianyu | 0:5ca227682ee7 | 237 | display.clearDisplay(); |
lixianyu | 0:5ca227682ee7 | 238 | display.writeString(buffer_data, MODE_H, 50, 1); |
lixianyu | 0:5ca227682ee7 | 239 | } |
lixianyu | 0:5ca227682ee7 | 240 | } |