Skip to content
Branch: master
Go to file

Latest commit


Failed to load latest commit information.
Latest commit message
Commit time



This code implements the project described in my blog post of converting a Brother typewriter into a teletype using an Arduino.


  • debounce.h - simple, fast 2-bit debouncer
  • keycodes.h - keyboard layout map in terms of scan and signal lines
  • - userspace program for testing printing over serial
  • signals.h - provides signal mappings for current board and functions for writing them
  • signals_duemilanove.h - signal mappings for using the Arduino Duemilanove (and other Arduino-compliant boards based on the ATmega168 and ATmega328)
  • signals_mega.h - signal mappings for using the Arduino Mega (and other Arduino-compliant boards based on the ATmega1280)
  • typewriter.pde - core logic


People often find this project searching for how to use PROGMEM. There's not enough space in RAM for for the key lookup tables on the ATmega168, so PROGMEM is used in keycodes.h to keep them in program memory. To access data that's in PROGMEM, typewriter.pde uses pgm_read_word_near (you can also use pgm_read_byte_near) to read the data.

For more information about PROGMEM, see the Arduino Reference.


This code was finished in 2010 and hasn't been developed much since. At the time of publishing there were no known bugs, and the only feature missing was flow control (hence the timing delays in

However, any project with external dependencies will break as the world turns, so it is not guaranteed to work. I haven't reflashed the typewriter in over a year, so at this point the code is academic.


The code in debouncer.h was originally provided by Ben Holt. My modifications were mostly superficial in nature, though I did add a few optimizations.

The more tricky debugging (like diagnosing the RAM overflow bug that necessitated using PROGMEM on the ATmega168) was assisted by Micah Scott.

Thanks to Cindy for putting up with me when I ignored everything except my desk for a few days. Again.


software side of the Brother teletypewriter project.



No releases published
You can’t perform that action at this time.