2022-2023 ICS4U-E Tasks


Project 3.5. TWAIN (Task Without An Interesting Name). For your first (only?) AVR Assembly project on your DDBv7 you are asked to manipulate the position of a single LED on an ACES display device through the use of an analog input device. To provide a better fit for your software skill set I'm giving you a choice between one of two options. Please choose the one that is better suited to your abilities. You'll get more out of the exercise this way.

INPUT. Your trusty blue 10 kΩ trim pot can be inserted as an appliance into any number of positions within the DDBV7's female headers. Alternatively, a Thumb Joystick offers two perpendicularly arranged potentiometers that can support X-Y positioning. An RSGC ACES Thumb Joystick breakout board enables the use of the joystick as a DDBv7 appliance.

OUTPUT. An ideal location on the DDBv7 for your familiar RSGC ACES Morland Bargraph (T. Morland ACES '18, Queen's 22) has been provided offering 1-Dimensional access (X) to 8 LEDs through the support of a '595 shift register. The RSGC ACES MatrixMadeEZ (H. Reed, ACES '19, Queen's '23) offers 2-Dimensional access (X-Y) to 64 LEDs through the support of a '595 shift register and TPIC595 (Power) shift register. To achieve 'appliance' status for the Matrix Made EZ a Universal Shield V1 is required. See Mr. D for this.

TWAIN: Basic (1D) TWAIN: Advanced (2D)


  1. Decide how ambitious you are before commiting to either the Basic or Advanced TWAIN project. See Mr. D. for a Universal Shield V1 if it's the latter.
  2. Code an AVR Assembly Language project that invokes the ATtiny84's ADC (and ADC Ready interrupt) to obtain the input status, before mapping and shifting out the data to your display device to light a single LED.
  3. Comment your code thoroughly.
  4. Submit your Report by the deadline.
  5. Ten years ago I posted a video outlining a similar concept I'm asking you to achieve in the Advanced project.

Project 3.4. Pin Change Interrupt

  1. Create the project CombinationSafe. (or MyLocker?)
  2. Continue to develop your Mega328P.h library of useful assets.
  3. You are to duplicate much of the functionality of the Goldman-Atkinson Clue Capturer prototype. A bicolor LED indicator replaces the servo with green indicating a correctly-entered combination. If so, hold the green for three seconds before returning to red and starting again.
  4. Your code will hold the secret 3-digit combination, monitor the A, B, and SW signals through Pin Change and External Interrupt handling, and update the 7-segment display digit appropriately with rollover (clockwise rotation adds 1; counterclockwise rotation subtracts 1).
  5. A SWitch press on the rotary encoder extends the three-digit combination sequence by the active digit.
  6. An ACES Debouncer V2 button press resets the combination sequence.
  7. Register level code ALL THE WAY! (pinMode, digitalRead, digitalWrite, attachInterrupt, etc.)
  8. Submit your DER and attach the two code files, by the deadline: Wednesday February 2.



Project 3.3. Keypad Matrix Echo. For your first ATtiny84 project of ICS4U you are to maximize your mid-level coding skills in the development of a prototype that echoes button presses on your 12-key telephone keypad onto your small Adafruit 861 8x8 matrix. Each of you has been assigned a 4x3 subset of your matrix as shown below that represents the 1:1 Key→LED mapping. For example, should your user press the '0' key, the LED indicated will light up for 300 ms, only.

Your ATtiny84 has just enough GPIO pins (10) to pull this task off as I describe it below (7 input; 3 output). Furthermore, the code is surprisingly short if done skilfully.

(Basic) Task.

  1. Assemble a breadboard layout similar to the one shown below.

  2. Ground the Common pin of your keypad so your code can recognize presses through the use of internal pullup resistors set on each input pin.
  3. The 8 output pins of you 74HC595 are more than enough to map to the 4 rows and 3 columns of your matrix
  4. Code the most efficient solution you can think of to light the respective LEDs for 300 ms.
  5. You should be using your newly-minted library and since other projects will draw on its resources you could consider adding an Appendix to your DER at the end, that includes this library.

Optional (Advanced) Task.

Some of you may wish to consider going beyond the basic task.

Rather than 1:1 Key→LED mapping, a 1:4 Key→LED mapping could be achieved. What is compelling about this implementation is that it requires a skill you already possess: PoV!

You have the time; consider it if you are inspired.

Project 3.3. Gate-Level Minimization


Project 3.2. CHUMP. See here.

Project 3.1. SMT: PB Machine. One of the greatest challenges (and I believe, privilege) for ACES is to influence the direction of our program. Through your imagination and skill you are expected to contribute to the enhancement of our mutual creativity, tool set, and assets.

P. Bagga (ACES '17, UofT '22) fulfilled this opportunity/commitment when he decided he could improve on the DC Breakout Board ACES were using by adding a simple Resistor/LED power indicator using small 1206 size SMT components. Click on the image to the right of the (affectionately called) PB Machine for a more thorough explanation of its design. Apart from its functionality, this PCB offers a perfect introduction for Sr. ACES to practice the hand-soldering of SMT 1206 parts.

G. Benson (ACES '19, Calgary '24) also met this challenge with the enhancement of the indispensable PB Machine (P. Bagga, ACES '17). In the Fall of 2019 and 2020, Sr. ACES had the opportunity to solder up their own GB machine and put it to good use in the pursuit of their own prototypes. In the 2021/2022 year ACES benefit from JLCPCB's relatively inexpensive SMT Assembly Service requiinrg only additional THT soldering. Your experience with electric circuits has been largely limited to components that use through-hole technology (THT). To round out your proficiency with all components, your next few projects will require the use of devices that use surface-mount technology (SMT). As the graphic reveals, the smallest size that is reasonable for hand-soldering techniques is the 1206 family, so this is what we carry in the DES inventory. Update: By the Spring of 2021, ACES had shifted their skill set to the SMT Design and (reasonably-priced) Assembly of PCBs to JLCPCB. Increasing dependency on outsourcing may not be the wisest decision in the long run but, in the short run, it remains an option. You will be provided with a newly designed and fully assembled SMTV1 GB Machine to serve for both function and inspiration.

GB Machine (click image to enlarge)
1206 LED Package


  1. Grab your camera and obtain media documentation of the next step.
  2. With the PB Machine PCB and components you were provided with, solder the 1206 SMT LED and 10kΩ 1206 chip resistor to the PCB using the technique of your choice.
  3. Develop a simple circuit that confirms the illumination of your enhanced PB Machine
  4. Add your first ICS4U project report to your DER and submit by the deadline.