Using Sidewinder mouse guts to interface with PC

Greetings, this is my first post & I'm pretty green, so be gentle! I've got a Sidewinder mouse & the nicest feature of these is the Intellipoint software that can be used to configure the five buttons. Being that everything on the PC side is taken care of, is there any reason I cant cannibalize a similar mouse & have the Arduino take care of the state changes of (what used to be the butttons) of the mouse?

Does anyone have documentation/experience of similar projects?


I don't see why not; the important thing on the buttons (and anything else) would be whether they are pulling them to ground to register the state change, or pulling them up to VCC (most likely the former, but you would have to check).

Please forgive my ignorance, but would this be best accomplished using opto-isolators, transistors, or a different (easier/cheaper) device? Thanks again!

Simple small "signal" transistors (TO-92 case) will work ok here.

Ok, I've done some playing using the "ifstatementconditional" example to (eventually) read the value of a LM34 (currently a potentiometer) and turn on (eventually) a 2n3904 (currently an LED) once the value reaches a certain threshold.

My current issue is that I'd like the output to only be "on" for a set period of time, even if the analog input value is still above the threshold. My background is more PLC based, and in that situation, I suppose I'd use a One Shot or a timer, but both of those (more) familar favorites seem to be realitively difficult with the arduino compared to a PLC/ladder logic.

Any hints/tips/ideas? Thanks!

If you were turning the output on (and off) manually, how would you do it?

Read the analog in value.
Get the current time.
Is it necessary to turn the output on?
If so, is the output already on?
If not:
Turn the output on.
Record that the output is turned on.
Note the time that that was done.
Is it time to turn the output off?
If so:
Turn it off.
Record that the output is turned off.

This is easy enough to do with the Arduino. Use the millis() function to get the time, and a boolean variable to record whether the output is currently on, or not.