brainstorm

=Brainstorm=

There are lots of things - especially in the early stages of a project - that need discussing but might not really fit into a category yet. Feel free to put your thoughts down here and share them with everyone else.

Dummy UI
Someone (Either Michael, Michele or me) should draft up an example of how the user interface will look using regular C code and scanf + printf. It is very important that we all have a common understanding of how this program looks, and having a prototype user interface that can be interacted with using a desktop PC will help this a lot. Just so that everyone gets what I'm talking about: code >> Welcome to Talking Scales! >> Press 'w' for WEIGH, 'c' for COUNT, 't' for TARE or 'h' for more help. << t >> You have pressed 't'. Entering TARE mode. >> Please wait while the scales sets the new zero point... >> TARE successful! >> Press 'w' for WEIGH, 'c' for COUNT, 't' for TARE or 'h' for more help. << w >> You have pressed 'w'. Entering WEIGH mode. >> The current mass is: 5 grams code

Weighing Resolution
New idea:
 * The sensors on the scales are truly analogue - that means that we can get pretty much unlimited sensitivity where we need it.
 * The limitation is the A/D module, which only has 10 bits of resolution (1024 values).
 * However, we can increase or decrease the sensitivity of the module by providing it with a different +Vref and -Vref.
 * Therefore, like lab exercise 2, we can generate a voltage using the CCP PWM module which can generate -Vref, and +Vref at 1V above that.
 * Then, we can take a second measurement at the higher resolution to calculate the fractional part of the mass.

Braille Stickers
The scales need to be used by blind people - we can stick braille stickers on the keys so they know which ones to press.

Recieve Interrupt and PortB pin change interrupt
To enable smooth transitions between operating modes regardless of the input mode (ie, serial commands vs keypad commands), we will use the interrupt to interperet what command is being issued, and then set a corresponding flag in a settings "bucket". We can use the RECV interrupt for serial input, and the PORTB interrupt-on-change interrupts for keypad input.