Jane Erickson
/
BlackberryTrackerballBreakout_HelloWorld
Demo code for LED/trackball functionality of the Blackberry Trackerball Breakout board
main.cpp@0:8e91b1443453, 2015-10-20 (annotated)
- Committer:
- jkerickson
- Date:
- Tue Oct 20 21:11:52 2015 +0000
- Revision:
- 0:8e91b1443453
- Child:
- 1:f0caa0dfa669
Basic functionality of trackball/LEDs
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jkerickson | 0:8e91b1443453 | 1 | #include "mbed.h" |
jkerickson | 0:8e91b1443453 | 2 | #include "Trackball.h" |
jkerickson | 0:8e91b1443453 | 3 | |
jkerickson | 0:8e91b1443453 | 4 | //set up the trackball |
jkerickson | 0:8e91b1443453 | 5 | |
jkerickson | 0:8e91b1443453 | 6 | Trackball trackball(p12, p13, p14, p15, p16, p17, p18, p19, p20); |
jkerickson | 0:8e91b1443453 | 7 | Serial pc(USBTX, USBRX); |
jkerickson | 0:8e91b1443453 | 8 | |
jkerickson | 0:8e91b1443453 | 9 | DigitalOut led1(LED1); |
jkerickson | 0:8e91b1443453 | 10 | DigitalOut led2(LED2); |
jkerickson | 0:8e91b1443453 | 11 | DigitalOut led3(LED3); |
jkerickson | 0:8e91b1443453 | 12 | DigitalOut led4(LED4); |
jkerickson | 0:8e91b1443453 | 13 | |
jkerickson | 0:8e91b1443453 | 14 | int main() { |
jkerickson | 0:8e91b1443453 | 15 | |
jkerickson | 0:8e91b1443453 | 16 | //initial LED testing |
jkerickson | 0:8e91b1443453 | 17 | //turn on each color for 2 seconds |
jkerickson | 0:8e91b1443453 | 18 | |
jkerickson | 0:8e91b1443453 | 19 | trackball.write(1, color_WHITE); |
jkerickson | 0:8e91b1443453 | 20 | wait(2); |
jkerickson | 0:8e91b1443453 | 21 | trackball.write(0, color_WHITE); |
jkerickson | 0:8e91b1443453 | 22 | trackball.write(1, color_BLUE); |
jkerickson | 0:8e91b1443453 | 23 | wait(2); |
jkerickson | 0:8e91b1443453 | 24 | trackball.write(0, color_BLUE); |
jkerickson | 0:8e91b1443453 | 25 | trackball.write(1, color_GREEN); |
jkerickson | 0:8e91b1443453 | 26 | wait(2); |
jkerickson | 0:8e91b1443453 | 27 | trackball.write(0, color_GREEN); |
jkerickson | 0:8e91b1443453 | 28 | trackball.write(1, color_RED); |
jkerickson | 0:8e91b1443453 | 29 | wait(2); |
jkerickson | 0:8e91b1443453 | 30 | trackball.write(0, color_RED); |
jkerickson | 0:8e91b1443453 | 31 | |
jkerickson | 0:8e91b1443453 | 32 | int x_pos = 0; |
jkerickson | 0:8e91b1443453 | 33 | int y_pos = 0; |
jkerickson | 0:8e91b1443453 | 34 | |
jkerickson | 0:8e91b1443453 | 35 | while(1) { |
jkerickson | 0:8e91b1443453 | 36 | //read the pins |
jkerickson | 0:8e91b1443453 | 37 | //if LFT,RHT,UP,DWN,or BTN are 0 |
jkerickson | 0:8e91b1443453 | 38 | //write out to the colored LEDs |
jkerickson | 0:8e91b1443453 | 39 | //keep track of x and y positions |
jkerickson | 0:8e91b1443453 | 40 | //wait .2 |
jkerickson | 0:8e91b1443453 | 41 | |
jkerickson | 0:8e91b1443453 | 42 | //make sure to turn off all other color LEDS when turning on a new one. |
jkerickson | 0:8e91b1443453 | 43 | //keeping the writes inside the if statements prevents flashing of the LED if it is already on and needs to stay on. |
jkerickson | 0:8e91b1443453 | 44 | |
jkerickson | 0:8e91b1443453 | 45 | if(trackball.read(dir_UP) == 0){ |
jkerickson | 0:8e91b1443453 | 46 | y_pos++; |
jkerickson | 0:8e91b1443453 | 47 | trackball.write(1, color_WHITE); |
jkerickson | 0:8e91b1443453 | 48 | trackball.write(0, color_GREEN); |
jkerickson | 0:8e91b1443453 | 49 | trackball.write(0, color_BLUE); |
jkerickson | 0:8e91b1443453 | 50 | trackball.write(0, color_RED); |
jkerickson | 0:8e91b1443453 | 51 | } |
jkerickson | 0:8e91b1443453 | 52 | else if(trackball.read(dir_DOWN) == 0){ |
jkerickson | 0:8e91b1443453 | 53 | y_pos--; |
jkerickson | 0:8e91b1443453 | 54 | trackball.write(1, color_GREEN); |
jkerickson | 0:8e91b1443453 | 55 | trackball.write(0, color_WHITE); |
jkerickson | 0:8e91b1443453 | 56 | trackball.write(0, color_BLUE); |
jkerickson | 0:8e91b1443453 | 57 | trackball.write(0, color_RED); |
jkerickson | 0:8e91b1443453 | 58 | } |
jkerickson | 0:8e91b1443453 | 59 | else if(trackball.read(dir_LEFT) == 0){ |
jkerickson | 0:8e91b1443453 | 60 | x_pos--; |
jkerickson | 0:8e91b1443453 | 61 | trackball.write(1, color_BLUE); |
jkerickson | 0:8e91b1443453 | 62 | trackball.write(0, color_WHITE); |
jkerickson | 0:8e91b1443453 | 63 | trackball.write(0, color_GREEN); |
jkerickson | 0:8e91b1443453 | 64 | trackball.write(0, color_RED); |
jkerickson | 0:8e91b1443453 | 65 | } |
jkerickson | 0:8e91b1443453 | 66 | else if(trackball.read(dir_RIGHT) == 0){ |
jkerickson | 0:8e91b1443453 | 67 | x_pos++; |
jkerickson | 0:8e91b1443453 | 68 | trackball.write(1, color_RED); |
jkerickson | 0:8e91b1443453 | 69 | trackball.write(0, color_WHITE); |
jkerickson | 0:8e91b1443453 | 70 | trackball.write(0, color_GREEN); |
jkerickson | 0:8e91b1443453 | 71 | trackball.write(0, color_BLUE); |
jkerickson | 0:8e91b1443453 | 72 | } |
jkerickson | 0:8e91b1443453 | 73 | else if(trackball.read(dir_BUTTON) == 0){ |
jkerickson | 0:8e91b1443453 | 74 | pc.printf("Button pressed."); |
jkerickson | 0:8e91b1443453 | 75 | } |
jkerickson | 0:8e91b1443453 | 76 | pc.printf("X pos: %d, Y pos: %d\n", x_pos, y_pos); |
jkerickson | 0:8e91b1443453 | 77 | wait(.2); |
jkerickson | 0:8e91b1443453 | 78 | } |
jkerickson | 0:8e91b1443453 | 79 | } |