p kj
/
LPC824-DotMatrix
Microduino
Fork of LED_DZ by
SomeCartoon.cpp@2:487a727d6181, 2016-06-02 (annotated)
- Committer:
- lixianyu
- Date:
- Thu Jun 02 01:07:50 2016 +0000
- Revision:
- 2:487a727d6181
drawBMP work.
Who changed what in which revision?
User | Revision | Line number | New 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 | } |