The Professional Perfectionists
/
Test_Mouse
Just mouse test for x,y position
Revision 2:ed0782fc9b00, committed 2015-03-31
- Comitter:
- joshwilkins2013
- Date:
- Tue Mar 31 22:38:22 2015 +0000
- Parent:
- 1:afd3fc7c27a2
- Commit message:
Changed in this revision
Mouse.lib | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Mouse.lib Tue Mar 31 22:38:22 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/The-A-Team/code/Mouse/#eb8581df1f5e
--- a/main.cpp Fri Mar 06 20:45:05 2015 +0000 +++ b/main.cpp Tue Mar 31 22:38:22 2015 +0000 @@ -1,89 +1,19 @@ #include "mbed.h" - -#define sensorConfig 0x00 -#define sensorStatus 0x01 -#define Delta_Y 0x02 -#define Delta_X 0x03 +#include "Mouse.h" Serial pc(USBTX, USBRX); -DigitalInOut pinC(PTD0); // clock -DigitalInOut pinD(PTC4); // data - -signed long mx, my; float dx, dy; - -void reSync(){ - pinC = 1; // ReSync (startup) mouse - wait_us(5); - pinC = 0; - wait_us(1); - pinC = 1; - wait_us(1000); // wait for OptiMouse serial transaction timer to time out: -} +MOUSE mouse; -uint8_t readRegister(uint8_t address){ // Bitbang SPI read operation - int i = 7; - uint8_t r = 0; - pinD.output(); // Write the address of the register we want to read: - for (; i>=0; i--){ - pinC = 0; - pinD = (address & (1 << i)); - pinC = 1; - } - pinD.input(); // Switch data line from OUTPUT to INPUT - wait_us(100); // Wait according to datasheet - for (i=7; i>=0; i--){ // Fetch the data! - pinC = 0; - pinC = 1; - r |= ((pinD.read()) << i); - } - wait_us(100); - return r; -} - -void writeRegister(uint8_t address, uint8_t data){ - int i = 7; - address |= 0x80;// Set MSB high, to indicate write operation: - pinD.output(); // Write the address: - for (; i>=0; i--){ - pinC = 0; - pinD = (address & (1 << i)); - pinC = 1; - } - for (i=7; i>=0; i--){ // Write the data: - pinC = 0; - pinD = (data & (1 << i)); - pinC = 1; - } -} - -void forceAwake(char value){ - if (value>0) writeRegister(sensorConfig,0x01); - else writeRegister(sensorConfig,0x00); -} - -signed char getDx(void){ - return (signed char) readRegister(Delta_X); -} - -signed char getDy(void){ - return (signed char) readRegister(Delta_Y); -} - -signed char status(void){ - return (signed char) readRegister(sensorStatus); -} +signed long mx, my; +float dx, dy; int main(){ pc.baud(9600); - pinC.output(); - pinD.input(); - reSync(); - forceAwake(1); // LED on - wait_ms(100); + mouse.init(); while(1){ - mx = getDx(); - my = getDy(); + mx = mouse.getDx(); + my = mouse.getDy(); dx = mx; dy = my;