Jane Erickson
/
BlackberryTrackerballBreakout_HelloWorld
Demo code for LED/trackball functionality of the Blackberry Trackerball Breakout board
main.cpp@3:9e2b45d60fe5, 2015-10-21 (annotated)
- Committer:
- jkerickson
- Date:
- Wed Oct 21 19:12:20 2015 +0000
- Revision:
- 3:9e2b45d60fe5
- Parent:
- 1:f0caa0dfa669
Library additions
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 | 1:f0caa0dfa669 | 7 | |
jkerickson | 1:f0caa0dfa669 | 8 | //for prints to serial port |
jkerickson | 0:8e91b1443453 | 9 | Serial pc(USBTX, USBRX); |
jkerickson | 0:8e91b1443453 | 10 | |
jkerickson | 0:8e91b1443453 | 11 | |
jkerickson | 0:8e91b1443453 | 12 | int main() { |
jkerickson | 0:8e91b1443453 | 13 | |
jkerickson | 1:f0caa0dfa669 | 14 | //turn on each LED individually for 2 seconds each |
jkerickson | 0:8e91b1443453 | 15 | trackball.write(1, color_WHITE); |
jkerickson | 0:8e91b1443453 | 16 | wait(2); |
jkerickson | 0:8e91b1443453 | 17 | trackball.write(0, color_WHITE); |
jkerickson | 0:8e91b1443453 | 18 | trackball.write(1, color_BLUE); |
jkerickson | 0:8e91b1443453 | 19 | wait(2); |
jkerickson | 0:8e91b1443453 | 20 | trackball.write(0, color_BLUE); |
jkerickson | 0:8e91b1443453 | 21 | trackball.write(1, color_GREEN); |
jkerickson | 0:8e91b1443453 | 22 | wait(2); |
jkerickson | 0:8e91b1443453 | 23 | trackball.write(0, color_GREEN); |
jkerickson | 0:8e91b1443453 | 24 | trackball.write(1, color_RED); |
jkerickson | 0:8e91b1443453 | 25 | wait(2); |
jkerickson | 0:8e91b1443453 | 26 | trackball.write(0, color_RED); |
jkerickson | 0:8e91b1443453 | 27 | |
jkerickson | 1:f0caa0dfa669 | 28 | //positioning data |
jkerickson | 1:f0caa0dfa669 | 29 | int x = 0; |
jkerickson | 1:f0caa0dfa669 | 30 | int y = 0; |
jkerickson | 1:f0caa0dfa669 | 31 | //keeping track of changes in movement |
jkerickson | 1:f0caa0dfa669 | 32 | unsigned int old_up = 1; |
jkerickson | 1:f0caa0dfa669 | 33 | unsigned int new_up = 1; |
jkerickson | 1:f0caa0dfa669 | 34 | unsigned int old_down = 1; |
jkerickson | 1:f0caa0dfa669 | 35 | unsigned int new_down = 1; |
jkerickson | 1:f0caa0dfa669 | 36 | unsigned int old_right = 1; |
jkerickson | 1:f0caa0dfa669 | 37 | unsigned int new_right = 1; |
jkerickson | 1:f0caa0dfa669 | 38 | unsigned int old_left = 1; |
jkerickson | 1:f0caa0dfa669 | 39 | unsigned int new_left = 1; |
jkerickson | 1:f0caa0dfa669 | 40 | |
jkerickson | 1:f0caa0dfa669 | 41 | |
jkerickson | 0:8e91b1443453 | 42 | while(1) { |
jkerickson | 1:f0caa0dfa669 | 43 | |
jkerickson | 1:f0caa0dfa669 | 44 | |
jkerickson | 1:f0caa0dfa669 | 45 | //comparing old val to new val makes sure to only register changes to the value as movement |
jkerickson | 1:f0caa0dfa669 | 46 | new_up = trackball.read(dir_UP); |
jkerickson | 1:f0caa0dfa669 | 47 | new_down = trackball.read(dir_DOWN); |
jkerickson | 1:f0caa0dfa669 | 48 | new_left = trackball.read(dir_LEFT); |
jkerickson | 1:f0caa0dfa669 | 49 | new_right = trackball.read(dir_RIGHT); |
jkerickson | 0:8e91b1443453 | 50 | |
jkerickson | 1:f0caa0dfa669 | 51 | if((new_up == 0) && (old_up == 1)){ |
jkerickson | 1:f0caa0dfa669 | 52 | trackball.write(1, color_BLUE); |
jkerickson | 1:f0caa0dfa669 | 53 | trackball.write(0, color_WHITE); |
jkerickson | 1:f0caa0dfa669 | 54 | trackball.write(0, color_GREEN); |
jkerickson | 1:f0caa0dfa669 | 55 | trackball.write(0, color_RED); |
jkerickson | 1:f0caa0dfa669 | 56 | y++; |
jkerickson | 1:f0caa0dfa669 | 57 | } |
jkerickson | 1:f0caa0dfa669 | 58 | if((new_down == 0) && (old_down == 1)){ |
jkerickson | 1:f0caa0dfa669 | 59 | trackball.write(1, color_GREEN); |
jkerickson | 1:f0caa0dfa669 | 60 | trackball.write(0, color_WHITE); |
jkerickson | 1:f0caa0dfa669 | 61 | trackball.write(0, color_BLUE); |
jkerickson | 1:f0caa0dfa669 | 62 | trackball.write(0, color_RED); |
jkerickson | 1:f0caa0dfa669 | 63 | y--; |
jkerickson | 1:f0caa0dfa669 | 64 | } |
jkerickson | 1:f0caa0dfa669 | 65 | if((new_left == 0) && (old_left == 1)){ |
jkerickson | 1:f0caa0dfa669 | 66 | |
jkerickson | 0:8e91b1443453 | 67 | trackball.write(1, color_WHITE); |
jkerickson | 0:8e91b1443453 | 68 | trackball.write(0, color_GREEN); |
jkerickson | 0:8e91b1443453 | 69 | trackball.write(0, color_BLUE); |
jkerickson | 0:8e91b1443453 | 70 | trackball.write(0, color_RED); |
jkerickson | 1:f0caa0dfa669 | 71 | x--; |
jkerickson | 0:8e91b1443453 | 72 | } |
jkerickson | 1:f0caa0dfa669 | 73 | if((new_right == 0) && (old_right == 1)){ |
jkerickson | 0:8e91b1443453 | 74 | trackball.write(1, color_RED); |
jkerickson | 0:8e91b1443453 | 75 | trackball.write(0, color_WHITE); |
jkerickson | 0:8e91b1443453 | 76 | trackball.write(0, color_GREEN); |
jkerickson | 0:8e91b1443453 | 77 | trackball.write(0, color_BLUE); |
jkerickson | 1:f0caa0dfa669 | 78 | x++; |
jkerickson | 0:8e91b1443453 | 79 | } |
jkerickson | 1:f0caa0dfa669 | 80 | if(trackball.read(dir_BUTTON) == 0){ |
jkerickson | 1:f0caa0dfa669 | 81 | trackball.write(1, color_RED); |
jkerickson | 1:f0caa0dfa669 | 82 | trackball.write(1, color_BLUE); |
jkerickson | 1:f0caa0dfa669 | 83 | trackball.write(1, color_GREEN); |
jkerickson | 1:f0caa0dfa669 | 84 | trackball.write(1, color_WHITE); |
jkerickson | 0:8e91b1443453 | 85 | } |
jkerickson | 1:f0caa0dfa669 | 86 | |
jkerickson | 1:f0caa0dfa669 | 87 | pc.printf("X: %d, Y: %d\n", x, y); |
jkerickson | 1:f0caa0dfa669 | 88 | |
jkerickson | 1:f0caa0dfa669 | 89 | //keep track of these now old vals to compare to the future to see changes |
jkerickson | 1:f0caa0dfa669 | 90 | old_up = new_up; |
jkerickson | 1:f0caa0dfa669 | 91 | old_down = new_down; |
jkerickson | 1:f0caa0dfa669 | 92 | old_left = new_left; |
jkerickson | 1:f0caa0dfa669 | 93 | old_right = new_right; |
jkerickson | 1:f0caa0dfa669 | 94 | |
jkerickson | 1:f0caa0dfa669 | 95 | |
jkerickson | 1:f0caa0dfa669 | 96 | wait(.2); |
jkerickson | 1:f0caa0dfa669 | 97 | |
jkerickson | 1:f0caa0dfa669 | 98 | |
jkerickson | 0:8e91b1443453 | 99 | } |
jkerickson | 0:8e91b1443453 | 100 | } |