Demo code for LED/trackball functionality of the Blackberry Trackerball Breakout board

Dependencies:   Trackball mbed

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?

UserRevisionLine numberNew 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 }