summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp118
1 files changed, 118 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp
new file mode 100644
index 0000000..af9911c
--- /dev/null
+++ b/src/main.cpp
@@ -0,0 +1,118 @@
1
2#include <Arduino.h>
3#include "pinDefs.h"
4
5
6class BootlegDumbMatrix {
7public:
8
9 int oe;
10 int latch;
11 int clock;
12 int data;
13
14 int rowCount;
15 int *rowPins;
16
17 BootlegDumbMatrix(){};
18
19 void init(){
20 pinMode(oe, OUTPUT);
21 pinMode(latch, OUTPUT);
22 pinMode(clock, OUTPUT);
23 pinMode(data, OUTPUT);
24
25 for (int i = 0; i < rowCount; i++) {
26 pinMode(rowPins[i], OUTPUT);
27 digitalWrite(rowPins[i], HIGH);
28 }
29
30 digitalWrite(oe, LOW);
31 }
32
33 void setRow(int row) {
34 for (int i = 0; i < rowCount; i++) {
35 digitalWrite(rowPins[i], HIGH);
36 }
37 if (row > rowCount) {
38 return;
39 }
40 digitalWrite(rowPins[row], LOW);
41 }
42
43 void shiftOut(uint8_t val) {
44 uint8_t i;
45
46 for (i = 0; i < 8; i++) {
47 digitalWrite(data, !!(val & (1 << i)));
48
49 digitalWrite(clock, HIGH);
50 digitalWrite(clock, LOW);
51 }
52 }
53
54 uint8_t lineBuffer[12];
55
56 void spewBuf(){
57 for (int i = 0; i < 12; i++) {
58 shiftOut(lineBuffer[i]);
59 }
60 }
61
62 void drawRow(int rowNum){
63 setRow(rowNum);
64
65
66 delayMicroseconds(delayVal);
67 digitalWrite(LATCH_PIN, LOW);
68 // delay(1);
69 digitalWrite(LATCH_PIN, HIGH);
70 }
71
72 void drawFrame(){
73 for (int line = 0; line < 8; line++) {
74 uint8_t *pattern = getPattern(line);
75 for (int i = 0; i < 12; i++) {
76 lineBuffer[i] = pattern[i];
77 }
78 spewBuf();
79 }
80 }
81
82 uint8_t getGreenPattern(int i){
83 switch (i%3){
84 case 0:
85 return 0b01001001;
86 case 1:
87 return 0b10010010;
88 default:
89 return 0b00100100;
90 }
91 }
92
93};
94
95BootlegDumbMatrix dmatrix = BootlegDumbMatrix();
96
97void setup() {
98
99 dmatrix.oe = OE_PIN;
100 dmatrix.latch = LATCH_PIN;
101 dmatrix.clock = CLOCK_PIN;
102 dmatrix.data = DATA_PIN;
103 dmatrix.rowCount = 8;
104 dmatrix.rowPins = new int[8];
105 memcpy(dmatrix.rowPins, ROW_PINS, 8*sizeof(int));
106 // dmatrix.rowPins = ROW_PINS;
107 dmatrix.init();
108
109 Serial.begin(115200);
110}
111
112int counter = 0;
113int delayVal = 15000;
114
115void loop() {
116 dmatrix.drawFrame();
117
118} \ No newline at end of file