AberLED shield library
Library for the bicolor LED (and TFT screen) shield used in CS12020
main.cpp
Go to the documentation of this file.
1 #include <AberLED.h>
2 
3 void setup(){
4  AberLED.begin();
5 }
6 
7 uint16_t getPixels(byte image, int colour){
8  uint16_t pixels = 0;
9  for(int i = 0; i < 4; i++){
10  if(image & (1 << (4-i))) {
11  pixels |= (colour << (i * 2));
12  }
13  }
14  return pixels;
15 }
16 
17 void renderDigit(bool topdigit, int digit, int col){
18  uint16_t *buffer = AberLED.getBuffer();
19  int shift = topdigit ? 0 : 8;
20  buffer++; // start at row 1
21  switch(digit){
22  case 1:
23  *buffer++ |= getPixels(0b1100, col) << shift;
24  *buffer++ |= getPixels(0b0100, col) << shift;
25  *buffer++ |= getPixels(0b0100, col) << shift;
26  *buffer++ |= getPixels(0b0100, col) << shift;
27  *buffer++ |= getPixels(0b0100, col) << shift;
28  *buffer++ |= getPixels(0b1110, col) << shift;
29  break;
30  case 2:
31  *buffer++ |= getPixels(0b1110, col) << shift;
32  *buffer++ |= getPixels(0b0010, col) << shift;
33  *buffer++ |= getPixels(0b0010, col) << shift;
34  *buffer++ |= getPixels(0b1110, col) << shift;
35  *buffer++ |= getPixels(0b1000, col) << shift;
36  *buffer++ |= getPixels(0b1110, col) << shift;
37  break;
38  case 3:
39  *buffer++ |= getPixels(0b1110, col) << shift;
40  *buffer++ |= getPixels(0b0010, col) << shift;
41  *buffer++ |= getPixels(0b0010, col) << shift;
42  *buffer++ |= getPixels(0b1110, col) << shift;
43  *buffer++ |= getPixels(0b0010, col) << shift;
44  *buffer++ |= getPixels(0b1110, col) << shift;
45  break;
46  case 4:
47  *buffer++ |= getPixels(0b1010, col) << shift;
48  *buffer++ |= getPixels(0b1010, col) << shift;
49  *buffer++ |= getPixels(0b1110, col) << shift;
50  *buffer++ |= getPixels(0b0010, col) << shift;
51  *buffer++ |= getPixels(0b0010, col) << shift;
52  *buffer++ |= getPixels(0b0010, col) << shift;
53  break;
54  case 5:
55  *buffer++ |= getPixels(0b1110, col) << shift;
56  *buffer++ |= getPixels(0b1000, col) << shift;
57  *buffer++ |= getPixels(0b1110, col) << shift;
58  *buffer++ |= getPixels(0b0010, col) << shift;
59  *buffer++ |= getPixels(0b0010, col) << shift;
60  *buffer++ |= getPixels(0b1110, col) << shift;
61  break;
62  case 6:
63  *buffer++ |= getPixels(0b1110, col) << shift;
64  *buffer++ |= getPixels(0b1000, col) << shift;
65  *buffer++ |= getPixels(0b1110, col) << shift;
66  *buffer++ |= getPixels(0b1010, col) << shift;
67  *buffer++ |= getPixels(0b1010, col) << shift;
68  *buffer++ |= getPixels(0b1110, col) << shift;
69  break;
70  case 7:
71  *buffer++ |= getPixels(0b1110, col) << shift;
72  *buffer++ |= getPixels(0b0010, col) << shift;
73  *buffer++ |= getPixels(0b0010, col) << shift;
74  *buffer++ |= getPixels(0b0010, col) << shift;
75  *buffer++ |= getPixels(0b0010, col) << shift;
76  *buffer++ |= getPixels(0b0010, col) << shift;
77  break;
78  case 8:
79  *buffer++ |= getPixels(0b1110, col) << shift;
80  *buffer++ |= getPixels(0b1010, col) << shift;
81  *buffer++ |= getPixels(0b1110, col) << shift;
82  *buffer++ |= getPixels(0b1010, col) << shift;
83  *buffer++ |= getPixels(0b1010, col) << shift;
84  *buffer++ |= getPixels(0b1110, col) << shift;
85  break;
86  case 9:
87  *buffer++ |= getPixels(0b1110, col) << shift;
88  *buffer++ |= getPixels(0b1010, col) << shift;
89  *buffer++ |= getPixels(0b1110, col) << shift;
90  *buffer++ |= getPixels(0b0010, col) << shift;
91  *buffer++ |= getPixels(0b0010, col) << shift;
92  *buffer++ |= getPixels(0b1110, col) << shift;
93  break;
94  case 0:
95  *buffer++ |= getPixels(0b1110, col) << shift;
96  *buffer++ |= getPixels(0b1010, col) << shift;
97  *buffer++ |= getPixels(0b1010, col) << shift;
98  *buffer++ |= getPixels(0b1010, col) << shift;
99  *buffer++ |= getPixels(0b1010, col) << shift;
100  *buffer++ |= getPixels(0b1110, col) << shift;
101  break;
102  default:break;
103  }
104 }
105 
106 
107 int v = 0;
108 
109 void loop(){
110  AberLED.clear();
111  renderDigit(true, v/10, GREEN);
112  renderDigit(false, v%10, RED);
113  delay(100);
114  v++;
115  v%=100;
116 
117 
118  AberLED.swap();
119 }
void clear()
Set all pixels in the back buffer to black.
Definition: AberLED.cpp:376
void begin(AberLEDFlags flags=AF_TFTDISPLAY, uint8_t *colourMap=NULL)
Initialises all pin modes, clears the buffers, starts the interrupt and begins to output data to the ...
Definition: AberLED.cpp:158
void loop()
Definition: main.cpp:109
void setup()
Definition: main.cpp:3
AberLEDClass AberLED
this is the single instance of the LED class - for documentation see AberLEDClass.
Definition: AberLED.cpp:76
The declaration for the AberLED class. Many implementation details are inside the AberLED implementat...
int v
Definition: main.cpp:107
void renderDigit(bool topdigit, int digit, int col)
Definition: main.cpp:17
#define GREEN
the green colour for pixels, used in set()
Definition: AberLED.h:23
#define RED
the red colour for pixels, used in set()
Definition: AberLED.h:25
uint16_t * getBuffer()
Call this to write to the back buffer directly. It returns a pointer to the buffer: a set of 8 16-bit...
Definition: AberLED.cpp:354
uint16_t getPixels(byte image, int colour)
Definition: main.cpp:7
void swap()
Call this code to finish drawing operations. It swaps the back and front buffer, so that the newly wr...
Definition: AberLED.cpp:259