2016-2017 TEI3M Challenges


Challenge 5. TBA.

BiColor LED Matrix. in the spring of 2014, T. Garrow (ACES '15) asked me what he could design and render on the 3D printer he received for Christmas. I suggested a double-sided jig that ACES could use to fabricate their own LED matrix and he did just that! A 'class set' of these jigs was impractical as the print time for a single one exceeds 2 hours. Fortunately, a company stepped in (Objex Unlimited) and printed two dozen for us in the spring of 2017, so the project was on for the first time!

Matrix Jig (T. Garrow, ACES '15) Partially Assembled BiColor LED Matrix

Take your time with this for better results. You may wish to review the numerous videos and tutorials available that describe how to construct and exercise 2D matrices and 3D cubes, both for the technique and the inspiration. For this task you will position the 16 bicolor LEDs into the jig you have been provided in, oriented in such a way that, when bent, sets of four longer leads overlap (since these a bicolor LEDs I hesitate to refer to them as anode and cathode). Solder each set of 4 together as in the photo, above right. At this point use a bench power supply set to 2V to confirm the integrity of all 16 LEDs. Make any adjustments to keep the leads as straight as possible.

Next, we do the same with the shorter leads, soldering in sets of 4, at right angles to their longer counterparts. Note. To avoid the possibility of electrical shorting, short, narrow heat shrink tubing slid oved the potential problem areas. Click the photo above right to see an example of my use of clear tubing. Again, use 2V to test all 16 LEDs. I added a length of heat-shrink on the ends for additional support.

If you've made it this far you have 8 accessible leads, perfect for PORTA manipulation of the ATtiny84.


  1. Connect the 8 leads of your bicolor LED matrix to the PORTA pins of the ATtiny84.
  2. Watch this 13s video of anactive bicolor LED Matrix. displaying a simple sequence that requires just three lines of code in the loop() function. Develop and implement an Arduino sketch that duplicates the pattern in the video. Do not use arrays.
  3. Your code for this project will use direct access to PortA on the ATtiny84 through its DDRA and PORTA IO Registers. You are NOT to use the pinMode() or digitalWrite() functions.
  4. Linearly continuous sets of LEDs can be displayed without the use of a PoV software strategy. Try it by placing the code in a function called fourCorners(). Again, without the use of the arrays.
  5. A byte array can be preloaded with values and 'played' by assigning the elements of the array in seqeunce to PORTA. Design and implement your own UNIQUE animated pattern that plays continuously and incorporates both colors simultaneously. You will eventually present this pattern to the class and any duplicate patterns will earn an unflattering score. After all, given the infinite number of possibilities, what are the chances two guys develop the same one? Ans. infinitesimal.
  6. (For the curious) Once you have your pattern array just the way you like it, you might store it in EEPROM as a welcome message or startup sequence for some future project.
  7. (For the extremely motivated) Use LEDS with 3 leads to make a 4x4x4 3D cube.
  8. (For the insanely motivated) Flip the jig over and use 64 3mm bicolor LEDs for a higher resolution matrix that would support your own implementation of the Game of Life algorithm.

Challenge 3. Data Visualization. You have been given two new components: an additional 24LC256 EEPROM IC that has 48 temperature readings stored on it from 0 up to 72 and back down again, in multiples of 3, starting at address 0. As well you have been given a soldered-up Adafruit I2C BiColor 24-LED Bargraph.

Watch this video of the data on the EEPROM IC being displayed on the bargraph and an LCD module at 1-second intervals.

Your task in the next 50 minutes is to duplicate this video, exactly.


  1. Place the EEPROM IC you have been given on the current I2C bus you have on your breadboard. Set the address of this second EEPROM to 0x51.
  2. Place the bargraph module on your I2C bus as well and wire in the 4 pins as marked.
  3. Download and install the Adafruit_LED_BackPack library.
  4. Load and review the bargraph24 example from the library. You'll notice that the I2C address of this device is 0x70 so it does not conflict with your other I2C devices.
  5. Develop the sketch, Challenge3.ino, that reads the 48 entries from the second EEPROM and displays them on the LCD as indicated and on the bargraph as follows. Each bar represents a 3-degree difference between its neighbours, starting at 0. The first 8 bars should always be green, bars in the middle octet will appear as yellow and bars in the upper octet will always appear red for this visualization.

At the end of this period, submit only your Challenge3.ino source code to handin under the Subject Line: Challenge3. Code
Retain your two new componenents to assist you with further development of this project for your ER Summary due this Saturday (January 21) under the Subject Line: Challenge 3. ER

(November) Challenge 2. 555. The 555 Timer IC is a versatile, low-cost IC that can provide a timed pulse. It's as popular today as it was when it was introduced in 1971. Even better: you have one in your kit. The 555 IC can operaate in a number of modes that include monostable, bistable or astable. Applications can be found for each.


  1. Your challenge is to research the numerous online tutorials and projects designed around the 555 before submitting a proposal to handin under the Subject Line: 555 Proposal. In the body of your proposal email (click the link) you will complete the details for the Project Title, the URL of the online circuit you wish to emulate (if it's a original idea, you'll attached a schematic) and a complete Description of your project, in your own words. A Fritzing diagram would help. In the case of duplicate project proposals it will be awarded on a first-come first-serve basis upon receipt of the email. Proposals will appear in the TEI4MForum conference so you can check which projects have been requested. I will review your proposal and let you know within 24 hours if you've got the green light or you need to go back to the drawing board. The deadline for proposals is this Saturday November 5th at midnight.
  2. Once your project has been approved, prototype your circuit and stay within half the size of your breadboard as you will eventually solder your 555-based circuit on a half-sized Perma-Proto board that you will be provided with. You MUST show Mr. D. your working prototype no later than Friday November 10.
  3. In addition to the board, you will be given an 8-pin chip seat for your 555 (no one in their right mind would solder the 555 directly to the board).
  4. You are free to use parts from your kit or that we have in inventory (as long as you make good use of them). Additional parts can be obtained from Creatron or online if you act fast.
  5. Adding to your list of responsibilities is the requirement that your prototype must be housed in a project box or mounted in some other type of frame or platform.
  6. Finally, consider your power supply. Is your device portable or stationary? An on/off switch is also appropriate.
  7. You will present your device to the class on either Tuesday November 22 or Thursday November 24.
  8. Your ER Summary is due by midnight Saturday November 26.

Checklist and Deadlines. I will update this table as the poject evolves.
Saturday November 5
Thursday November 10
Tuesday November 22
Saturday November 26
P-C Ascherl
S. Canavan
K. Chepeha
Q. Clarke
D. Dadyburjor
R. Gajer
D. Hofer
O. Logush
J. Longwell
A. MacDonald
E. McAuliffe
T. Morland
O. Murphy
E. Peterson
J. Schaffer
A. Sheeres-Palicpulle
J. Stephenson-Smith
7-Segment Something

Challenge 1. Analog Sensor. In addition to your LCD Panel, you have been supplied with an Infrared Proximity Sensor made by Sharp (model: GP2Y0A41SK0F). NOTE: YOU ARE NOT TO MODIFY THIS PART IN ANY WAY AS IT WILL BE RETURNED TO MR. D. ON TUESDAY, IN ITS ORIGINAL CONDITION. The device claims to provide an analog output which varies from 3.1V (4cm) to 0.3V (30 cm) with a supply voltage between 4.5 and 5.5V DC. Having tested a few devices they vary somewhat from these specfications as could be expected.


  1. Watch this video of a hand moving towards, away slightly, towards again and finally away from the Proximity Sensor and the resultant display on an LCD Display (identical to the one you have in your kit).
  2. Create an Arduino sketch entitled DistanceSensor.ino in which you attempt to duplicate this result, EXACTLY. Although you could wire up the prototype immediately, the focus of the in-class portion of this Challenge should be on developing enough code to convince me you understand the macro details of these devices, the handling of analog sensor data, and the elements of great programming style.
  3. When told to do so at the end of the period, attach your DistanceSensor.ino to an email to handin with the Subject Line: Challenge 1. Code
  4. You have until midnight tomorrow (Saturday October 22), to submit your Engineering Report (ER.docx) to handin under the Subject Line: Challenge 1. ER. In addition to the usual subsections, include a Code section in which your documented sketch is placed in a properly formatted (Courier New; 9pt), sized (avoid page boundaries if possible), and shaded (light) Text box. See the recent posting in the TEI3M F/C conference for a refresher if you've forgotten.