#include "LEDMatrix.h"
#include "Arduino.h"
-#define USE_SPI 1
-
#if USE_SPI
#include <SPI.h>
#endif
#if USE_SPI
SPI.begin();
#endif
+ buffer = 0;
}
void LEDMatrix::begin(uint8_t *displaybuf, uint16_t width, uint16_t height)
}
uint8_t *head = displaybuf + row * (width / 8);
+
+ if ( buffer ) head += (width/8) * height;
+
for (uint8_t line = 0; line < (height / 16); line++) {
uint8_t *ptr = head;
head += width * 2; // width * 16 / 8
}
}
- digitalWrite(oe, HIGH); // disable display
-
// select row
digitalWrite(a, (row & 0x01));
digitalWrite(b, (row & 0x02));
digitalWrite(c, (row & 0x04));
digitalWrite(d, (row & 0x08));
+ digitalWrite(oe, HIGH); // disable display
+
// latch data
digitalWrite(stb, LOW);
digitalWrite(stb, HIGH);
row = (row + 1) & 0x0F;
}
+uint8_t *LEDMatrix::offscreen_buffer()
+{
+ uint8_t *buff = displaybuf;
+ if ( ! buffer ) buff += (width/8) * height;
+ return buff;
+}
+
+void LEDMatrix::swap()
+{
+ buffer = ! buffer;
+}
+
void LEDMatrix::on()
{
state = 1;