Jong chaotic attractor - uVGAII(SGC) 4DGL version 640x480 pin p9 - rx, pin p10 - tx, pin p11 - rst

Committer:
JLS
Date:
Sat Sep 03 14:24:28 2011 +0000
Revision:
0:b2f36a1db66b

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JLS 0:b2f36a1db66b 1 #include "mbed.h"
JLS 0:b2f36a1db66b 2
JLS 0:b2f36a1db66b 3 Serial _cmd (p9, p10);
JLS 0:b2f36a1db66b 4 DigitalOut _rst (p11);
JLS 0:b2f36a1db66b 5
JLS 0:b2f36a1db66b 6 void startVGA();
JLS 0:b2f36a1db66b 7 void baudrate();
JLS 0:b2f36a1db66b 8 void cls();
JLS 0:b2f36a1db66b 9 void pixel(int, int, int);
JLS 0:b2f36a1db66b 10 int writeCOM(char *, int);
JLS 0:b2f36a1db66b 11
JLS 0:b2f36a1db66b 12
JLS 0:b2f36a1db66b 13 int main() {
JLS 0:b2f36a1db66b 14
JLS 0:b2f36a1db66b 15 startVGA ();
JLS 0:b2f36a1db66b 16
JLS 0:b2f36a1db66b 17 float x = 1;
JLS 0:b2f36a1db66b 18 float y = 1;
JLS 0:b2f36a1db66b 19
JLS 0:b2f36a1db66b 20 float ix = 1;
JLS 0:b2f36a1db66b 21 float iy = 1;
JLS 0:b2f36a1db66b 22
JLS 0:b2f36a1db66b 23 float a = -2;
JLS 0:b2f36a1db66b 24 float b = -2;
JLS 0:b2f36a1db66b 25 float c = -1.2;
JLS 0:b2f36a1db66b 26 float d = 2;
JLS 0:b2f36a1db66b 27
JLS 0:b2f36a1db66b 28 while (1) {
JLS 0:b2f36a1db66b 29
JLS 0:b2f36a1db66b 30 ix = sin(a*y) - cos(b*x);
JLS 0:b2f36a1db66b 31 iy = sin(c*x) - cos(d*y);
JLS 0:b2f36a1db66b 32
JLS 0:b2f36a1db66b 33 pixel(320+(150*ix),240+(110*iy),65534);
JLS 0:b2f36a1db66b 34
JLS 0:b2f36a1db66b 35 x = ix;
JLS 0:b2f36a1db66b 36 y = iy;
JLS 0:b2f36a1db66b 37
JLS 0:b2f36a1db66b 38 }
JLS 0:b2f36a1db66b 39 }
JLS 0:b2f36a1db66b 40
JLS 0:b2f36a1db66b 41
JLS 0:b2f36a1db66b 42 void startVGA () {
JLS 0:b2f36a1db66b 43
JLS 0:b2f36a1db66b 44 _rst = 1;
JLS 0:b2f36a1db66b 45 _rst = 0;
JLS 0:b2f36a1db66b 46 wait_ms(1);
JLS 0:b2f36a1db66b 47 _rst = 1;
JLS 0:b2f36a1db66b 48 wait(3);
JLS 0:b2f36a1db66b 49
JLS 0:b2f36a1db66b 50 while (_cmd.readable()) _cmd.getc();
JLS 0:b2f36a1db66b 51
JLS 0:b2f36a1db66b 52 char autobaud[1] = "";
JLS 0:b2f36a1db66b 53 autobaud[0] = '\x55';
JLS 0:b2f36a1db66b 54 writeCOM(autobaud, 1);
JLS 0:b2f36a1db66b 55
JLS 0:b2f36a1db66b 56 baudrate();
JLS 0:b2f36a1db66b 57
JLS 0:b2f36a1db66b 58 cls();
JLS 0:b2f36a1db66b 59
JLS 0:b2f36a1db66b 60 char dispctr[3]= "";
JLS 0:b2f36a1db66b 61 dispctr[0] = '\x59';
JLS 0:b2f36a1db66b 62 dispctr[1] = 0x0c;
JLS 0:b2f36a1db66b 63 dispctr[2] = 0x01;
JLS 0:b2f36a1db66b 64 writeCOM(dispctr, 3);
JLS 0:b2f36a1db66b 65
JLS 0:b2f36a1db66b 66 }
JLS 0:b2f36a1db66b 67
JLS 0:b2f36a1db66b 68
JLS 0:b2f36a1db66b 69 void pixel(int x, int y, int color) {
JLS 0:b2f36a1db66b 70
JLS 0:b2f36a1db66b 71 char pixel[7]= "";
JLS 0:b2f36a1db66b 72
JLS 0:b2f36a1db66b 73 pixel[0] = '\x50';
JLS 0:b2f36a1db66b 74
JLS 0:b2f36a1db66b 75 pixel[1] = (x >> 8) & 0xFF;
JLS 0:b2f36a1db66b 76 pixel[2] = x & 0xFF;
JLS 0:b2f36a1db66b 77
JLS 0:b2f36a1db66b 78 pixel[3] = (y >> 8) & 0xFF;
JLS 0:b2f36a1db66b 79 pixel[4] = y & 0xFF;
JLS 0:b2f36a1db66b 80
JLS 0:b2f36a1db66b 81 pixel[5] = (color >> 8) & 0xFF;
JLS 0:b2f36a1db66b 82 pixel[6] = color & 0xFF;
JLS 0:b2f36a1db66b 83
JLS 0:b2f36a1db66b 84 writeCOM(pixel, 7);
JLS 0:b2f36a1db66b 85 }
JLS 0:b2f36a1db66b 86
JLS 0:b2f36a1db66b 87
JLS 0:b2f36a1db66b 88 void baudrate() {
JLS 0:b2f36a1db66b 89
JLS 0:b2f36a1db66b 90 char baudrate[2]= "";
JLS 0:b2f36a1db66b 91
JLS 0:b2f36a1db66b 92 baudrate[0] = '\x51';
JLS 0:b2f36a1db66b 93 baudrate[1] = '\x0F';
JLS 0:b2f36a1db66b 94
JLS 0:b2f36a1db66b 95 int i, resp = 0;
JLS 0:b2f36a1db66b 96
JLS 0:b2f36a1db66b 97 while (_cmd.readable()) _cmd.getc();
JLS 0:b2f36a1db66b 98
JLS 0:b2f36a1db66b 99 long speed = speed = 281000;
JLS 0:b2f36a1db66b 100
JLS 0:b2f36a1db66b 101 for (i = 0; i <2; i++) _cmd.putc(baudrate[i]);
JLS 0:b2f36a1db66b 102 _cmd.baud(speed);
JLS 0:b2f36a1db66b 103
JLS 0:b2f36a1db66b 104 while (!_cmd.readable()) wait_ms(1);
JLS 0:b2f36a1db66b 105
JLS 0:b2f36a1db66b 106 if (_cmd.readable()) resp = _cmd.getc();
JLS 0:b2f36a1db66b 107 switch (resp) {
JLS 0:b2f36a1db66b 108 case '\x06' :
JLS 0:b2f36a1db66b 109 resp = 1;
JLS 0:b2f36a1db66b 110 break;
JLS 0:b2f36a1db66b 111 case '\x15' :
JLS 0:b2f36a1db66b 112 resp = -1;
JLS 0:b2f36a1db66b 113 break;
JLS 0:b2f36a1db66b 114 default :
JLS 0:b2f36a1db66b 115 resp = 0;
JLS 0:b2f36a1db66b 116 break;
JLS 0:b2f36a1db66b 117 }
JLS 0:b2f36a1db66b 118
JLS 0:b2f36a1db66b 119 }
JLS 0:b2f36a1db66b 120
JLS 0:b2f36a1db66b 121
JLS 0:b2f36a1db66b 122 int writeCOM(char *command, int number) {
JLS 0:b2f36a1db66b 123
JLS 0:b2f36a1db66b 124 int i, resp = 0;
JLS 0:b2f36a1db66b 125
JLS 0:b2f36a1db66b 126 while (_cmd.readable()) _cmd.getc();
JLS 0:b2f36a1db66b 127
JLS 0:b2f36a1db66b 128 for (i = 0; i < number; i++) _cmd.putc(command[i]);
JLS 0:b2f36a1db66b 129
JLS 0:b2f36a1db66b 130 while (!_cmd.readable()) wait_ms(1);
JLS 0:b2f36a1db66b 131 if (_cmd.readable()) resp = _cmd.getc();
JLS 0:b2f36a1db66b 132 switch (resp) {
JLS 0:b2f36a1db66b 133 case '\x06' :
JLS 0:b2f36a1db66b 134 resp = 1;
JLS 0:b2f36a1db66b 135 break;
JLS 0:b2f36a1db66b 136 case '\x15' :
JLS 0:b2f36a1db66b 137 resp = -1;
JLS 0:b2f36a1db66b 138 break;
JLS 0:b2f36a1db66b 139 default :
JLS 0:b2f36a1db66b 140 resp = 0;
JLS 0:b2f36a1db66b 141 break;
JLS 0:b2f36a1db66b 142 }
JLS 0:b2f36a1db66b 143
JLS 0:b2f36a1db66b 144 return resp;
JLS 0:b2f36a1db66b 145 }
JLS 0:b2f36a1db66b 146
JLS 0:b2f36a1db66b 147
JLS 0:b2f36a1db66b 148 void cls() {
JLS 0:b2f36a1db66b 149 char cls[1] = "";
JLS 0:b2f36a1db66b 150 cls[0] = '\x45';
JLS 0:b2f36a1db66b 151 writeCOM(cls, 1);
JLS 0:b2f36a1db66b 152 }