Module 3 - Matrix

Meet Matrix:  Matrix is a new character on the Island of PodPi.  She represents a 8 x 8 LED matrix device that can be used to display pixel art and small animated pixel art.

What is a Matrix?

A Matrix has 64 small LEDs arranged in a grid of 8 rows and 8 columns.  Each LED can be controlled independently.  There is a special microchip that handles all the work from communication to display of each LED.

How does it work?

Each single LED is connected at a row and column intersection.  When a high signal (1) is present on a row and a low signal (0) is present on a column, the LED at that intersection will light up because of the difference in voltage.

No resistors are necessary - all resistors are in the microchip already.

You can send commands to control single LEDs and the microchip is responsible for coordinating all LEDs.  This particular matrix uses the I2C protocol (also called Two Wires Interface) to receive the commends from the Arduino board.

Your code

Use your editor to create your program.  Use "nano" on Mac or "notepad" on PC.  You can give your script (program) the name you want.  Make sure to use the same name when you execute it with node.

The comments in the code (the parts in grey) are not necessary, but they will help you understand the code better.  Having problem with this challenge?  Let me know about it by filling this form.

/* Welcome to Edition 2, Challenge 1

Title:     The Color Selector
Edition:   2
Challenge: 1
Author:    Reggie

Description: Help Leddy and Reggie make a color selector
for their fireworks using three tactile switches to control
each color.
*/

// Setup the johnny-five library
var five = require('johnny-five');
var board = new five.Board();

// When the board is ready, run this function
board.on('ready', function() {

  var red = new five.Led(9);    // red on Digital Pin 9
  var blue = new five.Led(10);  // blue on Digital Pin 10
  var green = new five.Led(11); // green on Digital Pin 11

  var push_red = new five.Button("A2");   // button on Analog Pin A2
  var push_green = new five.Button("A1"); // button on Analog Pin A1
  var push_blue = new five.Button("A0");  // button on Analog Pin A0

  // when button Red is pushed, toggle the red LED
  push_red.on('press', function() {
    red.toggle();
  });

  // when button Green is pushed, toggle the green LED
  push_green.on('press', function() {
    green.toggle();
  });

  // when button Blue is pushed, toggle the blue LED
  push_blue.on('press', function() {
    blue.toggle();
  });

});

Next Experiment

Replace the "toggle()" call with a call to "pulse(1000)" and see what happens.