HW 2 - Text Entry Device
This is an individual assignment.
You will build a text-entry device that only uses discrete input components. The device will send characters to a connected PC over a serial connection. At a minimum, the device has to cover the lower-case alphabet and the space character, so you can type complete phrases such as "hello world".
The reading for this week included examples of various text entry techniques: multi-tap, T9, five-key (direction pad), or chording. Choose one of these techniques and build a working text entry device. This will involve the following steps:
- Design a key layout: you may want to use momentary switches, or construct your own switches using wire and copper tape.
- Wire switches to your Boarduino microcontroller.
- Write C code for the Boarduino (using the Arduino IDE) to read switch states and interpret switch states . This may require taking into account timing (for timeouts in multi-tap) or the states of multiple switches (e.g., for chording).
- Output characters via a serial connection to an attached computer.
- Five-key input requires you to write display logic on the computer as well (e.g., to show the user which key is currently selected). Multi-tap and T9 can also benefit from intermediate feedback to help users disambiguate between multiple options or show them the current interpretation of the input so far.
We suggest you first breadboard your circuit, then figure out how to mount the switches and how the user actuates them.
Turn in instructions
Create a Wiki Page for this assignment
Begin by creating a new wiki page for this assignment. Go to your user page that you created when you made your account. You can get to it by typing the following URL into your browser or by clicking on your name in the upper left corner on this page:
Replace FirstName and LastName with your real first and last names as they appear in the top right on this wiki (we pull them automatically from the campus database). This will take you to the page the wiki created for you when you first logged in.
Edit your user page to add a link to a new wiki page for this assignment. The wiki syntax should look like this:
Again replace FirstName and LastName with your name. Look at my user page for an example. Then click on the link and enter the information about your assignment. You should upload the files described below and describe any extra functionality you implemented and want us to review.
Write up your project on this wiki
On the Homework2-FirstNameLastName page you just created, write 1-3 paragraphs about your implementation:
- what text entry technique you chose and why
- how you implemented character recognition (i.e., how your Arduino code works)
- how you constructed the physical device
- Include images (How to include images). At a minimum:
- Reflection: what you learned from this assignment (also let us know if this was too easy or too hard)
- Record a short video of you typing the phrase "hello world" or "device design". Make sure your video shows both your actions and the text appearing on screen at the same time. (How to include video)
One you are finished editing the page, add a link to it at the bottom of the page with your full name as the link text. The wiki syntax will look like this: *[[Homework2-FirstNameLastName|FirstName LastName]]. Hit the edit button for the last section to see how I created the link for my name.
We're still working to getting this up and running. Stay tuned.
- If you are ambitious, you can build a mouse using two quadrature encoders and a button; then write software that moves a cursor on the PC screen to select letters on the screen as in a soft keyboard.
- Alternatively, you can use a microcontroller that supports a USB HID profile (e.g., the Arduino Leonardo or the Teensy) to directly emulate a keyboard and type into any application (not just the serial window)
Links to Finished Assignments
Add your submission below this line.
- Bjoern Hartmann
- Lanssie Ma
- Alvin Yuan
- Kate Hsiao
- Kliulai Chow-Yee
- Kate Rushton
- Derek Kan
- Rundong Tian
- Jackie Leverett
- Timothy Lee
- [Jeremy Faludi]
- Eric Xiao
- Claire Tuna
- Orianna DeMasi.
- K. Shankari
- Juan de Joya
- Sean Arietta
- Matt Visco
- Zach Wasson
- Dylan Bethel
- Fred Chasen
- Michael Andersen
- Justin Kay
- Carson Schultz
- André Crabb
- Aadityeshwar Singh Deo
- Joseph Bynoe
- Achal Dave
- Jordan Kellerstrass
- Lee-Huang Chen
- Stephen Mckinley
- Rahul Mehendiratta