Microduino

Dependencies:   mbed

Fork of LED_DZ by Li Weiyi

Committer:
lixianyu
Date:
Thu Jun 02 01:07:50 2016 +0000
Revision:
2:487a727d6181
drawBMP work.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lixianyu 2:487a727d6181 1 #include "SomeCartoon.h"
lixianyu 2:487a727d6181 2 #include "mbed.h"
lixianyu 2:487a727d6181 3 #include "Microduino_Matrix.h"
lixianyu 2:487a727d6181 4
lixianyu 2:487a727d6181 5 extern Matrix display;
lixianyu 2:487a727d6181 6 extern AnalogIn gAnalogIn;
lixianyu 2:487a727d6181 7 void randomSeed(unsigned long seed)
lixianyu 2:487a727d6181 8 {
lixianyu 2:487a727d6181 9 if (seed != 0) {
lixianyu 2:487a727d6181 10 //srandom(seed);
lixianyu 2:487a727d6181 11 srand(seed);
lixianyu 2:487a727d6181 12 }
lixianyu 2:487a727d6181 13 }
lixianyu 2:487a727d6181 14
lixianyu 2:487a727d6181 15 long random(long howbig)
lixianyu 2:487a727d6181 16 {
lixianyu 2:487a727d6181 17 if (howbig == 0) {
lixianyu 2:487a727d6181 18 return 0;
lixianyu 2:487a727d6181 19 }
lixianyu 2:487a727d6181 20 return rand() % howbig;
lixianyu 2:487a727d6181 21 }
lixianyu 2:487a727d6181 22
lixianyu 2:487a727d6181 23 long random(long howsmall, long howbig)
lixianyu 2:487a727d6181 24 {
lixianyu 2:487a727d6181 25 if (howsmall >= howbig) {
lixianyu 2:487a727d6181 26 return howsmall;
lixianyu 2:487a727d6181 27 }
lixianyu 2:487a727d6181 28 long diff = howbig - howsmall;
lixianyu 2:487a727d6181 29 return random(diff) + howsmall;
lixianyu 2:487a727d6181 30 }
lixianyu 2:487a727d6181 31 /*
lixianyu 2:487a727d6181 32 uint8_t donghua[128] = {
lixianyu 2:487a727d6181 33 0,0, 1,0, 2,0, 3,0, 4,0, 5,0, 6,0, 7,0,
lixianyu 2:487a727d6181 34 7,1, 7,2, 7,3, 7,4, 7,5, 7,6, 7,7,
lixianyu 2:487a727d6181 35 6,7, 5,7, 4,7, 3,7, 2,7, 1,7, 0,7,
lixianyu 2:487a727d6181 36 0,6, 0,5, 0,4, 0,3, 0,2, 0,1,
lixianyu 2:487a727d6181 37 1,1, 2,1, 3,1, 4,1, 5,1, 6,1,
lixianyu 2:487a727d6181 38 };*/
lixianyu 2:487a727d6181 39
lixianyu 2:487a727d6181 40 void drawCartoon01(void)
lixianyu 2:487a727d6181 41 {
lixianyu 2:487a727d6181 42 uint8_t r,g,b;
lixianyu 2:487a727d6181 43 randomSeed(gAnalogIn.read_u16());
lixianyu 2:487a727d6181 44 display.clearDisplay();
lixianyu 2:487a727d6181 45 int8_t x = 0;
lixianyu 2:487a727d6181 46 int8_t y = 0;
lixianyu 2:487a727d6181 47 int8_t xMax = 7;
lixianyu 2:487a727d6181 48 int8_t yMax = 7;
lixianyu 2:487a727d6181 49 int8_t xMin = 0;
lixianyu 2:487a727d6181 50 int8_t yMin = 0;
lixianyu 2:487a727d6181 51 uint8_t state = 0;
lixianyu 2:487a727d6181 52 r = random(0, 255);
lixianyu 2:487a727d6181 53 g = random(0, 255);
lixianyu 2:487a727d6181 54 b = random(0, 255);
lixianyu 2:487a727d6181 55 uint8_t times = 0;
lixianyu 2:487a727d6181 56 while (true) {
lixianyu 2:487a727d6181 57 display.setLedColor(x, y, r, g, b); //x, y, r, g, b
lixianyu 2:487a727d6181 58 wait_ms(50);
lixianyu 2:487a727d6181 59 if (x == 3 && y == 4) {
lixianyu 2:487a727d6181 60 times++;
lixianyu 2:487a727d6181 61 if (times >=3) {
lixianyu 2:487a727d6181 62 break;
lixianyu 2:487a727d6181 63 }
lixianyu 2:487a727d6181 64 x = 0;
lixianyu 2:487a727d6181 65 y = 0;
lixianyu 2:487a727d6181 66 xMax = 7;
lixianyu 2:487a727d6181 67 yMax = 7;
lixianyu 2:487a727d6181 68 xMin = 0;
lixianyu 2:487a727d6181 69 yMin = 0;
lixianyu 2:487a727d6181 70 display.clearDisplay();
lixianyu 2:487a727d6181 71 wait_ms(200);
lixianyu 2:487a727d6181 72 state = 0;
lixianyu 2:487a727d6181 73 r = random(0, 255);
lixianyu 2:487a727d6181 74 g = random(0, 255);
lixianyu 2:487a727d6181 75 b = random(0, 255);
lixianyu 2:487a727d6181 76 display.setLedColor(0, 0, r, g, b); //x, y, r, g, b
lixianyu 2:487a727d6181 77 //continue;
lixianyu 2:487a727d6181 78 }
lixianyu 2:487a727d6181 79
lixianyu 2:487a727d6181 80 if (state == 0) {
lixianyu 2:487a727d6181 81 x++;
lixianyu 2:487a727d6181 82 if (x > xMax) {
lixianyu 2:487a727d6181 83 state = 1;
lixianyu 2:487a727d6181 84 x = xMax;
lixianyu 2:487a727d6181 85 y++;
lixianyu 2:487a727d6181 86 }
lixianyu 2:487a727d6181 87 } else if (state == 1) {
lixianyu 2:487a727d6181 88 y++;
lixianyu 2:487a727d6181 89 if (y > yMax) {
lixianyu 2:487a727d6181 90 state = 2;
lixianyu 2:487a727d6181 91 y = yMax;
lixianyu 2:487a727d6181 92 x--;
lixianyu 2:487a727d6181 93 }
lixianyu 2:487a727d6181 94 } else if (state == 2) {
lixianyu 2:487a727d6181 95 x--;
lixianyu 2:487a727d6181 96 if (x < xMin) {
lixianyu 2:487a727d6181 97 state = 3;
lixianyu 2:487a727d6181 98 x = xMin;
lixianyu 2:487a727d6181 99 y--;
lixianyu 2:487a727d6181 100 }
lixianyu 2:487a727d6181 101 } else if (state == 3) {
lixianyu 2:487a727d6181 102 y--;
lixianyu 2:487a727d6181 103 if (y == yMin) {
lixianyu 2:487a727d6181 104 state = 0;
lixianyu 2:487a727d6181 105 y = yMin+1;
lixianyu 2:487a727d6181 106 x++;
lixianyu 2:487a727d6181 107 xMax--;
lixianyu 2:487a727d6181 108 yMax--;
lixianyu 2:487a727d6181 109 xMin++;
lixianyu 2:487a727d6181 110 yMin++;
lixianyu 2:487a727d6181 111 }
lixianyu 2:487a727d6181 112 }
lixianyu 2:487a727d6181 113 }
lixianyu 2:487a727d6181 114 }
lixianyu 2:487a727d6181 115
lixianyu 2:487a727d6181 116 void drawCartoon02(void)
lixianyu 2:487a727d6181 117 {
lixianyu 2:487a727d6181 118 uint8_t times = 0;
lixianyu 2:487a727d6181 119 int8_t x,y,x1,y1;
lixianyu 2:487a727d6181 120
lixianyu 2:487a727d6181 121 doCartoon:
lixianyu 2:487a727d6181 122 display.setColor(random(0, 255), random(0, 255), random(0, 255));
lixianyu 2:487a727d6181 123 x = 0;
lixianyu 2:487a727d6181 124 y = 0;
lixianyu 2:487a727d6181 125 x1 = 7;
lixianyu 2:487a727d6181 126 y1 = 7;
lixianyu 2:487a727d6181 127 while (x < 8) {
lixianyu 2:487a727d6181 128 display.drawLine(x, y, x1, y1);//x,y,x1,y1
lixianyu 2:487a727d6181 129 wait_ms(200);
lixianyu 2:487a727d6181 130 x++;
lixianyu 2:487a727d6181 131 y1--;
lixianyu 2:487a727d6181 132 }
lixianyu 2:487a727d6181 133 x = 0;
lixianyu 2:487a727d6181 134 y = 1;
lixianyu 2:487a727d6181 135 x1 = 6;
lixianyu 2:487a727d6181 136 y1 = 7;
lixianyu 2:487a727d6181 137 while (y < 8) {
lixianyu 2:487a727d6181 138 display.drawLine(x, y, x1, y1);//x,y,x1,y1
lixianyu 2:487a727d6181 139 wait_ms(200);
lixianyu 2:487a727d6181 140 y++;
lixianyu 2:487a727d6181 141 x1--;
lixianyu 2:487a727d6181 142 }
lixianyu 2:487a727d6181 143 times++;
lixianyu 2:487a727d6181 144 if (times >= 3) {
lixianyu 2:487a727d6181 145 return;
lixianyu 2:487a727d6181 146 }
lixianyu 2:487a727d6181 147 wait_us(2000000);
lixianyu 2:487a727d6181 148 display.clearDisplay();
lixianyu 2:487a727d6181 149 goto doCartoon;
lixianyu 2:487a727d6181 150 }
lixianyu 2:487a727d6181 151
lixianyu 2:487a727d6181 152 void drawCartoon03(void)
lixianyu 2:487a727d6181 153 {
lixianyu 2:487a727d6181 154 uint8_t times = 0;
lixianyu 2:487a727d6181 155 int8_t x = 0;
lixianyu 2:487a727d6181 156 int8_t y = 0;
lixianyu 2:487a727d6181 157 int8_t w = 8;
lixianyu 2:487a727d6181 158 int8_t h = 8;
lixianyu 2:487a727d6181 159 doCartoon:
lixianyu 2:487a727d6181 160 display.setColor(random(0, 255), random(0, 255), random(0, 255));
lixianyu 2:487a727d6181 161 while (x < 4) {
lixianyu 2:487a727d6181 162 display.clearDisplay();
lixianyu 2:487a727d6181 163 display.drawBox(x, y, w, h); //x,y,w,h
lixianyu 2:487a727d6181 164 wait_ms(500);
lixianyu 2:487a727d6181 165 x++;
lixianyu 2:487a727d6181 166 y++;
lixianyu 2:487a727d6181 167 w -= 2;
lixianyu 2:487a727d6181 168 h -= 2;
lixianyu 2:487a727d6181 169 }
lixianyu 2:487a727d6181 170 display.clearDisplay();
lixianyu 2:487a727d6181 171 times++;
lixianyu 2:487a727d6181 172 if (times >= 3) {
lixianyu 2:487a727d6181 173 return;
lixianyu 2:487a727d6181 174 }
lixianyu 2:487a727d6181 175 wait_ms(2000);
lixianyu 2:487a727d6181 176 x = y = 0;
lixianyu 2:487a727d6181 177 w = h = 8;
lixianyu 2:487a727d6181 178 goto doCartoon;
lixianyu 2:487a727d6181 179 }