this hurts

Dependencies:   FFT

Revision:
0:d6c9b09b4042
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Adafruit_LEDBackpack/Adafruit_LEDBackpack.cpp	Wed Dec 02 18:02:03 2020 +0000
@@ -0,0 +1,114 @@
+/*************************************************** 
+  This is a library for our I2C LED Backpacks
+
+  Designed specifically to work with the Adafruit LED Matrix backpacks 
+  ----> http://www.adafruit.com/products/
+  ----> http://www.adafruit.com/products/
+
+  These displays use I2C to communicate, 2 pins are required to 
+  interface. There are multiple selectable I2C addresses. For backpacks
+  with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks
+  with 3 Address Select pins: 0x70 thru 0x77
+
+  Adafruit invests time and resources providing this open source code, 
+  please support Adafruit and open-source hardware by purchasing 
+  products from Adafruit!
+
+  Written by Limor Fried/Ladyada for Adafruit Industries.  
+  BSD license, all text above must be included in any redistribution
+ ****************************************************/
+ 
+ /*
+ *  Modified by Luiz Hespanha (http://www.d3.do) 8/16/2013 for use in LPC1768
+ */
+
+#include "mbed.h"
+#include "Adafruit_LEDBackpack.h"
+#include "Adafruit_GFX.h"
+
+void Adafruit_LEDBackpack::setBrightness(uint8_t b) {
+  if (b > 15) b = 15;
+  uint8_t c = 0xE0 | b;
+  char foo[1];
+  foo[0] = c;
+  _i2c->write(i2c_addr, foo, 1); 
+}
+
+void Adafruit_LEDBackpack::blinkRate(uint8_t b) {
+  if (b > 3) b = 0; // turn off if not sure
+  uint8_t c = HT16K33_BLINK_CMD | HT16K33_BLINK_DISPLAYON | (b << 1);
+  char foo[1];
+  foo[0] = c;
+  _i2c->write(i2c_addr, foo, 1);
+}
+
+Adafruit_LEDBackpack::Adafruit_LEDBackpack(I2C *i2c): _i2c(i2c) {
+}
+
+void Adafruit_LEDBackpack::begin(uint8_t _addr = 0x70) {
+  i2c_addr = _addr << 1;
+
+  char foo[1];
+  foo[0] = 0x21;
+
+  _i2c->write(i2c_addr, foo, 1);  // turn on oscillator
+
+  blinkRate(HT16K33_BLINK_OFF);
+  
+  setBrightness(15); // max brightness
+}
+
+void Adafruit_LEDBackpack::writeDisplay(void) {
+  char foo[17];
+  foo[0] = 0x00;
+  int j = 0;
+  for (uint8_t i=1; i<=16; i+=2) {
+    int x = displaybuffer[j] & 0xFF;
+    foo[i] = x;
+    int x2 = displaybuffer[j] >> 8;
+    foo[i+1] = x2;
+    j++;
+  }
+  _i2c->write(i2c_addr, foo, 17);
+}
+
+void Adafruit_LEDBackpack::clear(void) {
+  for (uint8_t i=0; i<8; i++) {
+    displaybuffer[i] = 0;
+  }
+}
+
+Adafruit_8x8matrix::Adafruit_8x8matrix(I2C *i2c) : Adafruit_LEDBackpack(i2c), Adafruit_GFX(8, 8) {
+}
+
+void Adafruit_8x8matrix::drawPixel(int16_t x, int16_t y, uint16_t color) {
+  if ((y < 0) || (y >= 8)) return;
+  if ((x < 0) || (x >= 8)) return;
+
+ // check rotation, move pixel around if necessary
+  switch (getRotation()) {
+  case 1:
+    swap(x, y);
+    x = 8 - x - 1;
+    break;
+  case 2:
+    x = 8 - x - 1;
+    y = 8 - y - 1;
+    break;
+  case 3:
+    swap(x, y);
+    y = 8 - y - 1;
+    break;
+  }
+
+  // wrap around the x
+  x += 7;
+  x %= 8;
+
+
+  if (color) {
+    displaybuffer[y] |= 1 << x;
+  } else {
+    displaybuffer[y] &= ~(1 << x);
+  }
+}
\ No newline at end of file