Steven Rhodes / Mbed 2 deprecated DisplayTest

Dependencies:   mbed

Committer:
stvnrhodes
Date:
Thu Feb 02 03:20:45 2012 +0000
Revision:
0:730586f57df2

        

Who changed what in which revision?

UserRevisionLine numberNew 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 }