Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:730586f57df2, 2012-02-02 (annotated)
- Committer:
- stvnrhodes
- Date:
- Thu Feb 02 03:20:45 2012 +0000
- Revision:
- 0:730586f57df2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
stvnrhodes | 0:730586f57df2 | 1 | // Display Test |
stvnrhodes | 0:730586f57df2 | 2 | #include "mbed.h" |
stvnrhodes | 0:730586f57df2 | 3 | #include "KS0108.h" |
stvnrhodes | 0:730586f57df2 | 4 | #include "calsolimage.h" |
stvnrhodes | 0:730586f57df2 | 5 | #include "numbers.h" |
stvnrhodes | 0:730586f57df2 | 6 | |
stvnrhodes | 0:730586f57df2 | 7 | |
stvnrhodes | 0:730586f57df2 | 8 | KS0108 display(p23,p21,p22,p20,p24,p25,p17,p18,p19,p30,p29,p28,p27,p26); |
stvnrhodes | 0:730586f57df2 | 9 | DigitalIn topButton(p13); |
stvnrhodes | 0:730586f57df2 | 10 | DigitalIn bottomButton(p12); |
stvnrhodes | 0:730586f57df2 | 11 | Serial pc(USBTX,USBRX); |
stvnrhodes | 0:730586f57df2 | 12 | Timer timer1; |
stvnrhodes | 0:730586f57df2 | 13 | Timer timer2; |
stvnrhodes | 0:730586f57df2 | 14 | |
stvnrhodes | 0:730586f57df2 | 15 | void rules (unsigned char *); |
stvnrhodes | 0:730586f57df2 | 16 | void random (unsigned char *); |
stvnrhodes | 0:730586f57df2 | 17 | |
stvnrhodes | 0:730586f57df2 | 18 | int main() { |
stvnrhodes | 0:730586f57df2 | 19 | int dist = 20; |
stvnrhodes | 0:730586f57df2 | 20 | int demo = 0; |
stvnrhodes | 0:730586f57df2 | 21 | int i = 0; |
stvnrhodes | 0:730586f57df2 | 22 | topButton.mode(PullUp); |
stvnrhodes | 0:730586f57df2 | 23 | bottomButton.mode(PullUp); |
stvnrhodes | 0:730586f57df2 | 24 | display.FullScreenBMP(pic); |
stvnrhodes | 0:730586f57df2 | 25 | wait(0.2); |
stvnrhodes | 0:730586f57df2 | 26 | |
stvnrhodes | 0:730586f57df2 | 27 | timer1.start(); |
stvnrhodes | 0:730586f57df2 | 28 | timer2.start(); |
stvnrhodes | 0:730586f57df2 | 29 | while(1) { |
stvnrhodes | 0:730586f57df2 | 30 | if(!topButton) { |
stvnrhodes | 0:730586f57df2 | 31 | if(timer1.read_ms() > 200) { |
stvnrhodes | 0:730586f57df2 | 32 | demo++; |
stvnrhodes | 0:730586f57df2 | 33 | display.ClearScreen(); |
stvnrhodes | 0:730586f57df2 | 34 | if(demo > 3) { |
stvnrhodes | 0:730586f57df2 | 35 | demo = 0; |
stvnrhodes | 0:730586f57df2 | 36 | } |
stvnrhodes | 0:730586f57df2 | 37 | timer1.reset(); |
stvnrhodes | 0:730586f57df2 | 38 | } |
stvnrhodes | 0:730586f57df2 | 39 | } |
stvnrhodes | 0:730586f57df2 | 40 | switch(demo) { |
stvnrhodes | 0:730586f57df2 | 41 | case 0: |
stvnrhodes | 0:730586f57df2 | 42 | if(timer2.read_ms() > 500) { |
stvnrhodes | 0:730586f57df2 | 43 | rules(pic); |
stvnrhodes | 0:730586f57df2 | 44 | display.FullScreenBMP(pic); |
stvnrhodes | 0:730586f57df2 | 45 | timer2.reset(); |
stvnrhodes | 0:730586f57df2 | 46 | } |
stvnrhodes | 0:730586f57df2 | 47 | break; |
stvnrhodes | 0:730586f57df2 | 48 | case 1: |
stvnrhodes | 0:730586f57df2 | 49 | display.ClearScreen(); |
stvnrhodes | 0:730586f57df2 | 50 | break; |
stvnrhodes | 0:730586f57df2 | 51 | case 2: |
stvnrhodes | 0:730586f57df2 | 52 | if(timer2.read_ms() > 100) { |
stvnrhodes | 0:730586f57df2 | 53 | // display.PutString(3,2,"I can has mbed too"); |
stvnrhodes | 0:730586f57df2 | 54 | // display.PrintFloat(123.23,4,5); |
stvnrhodes | 0:730586f57df2 | 55 | display.VLine(6+i,47,56,BLACK); |
stvnrhodes | 0:730586f57df2 | 56 | if (i < 10){dist = 30;} |
stvnrhodes | 0:730586f57df2 | 57 | else if (i < 100){dist = 25;} |
stvnrhodes | 0:730586f57df2 | 58 | else {dist = 20;} |
stvnrhodes | 0:730586f57df2 | 59 | display.PrintInteger(i,6,dist); |
stvnrhodes | 0:730586f57df2 | 60 | i++; |
stvnrhodes | 0:730586f57df2 | 61 | if(i > 100) { |
stvnrhodes | 0:730586f57df2 | 62 | i = 0; |
stvnrhodes | 0:730586f57df2 | 63 | display.ClearScreen(); |
stvnrhodes | 0:730586f57df2 | 64 | } |
stvnrhodes | 0:730586f57df2 | 65 | timer2.reset(); |
stvnrhodes | 0:730586f57df2 | 66 | } |
stvnrhodes | 0:730586f57df2 | 67 | break; |
stvnrhodes | 0:730586f57df2 | 68 | case 3: |
stvnrhodes | 0:730586f57df2 | 69 | if(timer2.read_ms() > 500) { |
stvnrhodes | 0:730586f57df2 | 70 | rules(pic); |
stvnrhodes | 0:730586f57df2 | 71 | display.FullScreenBMP(pic); |
stvnrhodes | 0:730586f57df2 | 72 | timer2.reset(); |
stvnrhodes | 0:730586f57df2 | 73 | } |
stvnrhodes | 0:730586f57df2 | 74 | k, default: |
stvnrhodes | 0:730586f57df2 | 75 | break; |
stvnrhodes | 0:730586f57df2 | 76 | } |
stvnrhodes | 0:730586f57df2 | 77 | } |
stvnrhodes | 0:730586f57df2 | 78 | } |
stvnrhodes | 0:730586f57df2 | 79 | |
stvnrhodes | 0:730586f57df2 | 80 | void rules (unsigned char * array) { |
stvnrhodes | 0:730586f57df2 | 81 | char neighborArray[128][64]; |
stvnrhodes | 0:730586f57df2 | 82 | // Get number of neighbors |
stvnrhodes | 0:730586f57df2 | 83 | for (int x = 0; x < 128; x++) { |
stvnrhodes | 0:730586f57df2 | 84 | for (int y = 0;y < 64; y++) { |
stvnrhodes | 0:730586f57df2 | 85 | neighborArray[x][y] = 0; |
stvnrhodes | 0:730586f57df2 | 86 | } |
stvnrhodes | 0:730586f57df2 | 87 | } |
stvnrhodes | 0:730586f57df2 | 88 | for (int y = 0;y < 64; y++) { |
stvnrhodes | 0:730586f57df2 | 89 | for (int x = 0; x < 128; x++) { |
stvnrhodes | 0:730586f57df2 | 90 | if (array[x + (y/8*8)*16] & (1<<(y%8))) { |
stvnrhodes | 0:730586f57df2 | 91 | if (x != 0) { |
stvnrhodes | 0:730586f57df2 | 92 | neighborArray[x-1][y] += 1; |
stvnrhodes | 0:730586f57df2 | 93 | if (y != 0) { |
stvnrhodes | 0:730586f57df2 | 94 | neighborArray[x-1][y-1] += 1; |
stvnrhodes | 0:730586f57df2 | 95 | } |
stvnrhodes | 0:730586f57df2 | 96 | if (y != 127) { |
stvnrhodes | 0:730586f57df2 | 97 | neighborArray[x-1][y+1] += 1; |
stvnrhodes | 0:730586f57df2 | 98 | } |
stvnrhodes | 0:730586f57df2 | 99 | } |
stvnrhodes | 0:730586f57df2 | 100 | if (x != 127) { |
stvnrhodes | 0:730586f57df2 | 101 | neighborArray[x+1][y] += 1; |
stvnrhodes | 0:730586f57df2 | 102 | if (y != 0) { |
stvnrhodes | 0:730586f57df2 | 103 | neighborArray[x+1][y-1] += 1; |
stvnrhodes | 0:730586f57df2 | 104 | } |
stvnrhodes | 0:730586f57df2 | 105 | if (y != 127) { |
stvnrhodes | 0:730586f57df2 | 106 | neighborArray[x+1][y+1] += 1; |
stvnrhodes | 0:730586f57df2 | 107 | } |
stvnrhodes | 0:730586f57df2 | 108 | } |
stvnrhodes | 0:730586f57df2 | 109 | if (y != 0) { |
stvnrhodes | 0:730586f57df2 | 110 | neighborArray[x][y-1] += 1; |
stvnrhodes | 0:730586f57df2 | 111 | } |
stvnrhodes | 0:730586f57df2 | 112 | if (y != 63){ |
stvnrhodes | 0:730586f57df2 | 113 | neighborArray[x][y+1] += 1; |
stvnrhodes | 0:730586f57df2 | 114 | } |
stvnrhodes | 0:730586f57df2 | 115 | } |
stvnrhodes | 0:730586f57df2 | 116 | } |
stvnrhodes | 0:730586f57df2 | 117 | } |
stvnrhodes | 0:730586f57df2 | 118 | int arrayIndex; |
stvnrhodes | 0:730586f57df2 | 119 | for (int y = 0;y < 64; y++) { |
stvnrhodes | 0:730586f57df2 | 120 | for (int x = 0; x < 128; x++) { |
stvnrhodes | 0:730586f57df2 | 121 | arrayIndex = x + (y/8*8)*16; |
stvnrhodes | 0:730586f57df2 | 122 | if (neighborArray[x][y] == 3) { |
stvnrhodes | 0:730586f57df2 | 123 | array[arrayIndex] |= (1<<(y%8)); |
stvnrhodes | 0:730586f57df2 | 124 | } else if (neighborArray[x][y] == 2) { |
stvnrhodes | 0:730586f57df2 | 125 | continue; |
stvnrhodes | 0:730586f57df2 | 126 | } else { |
stvnrhodes | 0:730586f57df2 | 127 | array[arrayIndex] &= ~(1<<(y%8)); |
stvnrhodes | 0:730586f57df2 | 128 | } |
stvnrhodes | 0:730586f57df2 | 129 | } |
stvnrhodes | 0:730586f57df2 | 130 | } |
stvnrhodes | 0:730586f57df2 | 131 | } |
stvnrhodes | 0:730586f57df2 | 132 | |
stvnrhodes | 0:730586f57df2 | 133 | void random (unsigned char * array) { |
stvnrhodes | 0:730586f57df2 | 134 | for (int y = 0;y < 64; y += 8) { |
stvnrhodes | 0:730586f57df2 | 135 | for (int x = 0; x < 128; x++) { |
stvnrhodes | 0:730586f57df2 | 136 | array[x + y*16] = (unsigned char) rand(); |
stvnrhodes | 0:730586f57df2 | 137 | } |
stvnrhodes | 0:730586f57df2 | 138 | } |
stvnrhodes | 0:730586f57df2 | 139 | } |