Aaron Goselin
/
trackballer_SFE
Just an example program for Sparkfun's Trackballer breakout board.
Revision 0:dd150b03a225, committed 2011-02-17
- Comitter:
- Nakor
- Date:
- Thu Feb 17 20:55:46 2011 +0000
- Commit message:
- First commit.
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r dd150b03a225 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Feb 17 20:55:46 2011 +0000 @@ -0,0 +1,176 @@ +#include "mbed.h" + +#define TRACK_INC 0.02 + +DigitalIn buttonPin(p8); +DigitalIn rightPin(p15); +DigitalIn leftPin(p16); +DigitalIn downPin(p17); +DigitalIn upPin(p18); + +PwmOut blueLED(p23); +PwmOut redLED(p24); +PwmOut greenLED(p25); +PwmOut whiteLED(p26); + +Timer outputTimer; +Serial PC(USBTX, USBRX); + + +int buttonPushCounter = 0; // counter for the number of button presses + +char buttonState = 0; // current state of the button +char lastButtonState = 0; // previous state of the button + +char upState = 0; +char downState = 0; +char leftState = 0; +char rightState = 0; +char lastUpState = 0; +char lastDownState = 0; +char lastLeftState = 0; +char lastRightState = 0; + +float xPosition = 0.0; +float yPosition = 0.0; + + + +void setup() +{ + PC.baud(230400); + + buttonPin.mode(PullUp); + + redLED = 0.0; + greenLED = 0.0; + blueLED = 0.0; + whiteLED = 0.0; + + outputTimer.start(); +} + + +int main() +{ + setup(); + + while (1) + { + + buttonState = buttonPin.read(); + + // compare the buttonState to its previous state + if (buttonState != lastButtonState) + { + // if the state has changed, increment the counter + if (buttonState == 1) + { + // if the current state is 1 then the button + // went from off to on: + buttonPushCounter++; + printf("Number of button pushes: %i\n", buttonPushCounter); + } + } + lastButtonState = buttonState; + + + if (buttonPushCounter % 2 == 0) + { + redLED = 1; + } + else + { + redLED = 0; + } + + upState = upPin.read(); + + if (upState != lastUpState) + { + if (upState == 1) + { + // if the current state is 1 then the button + // went from off to on: + yPosition+=TRACK_INC; + if (yPosition > 1.0) + { + yPosition = 1.0; + } + } + } + lastUpState = upState; + + + downState = downPin.read(); + + // compare the buttonState to its previous state + if (downState != lastDownState) + { + // if the state has changed, increment the counter + if (downState == 1) + { + // if the current state is 1 then the button + // went from off to on: + yPosition-=TRACK_INC; + if (yPosition < 0.0) + { + yPosition = 0.0; + } + } + } + lastDownState = downState; + + + leftState = leftPin.read(); + + // compare the buttonState to its previous state + if (leftState != lastLeftState) + { + // if the state has changed, increment the counter + if (leftState == 1) + { + // if the current state is 1 then the button + // went from off to on: + xPosition-=TRACK_INC; + if (xPosition < 0.0) + { + xPosition = 0.0; + } + } + } + lastLeftState = leftState; + + rightState = rightPin.read(); + + // compare the buttonState to its previous state + if (rightState != lastRightState) + { + // if the state has changed, increment the counter + if (rightState == 1) + { + // if the current state is 1 then the button + // went from off to on: + xPosition+=TRACK_INC; + if (xPosition > 1.0) + { + xPosition = 1.0; + } + } + } + lastRightState = rightState; + + blueLED = xPosition; + greenLED = yPosition; + + + + if (outputTimer.read_ms() > 1000) + { + printf("Position: (x%f, y%f)\n", xPosition, yPosition); + + outputTimer.reset(); + + } + } +} \ No newline at end of file
diff -r 000000000000 -r dd150b03a225 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Feb 17 20:55:46 2011 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/63bcd7ba4912