Tom Bloor
/
LEDSign
Something for HACMan LED Sign
main.cpp@1:354410846278, 2011-08-27 (annotated)
- Committer:
- TBSliver
- Date:
- Sat Aug 27 09:53:12 2011 +0000
- Revision:
- 1:354410846278
- Parent:
- 0:772568a970df
- Child:
- 2:ecd97a0901e2
hopefully working with tests;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
TBSliver |
1:354410846278 | 1 | #include "ledsign.h" |
TBSliver |
0:772568a970df | 2 | |
TBSliver |
0:772568a970df | 3 | // Sign Output Pins |
TBSliver |
0:772568a970df | 4 | |
TBSliver |
0:772568a970df | 5 | BusOut address(p25, p26, p27, p28); // Address 0 to 16 |
TBSliver |
0:772568a970df | 6 | BusOut colour(p23, p24); // 0 = off, 1 = red, 2 = green, 3 = orange |
TBSliver |
0:772568a970df | 7 | |
TBSliver |
1:354410846278 | 8 | DigitalOut abTop(p22); // bank A or B switch for Top Row - 1 = write to A, display B, 0 = write to B, display A |
TBSliver |
0:772568a970df | 9 | DigitalOut clkTop(p21); // clock for Top Row |
TBSliver |
0:772568a970df | 10 | DigitalOut weTop(p20); // Write Enable for Top Row |
TBSliver |
0:772568a970df | 11 | DigitalOut aeTop(p19); // Address Enable for Top Row |
TBSliver |
0:772568a970df | 12 | DigitalOut enbTop(p18); // Enable for Top Row |
TBSliver |
0:772568a970df | 13 | |
TBSliver |
1:354410846278 | 14 | DigitalOut abBot(p17); // bank A or B switch for Bottom Row - 1 = write to A, display B, 0 = write to B, display A |
TBSliver |
0:772568a970df | 15 | DigitalOut clkBot(p16); // clock for Bottom Row |
TBSliver |
0:772568a970df | 16 | DigitalOut weBot(p15); // Write Enable for Bottom Row |
TBSliver |
0:772568a970df | 17 | DigitalOut aeBot(p14); // Address Enable for Bottom Row |
TBSliver |
0:772568a970df | 18 | DigitalOut enbBot(p13); // Enable for Bottom Row |
TBSliver |
0:772568a970df | 19 | |
TBSliver |
0:772568a970df | 20 | int main() { |
TBSliver |
1:354410846278 | 21 | |
TBSliver |
1:354410846278 | 22 | setup(); |
TBSliver |
1:354410846278 | 23 | |
TBSliver |
1:354410846278 | 24 | test1(); |
TBSliver |
1:354410846278 | 25 | |
TBSliver |
1:354410846278 | 26 | clearScreen(); |
TBSliver |
1:354410846278 | 27 | |
TBSliver |
1:354410846278 | 28 | } |
TBSliver |
1:354410846278 | 29 | |
TBSliver |
1:354410846278 | 30 | void setup() { |
TBSliver |
1:354410846278 | 31 | address = 0; |
TBSliver |
1:354410846278 | 32 | colour = 0; |
TBSliver |
1:354410846278 | 33 | abTop = 0; |
TBSliver |
1:354410846278 | 34 | clkTop = 0; |
TBSliver |
1:354410846278 | 35 | weTop = 0; |
TBSliver |
1:354410846278 | 36 | aeTop = 0; |
TBSliver |
1:354410846278 | 37 | enbTop = 0; |
TBSliver |
1:354410846278 | 38 | abBot = 0; |
TBSliver |
1:354410846278 | 39 | clkBot = 0; |
TBSliver |
1:354410846278 | 40 | weBot = 0; |
TBSliver |
1:354410846278 | 41 | aeBot = 0; |
TBSliver |
1:354410846278 | 42 | enbBot = 0; |
TBSliver |
1:354410846278 | 43 | } |
TBSliver |
1:354410846278 | 44 | |
TBSliver |
1:354410846278 | 45 | void test1() { |
TBSliver |
1:354410846278 | 46 | /* |
TBSliver |
1:354410846278 | 47 | This function should turn on the whole screen to orange, then make the |
TBSliver |
1:354410846278 | 48 | right hand side orange, left hand side black, and then make the left hand |
TBSliver |
1:354410846278 | 49 | side orange, right hand side black. |
TBSliver |
1:354410846278 | 50 | */ |
TBSliver |
1:354410846278 | 51 | colour = 3; // set colour to orange |
TBSliver |
1:354410846278 | 52 | abTop = 1; // set top bank to A |
TBSliver |
1:354410846278 | 53 | abBot = 1; // set bottom bank to A |
TBSliver |
1:354410846278 | 54 | |
TBSliver |
1:354410846278 | 55 | for (int i=0; i<128; i++) { // clock in 128 bits to turn all the LED's on |
TBSliver |
1:354410846278 | 56 | clkTop = 1; |
TBSliver |
1:354410846278 | 57 | clkBot = 1; |
TBSliver |
1:354410846278 | 58 | wait_us(10); |
TBSliver |
1:354410846278 | 59 | clkTop = 0; |
TBSliver |
1:354410846278 | 60 | clkBot = 0; |
TBSliver |
1:354410846278 | 61 | wait_us(10); |
TBSliver |
1:354410846278 | 62 | } |
TBSliver |
1:354410846278 | 63 | |
TBSliver |
1:354410846278 | 64 | for (int i=0; i<16; i++) { |
TBSliver |
1:354410846278 | 65 | writeTop(i); |
TBSliver |
1:354410846278 | 66 | writeBot(i); |
TBSliver |
1:354410846278 | 67 | } |
TBSliver |
1:354410846278 | 68 | |
TBSliver |
1:354410846278 | 69 | abTop = 0; |
TBSliver |
1:354410846278 | 70 | abBot = 0; |
TBSliver |
1:354410846278 | 71 | enbTop = 1; |
TBSliver |
1:354410846278 | 72 | enbBot = 1; |
TBSliver |
1:354410846278 | 73 | |
TBSliver |
1:354410846278 | 74 | wait(0.5); |
TBSliver |
1:354410846278 | 75 | |
TBSliver |
1:354410846278 | 76 | colour = 0; |
TBSliver |
1:354410846278 | 77 | |
TBSliver |
1:354410846278 | 78 | for (int i=0; i<64; i++) { // clock in 64 bits of black |
TBSliver |
1:354410846278 | 79 | clkTop = 1; |
TBSliver |
1:354410846278 | 80 | clkBot = 1; |
TBSliver |
1:354410846278 | 81 | wait_us(10); |
TBSliver |
1:354410846278 | 82 | clkTop = 0; |
TBSliver |
1:354410846278 | 83 | clkBot = 0; |
TBSliver |
1:354410846278 | 84 | wait_us(10); |
TBSliver |
1:354410846278 | 85 | } |
TBSliver |
1:354410846278 | 86 | |
TBSliver |
1:354410846278 | 87 | for (int i=0; i<16; i++) { |
TBSliver |
1:354410846278 | 88 | writeTop(i); |
TBSliver |
1:354410846278 | 89 | writeBot(i); |
TBSliver |
1:354410846278 | 90 | } |
TBSliver |
1:354410846278 | 91 | |
TBSliver |
1:354410846278 | 92 | abTop = 1; |
TBSliver |
1:354410846278 | 93 | abBot = 1; |
TBSliver |
1:354410846278 | 94 | |
TBSliver |
1:354410846278 | 95 | wait(0.5); |
TBSliver |
1:354410846278 | 96 | |
TBSliver |
1:354410846278 | 97 | colour = 3; |
TBSliver |
1:354410846278 | 98 | |
TBSliver |
1:354410846278 | 99 | for (int i=0; i<64; i++) { // clock in 64 bits of orange |
TBSliver |
1:354410846278 | 100 | clkTop = 1; |
TBSliver |
1:354410846278 | 101 | clkBot = 1; |
TBSliver |
1:354410846278 | 102 | wait_us(10); |
TBSliver |
1:354410846278 | 103 | clkTop = 0; |
TBSliver |
1:354410846278 | 104 | clkBot = 0; |
TBSliver |
1:354410846278 | 105 | wait_us(10); |
TBSliver |
1:354410846278 | 106 | } |
TBSliver |
1:354410846278 | 107 | |
TBSliver |
1:354410846278 | 108 | for (int i=0; i<16; i++) { |
TBSliver |
1:354410846278 | 109 | writeTop(i); |
TBSliver |
1:354410846278 | 110 | writeBot(i); |
TBSliver |
1:354410846278 | 111 | } |
TBSliver |
1:354410846278 | 112 | |
TBSliver |
1:354410846278 | 113 | abTop = 1; |
TBSliver |
1:354410846278 | 114 | abBot = 1; |
TBSliver |
1:354410846278 | 115 | |
TBSliver |
1:354410846278 | 116 | wait(0.5); |
TBSliver |
1:354410846278 | 117 | } |
TBSliver |
1:354410846278 | 118 | |
TBSliver |
1:354410846278 | 119 | void clearScreen() { |
TBSliver |
1:354410846278 | 120 | enbTop = 0; |
TBSliver |
1:354410846278 | 121 | enbBot = 0; |
TBSliver |
1:354410846278 | 122 | abTop = 1; |
TBSliver |
1:354410846278 | 123 | abBot = 1; |
TBSliver |
1:354410846278 | 124 | |
TBSliver |
1:354410846278 | 125 | colour = 0; |
TBSliver |
1:354410846278 | 126 | |
TBSliver |
1:354410846278 | 127 | for (int i=0; i<128; i++) { // clock in 128 bits of black |
TBSliver |
1:354410846278 | 128 | clkTop = 1; |
TBSliver |
1:354410846278 | 129 | clkBot = 1; |
TBSliver |
1:354410846278 | 130 | wait_us(10); |
TBSliver |
1:354410846278 | 131 | clkTop = 0; |
TBSliver |
1:354410846278 | 132 | clkBot = 0; |
TBSliver |
1:354410846278 | 133 | wait_us(10); |
TBSliver |
1:354410846278 | 134 | } |
TBSliver |
1:354410846278 | 135 | |
TBSliver |
1:354410846278 | 136 | for (int i=0; i<16; i++) { |
TBSliver |
1:354410846278 | 137 | writeTop(i); |
TBSliver |
1:354410846278 | 138 | writeBot(i); |
TBSliver |
1:354410846278 | 139 | } |
TBSliver |
1:354410846278 | 140 | |
TBSliver |
1:354410846278 | 141 | abTop = 0; |
TBSliver |
1:354410846278 | 142 | abBot = 0; |
TBSliver |
1:354410846278 | 143 | |
TBSliver |
1:354410846278 | 144 | for (int i=0; i<16; i++) { |
TBSliver |
1:354410846278 | 145 | writeTop(i); |
TBSliver |
1:354410846278 | 146 | writeBot(i); |
TBSliver |
1:354410846278 | 147 | } |
TBSliver |
0:772568a970df | 148 | |
TBSliver |
0:772568a970df | 149 | } |
TBSliver |
1:354410846278 | 150 | |
TBSliver |
1:354410846278 | 151 | void writeTop(int topAddress) { |
TBSliver |
1:354410846278 | 152 | address = topAddress; |
TBSliver |
1:354410846278 | 153 | aeTop = 1; |
TBSliver |
1:354410846278 | 154 | wait_us(1); |
TBSliver |
1:354410846278 | 155 | weTop = 1; |
TBSliver |
1:354410846278 | 156 | wait_us(1); |
TBSliver |
1:354410846278 | 157 | weTop = 0; |
TBSliver |
1:354410846278 | 158 | wait_us(1); |
TBSliver |
1:354410846278 | 159 | aeTop = 0; |
TBSliver |
1:354410846278 | 160 | wait_us(1); |
TBSliver |
1:354410846278 | 161 | } |
TBSliver |
1:354410846278 | 162 | |
TBSliver |
1:354410846278 | 163 | void writeBot(int botAddress) { |
TBSliver |
1:354410846278 | 164 | address = botAddress; |
TBSliver |
1:354410846278 | 165 | aeBot = 1; |
TBSliver |
1:354410846278 | 166 | wait_us(1); |
TBSliver |
1:354410846278 | 167 | weBot = 1; |
TBSliver |
1:354410846278 | 168 | wait_us(1); |
TBSliver |
1:354410846278 | 169 | weBot = 0; |
TBSliver |
1:354410846278 | 170 | wait_us(1); |
TBSliver |
1:354410846278 | 171 | aeBot = 0; |
TBSliver |
1:354410846278 | 172 | wait_us(1); |
TBSliver |
1:354410846278 | 173 | } |