wrightmac
Published © MIT

Arduino Uno and a 8x8 LED Matrix HT16K33 backpack

An overview of the 8x8 LED Matrix with a HT16K33 backpack. I will go from wiring to having some fun with it.

BeginnerProtip30 minutes14,426
Arduino Uno and a 8x8 LED Matrix HT16K33 backpack

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
8x8 LED Matrix - HT16K33
×1
Jumper wires (generic)
Jumper wires (generic)
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Code

Scrolling Word

Arduino
#include <Wire.h>
#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"

Adafruit_8x8matrix matrix = Adafruit_8x8matrix();

void setup() {
  Serial.begin(9600);
  Serial.println("8x8 LED Matrix Test");

  // pass in the address
  matrix.begin(0x70);  
}

void loop() {   
  // scroll some text across the matrix
  matrix.setTextSize(1);
  // Set wrap to false for smooth scrollling
  matrix.setTextWrap(false);  
  matrix.setTextColor(LED_ON);
  for (int8_t x=0; x>=-36; x--) {
    matrix.clear();
    matrix.setCursor(x,0);
    matrix.print("W!nt3R");
    matrix.writeDisplay();
    delay(100);
  }

Finding 0 Print T

Arduino
// For I2C
#include <Wire.h>
// Libraries for Matrix
#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"

Adafruit_8x8matrix matrix = Adafruit_8x8matrix();

void setup() {
  Serial.begin(9600);
  // Good idea to send data to both 
  // device and serial as it helps with
  // troubleshooting. 
  Serial.println("8x8 LED Matrix Test");

  // set the address
  matrix.begin(0x70); 
}

void loop() {
  // Make sure where led 0x0 is:
  // And it is working
  matrix.setTextSize(1);
  matrix.setTextColor(LED_ON);
    matrix.clear();
    matrix.setCursor(0,0);
    matrix.print("T");
    matrix.writeDisplay();
    delay(3000);

  }

I2C Scanner

Arduino
I2C Scanner sketch used for finding devices addresses.
// --------------------------------------
// i2c_scanner
//
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26  2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by Arduino.cc user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
//    http://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
//    As version 4, but address scans now to 127.
//    A sensor seems to use address 120.
// 
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//

#include <Wire.h>


void setup()
{
  Wire.begin();

  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}


void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++ ) 
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error==4) 
    {
      Serial.print("Unknow error at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(5000);           // wait 5 seconds for next scan
}

Credits

wrightmac

wrightmac

16 projects • 22 followers
Network geek by day, apprentice hardware hacker by night, curious-tinkerer always, and Apple Fanboy since 1984!

Comments