![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Just mouse test for x,y position
Diff: main.cpp
- Revision:
- 2:ed0782fc9b00
- Parent:
- 1:afd3fc7c27a2
--- 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;