More HACMan stuff again
Dependencies: FatFileSystem SDFileSystem mbed
ledSign.cpp@0:ddc821040077, 2015-06-11 (annotated)
- Committer:
- TBSliver
- Date:
- Thu Jun 11 13:50:10 2015 +0000
- Revision:
- 0:ddc821040077
Initial no idea whats here commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
TBSliver | 0:ddc821040077 | 1 | #include "ledSign.h" |
TBSliver | 0:ddc821040077 | 2 | |
TBSliver | 0:ddc821040077 | 3 | // Sign Output Pins |
TBSliver | 0:ddc821040077 | 4 | |
TBSliver | 0:ddc821040077 | 5 | BusOut address(p17, p18, p19, p20); // Address 0 to 16 |
TBSliver | 0:ddc821040077 | 6 | BusOut colour(p15, p16); // 0 = off, 1 = red, 2 = green, 3 = orange |
TBSliver | 0:ddc821040077 | 7 | |
TBSliver | 0:ddc821040077 | 8 | DigitalOut abTop(p14); // bank A or B switch for Top Row - 0 = A, 1 = B |
TBSliver | 0:ddc821040077 | 9 | DigitalOut clkTop(p13); // clock for Top Row |
TBSliver | 0:ddc821040077 | 10 | DigitalOut weTop(p28); // Write Enable for Top Row |
TBSliver | 0:ddc821040077 | 11 | DigitalOut aeTop(p27); // Address Enable for Top Row |
TBSliver | 0:ddc821040077 | 12 | DigitalOut enbTop(p26); // Enable for Top Row |
TBSliver | 0:ddc821040077 | 13 | |
TBSliver | 0:ddc821040077 | 14 | DigitalOut abBot(p25); // bank A or B switch for Bottom Row - 0 = A, 1 = B |
TBSliver | 0:ddc821040077 | 15 | DigitalOut clkBot(p24); // clock for Bottom Row |
TBSliver | 0:ddc821040077 | 16 | DigitalOut weBot(p23); // Write Enable for Bottom Row |
TBSliver | 0:ddc821040077 | 17 | DigitalOut aeBot(p22); // Address Enable for Bottom Row |
TBSliver | 0:ddc821040077 | 18 | DigitalOut enbBot(p21); // Enable for Bottom Row |
TBSliver | 0:ddc821040077 | 19 | |
TBSliver | 0:ddc821040077 | 20 | LedSign::LedSign() { |
TBSliver | 0:ddc821040077 | 21 | address = 0; |
TBSliver | 0:ddc821040077 | 22 | colour = 0; |
TBSliver | 0:ddc821040077 | 23 | abTop = 0; |
TBSliver | 0:ddc821040077 | 24 | clkTop = 0; |
TBSliver | 0:ddc821040077 | 25 | weTop = 0; |
TBSliver | 0:ddc821040077 | 26 | aeTop = 0; |
TBSliver | 0:ddc821040077 | 27 | enbTop = 0; |
TBSliver | 0:ddc821040077 | 28 | abBot = 0; |
TBSliver | 0:ddc821040077 | 29 | clkBot = 0; |
TBSliver | 0:ddc821040077 | 30 | weBot = 0; |
TBSliver | 0:ddc821040077 | 31 | aeBot = 0; |
TBSliver | 0:ddc821040077 | 32 | enbBot = 0; |
TBSliver | 0:ddc821040077 | 33 | } |
TBSliver | 0:ddc821040077 | 34 | |
TBSliver | 0:ddc821040077 | 35 | void LedSign::enable() { |
TBSliver | 0:ddc821040077 | 36 | enbTop = 1; |
TBSliver | 0:ddc821040077 | 37 | enbBot = 1; |
TBSliver | 0:ddc821040077 | 38 | } |
TBSliver | 0:ddc821040077 | 39 | |
TBSliver | 0:ddc821040077 | 40 | void LedSign::disable() { |
TBSliver | 0:ddc821040077 | 41 | enbTop = 0; |
TBSliver | 0:ddc821040077 | 42 | enbBot = 0; |
TBSliver | 0:ddc821040077 | 43 | } |
TBSliver | 0:ddc821040077 | 44 | |
TBSliver | 0:ddc821040077 | 45 | void LedSign::swapBank() { |
TBSliver | 0:ddc821040077 | 46 | (abTop) ? abTop = 0 : abTop = 1; |
TBSliver | 0:ddc821040077 | 47 | (abBot) ? abBot = 0 : abBot = 1; |
TBSliver | 0:ddc821040077 | 48 | } |
TBSliver | 0:ddc821040077 | 49 | |
TBSliver | 0:ddc821040077 | 50 | void LedSign::writeRow(int * pointer, int wRow) { |
TBSliver | 0:ddc821040077 | 51 | if(wRow <= 15) { |
TBSliver | 0:ddc821040077 | 52 | for(int col = 0; col < 128; col++) { |
TBSliver | 0:ddc821040077 | 53 | colour = *(pointer + col); |
TBSliver | 0:ddc821040077 | 54 | clockTop(); |
TBSliver | 0:ddc821040077 | 55 | } |
TBSliver | 0:ddc821040077 | 56 | |
TBSliver | 0:ddc821040077 | 57 | writeTop(wRow); |
TBSliver | 0:ddc821040077 | 58 | } |
TBSliver | 0:ddc821040077 | 59 | if(wRow >= 16) { |
TBSliver | 0:ddc821040077 | 60 | for(int col = 0; col < 128; col++) { |
TBSliver | 0:ddc821040077 | 61 | colour = *(pointer + col); |
TBSliver | 0:ddc821040077 | 62 | clockBot(); |
TBSliver | 0:ddc821040077 | 63 | } |
TBSliver | 0:ddc821040077 | 64 | |
TBSliver | 0:ddc821040077 | 65 | writeBot(wRow - 16); |
TBSliver | 0:ddc821040077 | 66 | } |
TBSliver | 0:ddc821040077 | 67 | } |
TBSliver | 0:ddc821040077 | 68 | |
TBSliver | 0:ddc821040077 | 69 | void LedSign::writeScreenColour(int newColour) { |
TBSliver | 0:ddc821040077 | 70 | colour = newColour; //set colour to write to screen |
TBSliver | 0:ddc821040077 | 71 | for (int i=0; i<128; i++) { // clock in 128 bits to turn all the LED's on |
TBSliver | 0:ddc821040077 | 72 | clockIn(); |
TBSliver | 0:ddc821040077 | 73 | } |
TBSliver | 0:ddc821040077 | 74 | |
TBSliver | 0:ddc821040077 | 75 | for (int i=0; i<16; i++) { //actually write them for all lines |
TBSliver | 0:ddc821040077 | 76 | writeTop(i); |
TBSliver | 0:ddc821040077 | 77 | writeBot(i); |
TBSliver | 0:ddc821040077 | 78 | } |
TBSliver | 0:ddc821040077 | 79 | |
TBSliver | 0:ddc821040077 | 80 | swapBank(); |
TBSliver | 0:ddc821040077 | 81 | |
TBSliver | 0:ddc821040077 | 82 | } |
TBSliver | 0:ddc821040077 | 83 | |
TBSliver | 0:ddc821040077 | 84 | //********************Private Declerations******************** |
TBSliver | 0:ddc821040077 | 85 | |
TBSliver | 0:ddc821040077 | 86 | void LedSign::writeTop(int topAddress) { |
TBSliver | 0:ddc821040077 | 87 | address = topAddress; |
TBSliver | 0:ddc821040077 | 88 | aeTop = 1; |
TBSliver | 0:ddc821040077 | 89 | wait_us(1); |
TBSliver | 0:ddc821040077 | 90 | weTop = 1; |
TBSliver | 0:ddc821040077 | 91 | wait_us(1); |
TBSliver | 0:ddc821040077 | 92 | weTop = 0; |
TBSliver | 0:ddc821040077 | 93 | wait_us(1); |
TBSliver | 0:ddc821040077 | 94 | aeTop = 0; |
TBSliver | 0:ddc821040077 | 95 | wait_us(1); |
TBSliver | 0:ddc821040077 | 96 | } |
TBSliver | 0:ddc821040077 | 97 | |
TBSliver | 0:ddc821040077 | 98 | void LedSign::writeBot(int botAddress) { |
TBSliver | 0:ddc821040077 | 99 | address = botAddress; |
TBSliver | 0:ddc821040077 | 100 | aeBot = 1; |
TBSliver | 0:ddc821040077 | 101 | wait_us(1); |
TBSliver | 0:ddc821040077 | 102 | weBot = 1; |
TBSliver | 0:ddc821040077 | 103 | wait_us(1); |
TBSliver | 0:ddc821040077 | 104 | weBot = 0; |
TBSliver | 0:ddc821040077 | 105 | wait_us(1); |
TBSliver | 0:ddc821040077 | 106 | aeBot = 0; |
TBSliver | 0:ddc821040077 | 107 | wait_us(1); |
TBSliver | 0:ddc821040077 | 108 | } |
TBSliver | 0:ddc821040077 | 109 | |
TBSliver | 0:ddc821040077 | 110 | void LedSign::clockTop() { |
TBSliver | 0:ddc821040077 | 111 | wait_us(1); |
TBSliver | 0:ddc821040077 | 112 | clkTop = 1; |
TBSliver | 0:ddc821040077 | 113 | wait_us(1); |
TBSliver | 0:ddc821040077 | 114 | clkTop = 0; |
TBSliver | 0:ddc821040077 | 115 | wait_us(1); |
TBSliver | 0:ddc821040077 | 116 | } |
TBSliver | 0:ddc821040077 | 117 | |
TBSliver | 0:ddc821040077 | 118 | void LedSign::clockBot() { |
TBSliver | 0:ddc821040077 | 119 | wait_us(1); |
TBSliver | 0:ddc821040077 | 120 | clkBot = 1; |
TBSliver | 0:ddc821040077 | 121 | wait_us(1); |
TBSliver | 0:ddc821040077 | 122 | clkBot = 0; |
TBSliver | 0:ddc821040077 | 123 | wait_us(1); |
TBSliver | 0:ddc821040077 | 124 | } |
TBSliver | 0:ddc821040077 | 125 | |
TBSliver | 0:ddc821040077 | 126 | void LedSign::clockIn() { |
TBSliver | 0:ddc821040077 | 127 | wait_us(1); |
TBSliver | 0:ddc821040077 | 128 | clkTop = 1; |
TBSliver | 0:ddc821040077 | 129 | clkBot = 1; |
TBSliver | 0:ddc821040077 | 130 | wait_us(1); |
TBSliver | 0:ddc821040077 | 131 | clkTop = 0; |
TBSliver | 0:ddc821040077 | 132 | clkBot = 0; |
TBSliver | 0:ddc821040077 | 133 | wait_us(1); |
TBSliver | 0:ddc821040077 | 134 | } |