work fine

Dependencies:   mbed

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?

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 #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 //Print
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 }