B13 final project part 1
Dependencies: mbed
iteadstudio_colourshield.cpp@0:0def0023f900, 2015-12-08 (annotated)
- Committer:
- mbedobsza
- Date:
- Tue Dec 08 21:42:56 2015 +0000
- Revision:
- 0:0def0023f900
13B_slave-fra221-6476
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbedobsza | 0:0def0023f900 | 1 | #include "mbed.h" |
mbedobsza | 0:0def0023f900 | 2 | #include "iteadstudio_colourshield.h" |
mbedobsza | 0:0def0023f900 | 3 | /**************Define*************************/ |
mbedobsza | 0:0def0023f900 | 4 | DigitalOut RGB_RST(A2); |
mbedobsza | 0:0def0023f900 | 5 | DigitalOut RGB_LAT(A1); |
mbedobsza | 0:0def0023f900 | 6 | DigitalOut RGB_SB(A0); |
mbedobsza | 0:0def0023f900 | 7 | |
mbedobsza | 0:0def0023f900 | 8 | /*DigitalIn nn0(D7); |
mbedobsza | 0:0def0023f900 | 9 | DigitalIn nn1(D2); |
mbedobsza | 0:0def0023f900 | 10 | DigitalIn nn2(D6);*/ |
mbedobsza | 0:0def0023f900 | 11 | SPI RGB_SPI(PB_15,PB_14,PB_13); |
mbedobsza | 0:0def0023f900 | 12 | BusOut RGB_CP(D8,D9,D10,D11,D12,D13,D3,D4); |
mbedobsza | 0:0def0023f900 | 13 | uint8_t RGBi= 0,RGBj= 0,RGBk= 0; |
mbedobsza | 0:0def0023f900 | 14 | uint8_t RedWB=55,GreenWB=0,BlueWB=60; // percent | R,G,B calibrate change it if some color brighter than other |
mbedobsza | 0:0def0023f900 | 15 | uint8_t display[8][8][3]= {0}; |
mbedobsza | 0:0def0023f900 | 16 | /*******************************************/ |
mbedobsza | 0:0def0023f900 | 17 | void sendframe(uint8_t frame[8][8][3]) |
mbedobsza | 0:0def0023f900 | 18 | { |
mbedobsza | 0:0def0023f900 | 19 | memcpy(display, frame, sizeof(display)); |
mbedobsza | 0:0def0023f900 | 20 | } |
mbedobsza | 0:0def0023f900 | 21 | void INITRGB(char in[3]) |
mbedobsza | 0:0def0023f900 | 22 | { |
mbedobsza | 0:0def0023f900 | 23 | int wd; |
mbedobsza | 0:0def0023f900 | 24 | RGB_RST =0; |
mbedobsza | 0:0def0023f900 | 25 | RGB_RST =1; |
mbedobsza | 0:0def0023f900 | 26 | RGB_SPI.frequency(20000000); |
mbedobsza | 0:0def0023f900 | 27 | RGB_SPI.format(8,1); |
mbedobsza | 0:0def0023f900 | 28 | RGB_LAT = 0; |
mbedobsza | 0:0def0023f900 | 29 | RGB_SB =0; |
mbedobsza | 0:0def0023f900 | 30 | int l=0; |
mbedobsza | 0:0def0023f900 | 31 | |
mbedobsza | 0:0def0023f900 | 32 | for (int i = 0; i<8; i++) { // Whitebalance......**important |
mbedobsza | 0:0def0023f900 | 33 | for (int j = 0; j<3; j++) { |
mbedobsza | 0:0def0023f900 | 34 | for (int k = 0; k<6; k++) { |
mbedobsza | 0:0def0023f900 | 35 | wd+=((in[j]<<k)&0b00100000)?1:0; |
mbedobsza | 0:0def0023f900 | 36 | wd<<1; |
mbedobsza | 0:0def0023f900 | 37 | l++; |
mbedobsza | 0:0def0023f900 | 38 | if(l>=7) { |
mbedobsza | 0:0def0023f900 | 39 | RGB_SPI.write(255); |
mbedobsza | 0:0def0023f900 | 40 | l=0; |
mbedobsza | 0:0def0023f900 | 41 | } |
mbedobsza | 0:0def0023f900 | 42 | } |
mbedobsza | 0:0def0023f900 | 43 | //RGB_SPI.write(255); |
mbedobsza | 0:0def0023f900 | 44 | } |
mbedobsza | 0:0def0023f900 | 45 | } |
mbedobsza | 0:0def0023f900 | 46 | |
mbedobsza | 0:0def0023f900 | 47 | RGB_LAT = 1; |
mbedobsza | 0:0def0023f900 | 48 | RGB_LAT = 0; |
mbedobsza | 0:0def0023f900 | 49 | |
mbedobsza | 0:0def0023f900 | 50 | RGB_SPI.format(8,0); |
mbedobsza | 0:0def0023f900 | 51 | } |
mbedobsza | 0:0def0023f900 | 52 | |
mbedobsza | 0:0def0023f900 | 53 | void displayRGB() |
mbedobsza | 0:0def0023f900 | 54 | { |
mbedobsza | 0:0def0023f900 | 55 | |
mbedobsza | 0:0def0023f900 | 56 | RGB_SB =1; |
mbedobsza | 0:0def0023f900 | 57 | for( RGBi=0; RGBi<8; RGBi++) { |
mbedobsza | 0:0def0023f900 | 58 | for( RGBk=0; RGBk<8; RGBk++) { |
mbedobsza | 0:0def0023f900 | 59 | for( RGBj=0; RGBj<3; RGBj++) { |
mbedobsza | 0:0def0023f900 | 60 | RGB_SPI.write(display[RGBk][RGBi][RGBj]); |
mbedobsza | 0:0def0023f900 | 61 | } |
mbedobsza | 0:0def0023f900 | 62 | |
mbedobsza | 0:0def0023f900 | 63 | } |
mbedobsza | 0:0def0023f900 | 64 | RGB_CP = 0; |
mbedobsza | 0:0def0023f900 | 65 | wait_us(15); |
mbedobsza | 0:0def0023f900 | 66 | RGB_LAT = 1; |
mbedobsza | 0:0def0023f900 | 67 | RGB_LAT = 0; |
mbedobsza | 0:0def0023f900 | 68 | |
mbedobsza | 0:0def0023f900 | 69 | RGB_CP = (0x01<<RGBi); |
mbedobsza | 0:0def0023f900 | 70 | |
mbedobsza | 0:0def0023f900 | 71 | } |
mbedobsza | 0:0def0023f900 | 72 | } |
mbedobsza | 0:0def0023f900 | 73 | |
mbedobsza | 0:0def0023f900 | 74 | void HSVtoRGB( float *r, float *g, float *b, float h, float s, float v ) |
mbedobsza | 0:0def0023f900 | 75 | { |
mbedobsza | 0:0def0023f900 | 76 | int i; |
mbedobsza | 0:0def0023f900 | 77 | float f, p, q, t; |
mbedobsza | 0:0def0023f900 | 78 | if( s == 0 ) { |
mbedobsza | 0:0def0023f900 | 79 | // achromatic (grey) |
mbedobsza | 0:0def0023f900 | 80 | *r = *g = *b = v; |
mbedobsza | 0:0def0023f900 | 81 | return; |
mbedobsza | 0:0def0023f900 | 82 | } |
mbedobsza | 0:0def0023f900 | 83 | h /= 60; // sector 0 to 5 |
mbedobsza | 0:0def0023f900 | 84 | i = floor( h ); |
mbedobsza | 0:0def0023f900 | 85 | f = h - i; // factorial part of h |
mbedobsza | 0:0def0023f900 | 86 | p = v * ( 1 - s ); |
mbedobsza | 0:0def0023f900 | 87 | q = v * ( 1 - s * f ); |
mbedobsza | 0:0def0023f900 | 88 | t = v * ( 1 - s * ( 1 - f ) ); |
mbedobsza | 0:0def0023f900 | 89 | switch( i ) { |
mbedobsza | 0:0def0023f900 | 90 | case 0: |
mbedobsza | 0:0def0023f900 | 91 | *r = v; |
mbedobsza | 0:0def0023f900 | 92 | *g = t; |
mbedobsza | 0:0def0023f900 | 93 | *b = p; |
mbedobsza | 0:0def0023f900 | 94 | break; |
mbedobsza | 0:0def0023f900 | 95 | case 1: |
mbedobsza | 0:0def0023f900 | 96 | *r = q; |
mbedobsza | 0:0def0023f900 | 97 | *g = v; |
mbedobsza | 0:0def0023f900 | 98 | *b = p; |
mbedobsza | 0:0def0023f900 | 99 | break; |
mbedobsza | 0:0def0023f900 | 100 | case 2: |
mbedobsza | 0:0def0023f900 | 101 | *r = p; |
mbedobsza | 0:0def0023f900 | 102 | *g = v; |
mbedobsza | 0:0def0023f900 | 103 | *b = t; |
mbedobsza | 0:0def0023f900 | 104 | break; |
mbedobsza | 0:0def0023f900 | 105 | case 3: |
mbedobsza | 0:0def0023f900 | 106 | *r = p; |
mbedobsza | 0:0def0023f900 | 107 | *g = q; |
mbedobsza | 0:0def0023f900 | 108 | *b = v; |
mbedobsza | 0:0def0023f900 | 109 | break; |
mbedobsza | 0:0def0023f900 | 110 | case 4: |
mbedobsza | 0:0def0023f900 | 111 | *r = t; |
mbedobsza | 0:0def0023f900 | 112 | *g = p; |
mbedobsza | 0:0def0023f900 | 113 | *b = v; |
mbedobsza | 0:0def0023f900 | 114 | break; |
mbedobsza | 0:0def0023f900 | 115 | default: // case 5: |
mbedobsza | 0:0def0023f900 | 116 | *r = v; |
mbedobsza | 0:0def0023f900 | 117 | *g = p; |
mbedobsza | 0:0def0023f900 | 118 | *b = q; |
mbedobsza | 0:0def0023f900 | 119 | break; |
mbedobsza | 0:0def0023f900 | 120 | } |
mbedobsza | 0:0def0023f900 | 121 | } |
mbedobsza | 0:0def0023f900 | 122 | void screen_zeros() |
mbedobsza | 0:0def0023f900 | 123 | { |
mbedobsza | 0:0def0023f900 | 124 | memset(display, 0, sizeof(display)); |
mbedobsza | 0:0def0023f900 | 125 | } |
mbedobsza | 0:0def0023f900 | 126 | |
mbedobsza | 0:0def0023f900 | 127 | |
mbedobsza | 0:0def0023f900 | 128 | |
mbedobsza | 0:0def0023f900 | 129 | |
mbedobsza | 0:0def0023f900 | 130 | |
mbedobsza | 0:0def0023f900 | 131 | |
mbedobsza | 0:0def0023f900 | 132 | |
mbedobsza | 0:0def0023f900 | 133 | |
mbedobsza | 0:0def0023f900 | 134 | |
mbedobsza | 0:0def0023f900 | 135 | |
mbedobsza | 0:0def0023f900 | 136 | |
mbedobsza | 0:0def0023f900 | 137 | |
mbedobsza | 0:0def0023f900 | 138 | |
mbedobsza | 0:0def0023f900 | 139 | |
mbedobsza | 0:0def0023f900 | 140 | |
mbedobsza | 0:0def0023f900 | 141 | |
mbedobsza | 0:0def0023f900 | 142 | |
mbedobsza | 0:0def0023f900 | 143 | |
mbedobsza | 0:0def0023f900 | 144 | |
mbedobsza | 0:0def0023f900 | 145 | |
mbedobsza | 0:0def0023f900 | 146 | |
mbedobsza | 0:0def0023f900 | 147 | |
mbedobsza | 0:0def0023f900 | 148 | |
mbedobsza | 0:0def0023f900 | 149 | |
mbedobsza | 0:0def0023f900 | 150 | |
mbedobsza | 0:0def0023f900 | 151 | |
mbedobsza | 0:0def0023f900 | 152 | |
mbedobsza | 0:0def0023f900 | 153 | |
mbedobsza | 0:0def0023f900 | 154 | |
mbedobsza | 0:0def0023f900 | 155 | |
mbedobsza | 0:0def0023f900 | 156 | |
mbedobsza | 0:0def0023f900 | 157 | |
mbedobsza | 0:0def0023f900 | 158 | |
mbedobsza | 0:0def0023f900 | 159 | |
mbedobsza | 0:0def0023f900 | 160 | |
mbedobsza | 0:0def0023f900 | 161 |