accelerometer trial

Dependencies:   mbed C12832 MMA7660 USBDevice

Committer:
knasp
Date:
Sun Oct 27 17:18:19 2019 +0000
Revision:
22:a255721ffc58
Parent:
18:660b5780aaa3
Child:
23:4bf323a37a92
Hopefully working version with 2 switches and 2 buttons.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
samux 1:291a88a2c151 1 #include "mbed.h"
samux 1:291a88a2c151 2 #include "USBKeyboard.h"
knasp 7:ffe2220d3880 3 #include "MMA7660.h"
knasp 10:150f8d03f18d 4 #include "C12832.h"
knasp 9:66681432403a 5
knasp 17:0b1c5f6dbb5c 6 MMA7660 Accelerometer (p28,p27); //define accelerometer
knasp 17:0b1c5f6dbb5c 7 USBKeyboard Usbkeyboard; //define keyboard
knasp 17:0b1c5f6dbb5c 8 C12832 LCD (p5,p7,p6,p8,p11); //define LCD
knasp 17:0b1c5f6dbb5c 9 DigitalOut led1(p12); //leds
knasp 17:0b1c5f6dbb5c 10 DigitalOut led2(p13);
knasp 17:0b1c5f6dbb5c 11 DigitalOut led3(p14);
knasp 17:0b1c5f6dbb5c 12 DigitalOut led4(p15);
knasp 17:0b1c5f6dbb5c 13
knasp 18:660b5780aaa3 14 DigitalIn Switch1 (p8); //switch mode 1 (arrows) and 2 (letters)
knasp 18:660b5780aaa3 15 DigitalIn Switch2 (p16); //switch to numbers
knasp 18:660b5780aaa3 16 DigitalIn Switch3 (p17); //enter
knasp 18:660b5780aaa3 17 DigitalIn Switch4 (p18); //spacebar
knasp 9:66681432403a 18
knasp 17:0b1c5f6dbb5c 19 int main (void) //main program
knasp 11:73e8c1bb5467 20 {
knasp 18:660b5780aaa3 21 //enum Orientation {Up, Down,Right, Left,Back, Front,Unknown};
knasp 17:0b1c5f6dbb5c 22 MMA7660::Orientation myOrientation; //defining orientation
knasp 14:116f94a428c9 23
knasp 14:116f94a428c9 24 while (true) {
knasp 14:116f94a428c9 25
knasp 17:0b1c5f6dbb5c 26
knasp 18:660b5780aaa3 27 myOrientation = Accelerometer.getOrientation (); //getting the orientation from accelerometer
knasp 18:660b5780aaa3 28
knasp 18:660b5780aaa3 29
knasp 18:660b5780aaa3 30 if (Switch4){
knasp 18:660b5780aaa3 31
knasp 18:660b5780aaa3 32 Usbkeyboard.printf (" "); //spacebar
knasp 18:660b5780aaa3 33
knasp 18:660b5780aaa3 34 }
knasp 18:660b5780aaa3 35
knasp 18:660b5780aaa3 36 if (Switch3){
knasp 18:660b5780aaa3 37
knasp 18:660b5780aaa3 38 Usbkeyboard.keyCode (RIGHT_ARROW); //enter will be HERE
knasp 18:660b5780aaa3 39
knasp 18:660b5780aaa3 40 }
knasp 18:660b5780aaa3 41
knasp 22:a255721ffc58 42 if (Switch1){ //if the switch1 is on
knasp 22:a255721ffc58 43
knasp 22:a255721ffc58 44 if (Switch2){ //if switch2 is on
knasp 18:660b5780aaa3 45
knasp 18:660b5780aaa3 46 if (myOrientation == MMA7660::Up){ //if the orientation is up
knasp 18:660b5780aaa3 47
knasp 18:660b5780aaa3 48 LCD.printf("Left"); //print "left" on LCD (due to orientation of the accelerometer on the limb, the directions are changed)
knasp 18:660b5780aaa3 49 Usbkeyboard.keyCode (LEFT_ARROW); //device simulates pressing "left arrow key" on the keyboard
knasp 18:660b5780aaa3 50 led2=0; //led off
knasp 18:660b5780aaa3 51 led1=0; //led off
knasp 18:660b5780aaa3 52 led3=0; //led off
knasp 18:660b5780aaa3 53 led4=1; //led on
knasp 17:0b1c5f6dbb5c 54 }
knasp 17:0b1c5f6dbb5c 55 else if (myOrientation == MMA7660::Down){
knasp 17:0b1c5f6dbb5c 56
knasp 17:0b1c5f6dbb5c 57 LCD.printf("Right");
knasp 17:0b1c5f6dbb5c 58 Usbkeyboard.keyCode (RIGHT_ARROW);
knasp 17:0b1c5f6dbb5c 59 led3=0;
knasp 17:0b1c5f6dbb5c 60 led1=0;
knasp 17:0b1c5f6dbb5c 61 led2=1;
knasp 17:0b1c5f6dbb5c 62 led4=0;
knasp 17:0b1c5f6dbb5c 63 }
knasp 17:0b1c5f6dbb5c 64 else if (myOrientation == MMA7660::Left){
knasp 17:0b1c5f6dbb5c 65
knasp 17:0b1c5f6dbb5c 66 LCD.printf("UP");
knasp 17:0b1c5f6dbb5c 67 Usbkeyboard.keyCode (UP_ARROW);
knasp 17:0b1c5f6dbb5c 68 led1=1;
knasp 17:0b1c5f6dbb5c 69 led3=0;
knasp 17:0b1c5f6dbb5c 70 led2=0;
knasp 17:0b1c5f6dbb5c 71 led4=0;
knasp 17:0b1c5f6dbb5c 72 }
knasp 17:0b1c5f6dbb5c 73 else if (myOrientation == MMA7660::Right){
knasp 17:0b1c5f6dbb5c 74
knasp 17:0b1c5f6dbb5c 75 LCD.printf("DOWN");
knasp 17:0b1c5f6dbb5c 76 Usbkeyboard.keyCode (DOWN_ARROW);
knasp 17:0b1c5f6dbb5c 77 led4=0;
knasp 17:0b1c5f6dbb5c 78 led1=0;
knasp 17:0b1c5f6dbb5c 79 led3=1;
knasp 17:0b1c5f6dbb5c 80 led2=0;
knasp 17:0b1c5f6dbb5c 81
knasp 17:0b1c5f6dbb5c 82
knasp 17:0b1c5f6dbb5c 83 }
knasp 17:0b1c5f6dbb5c 84 else if (myOrientation == MMA7660::Unknown){
knasp 17:0b1c5f6dbb5c 85
knasp 17:0b1c5f6dbb5c 86 LCD.printf("Don't Know");
knasp 22:a255721ffc58 87
knasp 17:0b1c5f6dbb5c 88 }
knasp 14:116f94a428c9 89 }
knasp 22:a255721ffc58 90 }
knasp 22:a255721ffc58 91 else { //if switch2 is off
knasp 22:a255721ffc58 92
knasp 22:a255721ffc58 93 if (myOrientation == MMA7660::Up){
knasp 22:a255721ffc58 94
knasp 22:a255721ffc58 95 LCD.printf("One");
knasp 22:a255721ffc58 96 Usbkeyboard.printf ("1\0"); //instead of simulating pressing of the "left arrow", simulates pressing "numbers"
knasp 22:a255721ffc58 97 led2=0;
knasp 22:a255721ffc58 98 led1=0;
knasp 22:a255721ffc58 99 led3=0;
knasp 22:a255721ffc58 100 led4=1;
knasp 22:a255721ffc58 101 }
knasp 22:a255721ffc58 102 else if (myOrientation == MMA7660::Down){
knasp 22:a255721ffc58 103
knasp 22:a255721ffc58 104 LCD.printf("Three");
knasp 22:a255721ffc58 105 Usbkeyboard.printf ("3\0");
knasp 22:a255721ffc58 106 led3=0;
knasp 22:a255721ffc58 107 led1=0;
knasp 22:a255721ffc58 108 led2=1;
knasp 22:a255721ffc58 109 led4=0;
knasp 22:a255721ffc58 110 }
knasp 22:a255721ffc58 111 else if (myOrientation == MMA7660::Left){
knasp 22:a255721ffc58 112
knasp 22:a255721ffc58 113 LCD.printf("Two");
knasp 22:a255721ffc58 114 Usbkeyboard.printf ("2\0");
knasp 22:a255721ffc58 115 led1=1;
knasp 22:a255721ffc58 116 led3=0;
knasp 22:a255721ffc58 117 led2=0;
knasp 22:a255721ffc58 118 led4=0;
knasp 22:a255721ffc58 119 }
knasp 22:a255721ffc58 120 else if (myOrientation == MMA7660::Right){
knasp 22:a255721ffc58 121
knasp 22:a255721ffc58 122 LCD.printf("Four");
knasp 22:a255721ffc58 123 Usbkeyboard.printf ("4\0");
knasp 22:a255721ffc58 124 led4=0;
knasp 22:a255721ffc58 125 led1=0;
knasp 22:a255721ffc58 126 led3=1;
knasp 22:a255721ffc58 127 led2=0;
knasp 22:a255721ffc58 128
knasp 22:a255721ffc58 129
knasp 22:a255721ffc58 130
knasp 22:a255721ffc58 131 }
knasp 22:a255721ffc58 132
knasp 22:a255721ffc58 133
knasp 22:a255721ffc58 134 else if (myOrientation == MMA7660::Unknown){
knasp 22:a255721ffc58 135
knasp 22:a255721ffc58 136 LCD.printf("Don't Know");
knasp 22:a255721ffc58 137
knasp 22:a255721ffc58 138 }
knasp 14:116f94a428c9 139
knasp 22:a255721ffc58 140 else { //if the switch1 and 2 are off than
knasp 17:0b1c5f6dbb5c 141
knasp 17:0b1c5f6dbb5c 142 if (myOrientation == MMA7660::Up){
knasp 17:0b1c5f6dbb5c 143
knasp 17:0b1c5f6dbb5c 144 LCD.printf("LEFT");
knasp 18:660b5780aaa3 145 Usbkeyboard.printf ("a\0"); //instead of simulating pressing of the "left arrow", simulates pressing "a key"
knasp 17:0b1c5f6dbb5c 146 led2=0;
knasp 17:0b1c5f6dbb5c 147 led1=0;
knasp 17:0b1c5f6dbb5c 148 led3=0;
knasp 17:0b1c5f6dbb5c 149 led4=1;
knasp 17:0b1c5f6dbb5c 150 }
knasp 17:0b1c5f6dbb5c 151 else if (myOrientation == MMA7660::Down){
knasp 17:0b1c5f6dbb5c 152
knasp 17:0b1c5f6dbb5c 153 LCD.printf("right");
knasp 17:0b1c5f6dbb5c 154 Usbkeyboard.printf ("d\0");
knasp 17:0b1c5f6dbb5c 155 led3=0;
knasp 17:0b1c5f6dbb5c 156 led1=0;
knasp 17:0b1c5f6dbb5c 157 led2=1;
knasp 17:0b1c5f6dbb5c 158 led4=0;
knasp 17:0b1c5f6dbb5c 159 }
knasp 17:0b1c5f6dbb5c 160 else if (myOrientation == MMA7660::Left){
knasp 17:0b1c5f6dbb5c 161
knasp 17:0b1c5f6dbb5c 162 LCD.printf("Up");
knasp 17:0b1c5f6dbb5c 163 Usbkeyboard.printf ("w\0");
knasp 17:0b1c5f6dbb5c 164 led1=1;
knasp 17:0b1c5f6dbb5c 165 led3=0;
knasp 17:0b1c5f6dbb5c 166 led2=0;
knasp 17:0b1c5f6dbb5c 167 led4=0;
knasp 17:0b1c5f6dbb5c 168 }
knasp 17:0b1c5f6dbb5c 169 else if (myOrientation == MMA7660::Right){
knasp 17:0b1c5f6dbb5c 170
knasp 17:0b1c5f6dbb5c 171 LCD.printf("Down");
knasp 17:0b1c5f6dbb5c 172 Usbkeyboard.printf ("s\0");
knasp 17:0b1c5f6dbb5c 173 led4=0;
knasp 17:0b1c5f6dbb5c 174 led1=0;
knasp 17:0b1c5f6dbb5c 175 led3=1;
knasp 17:0b1c5f6dbb5c 176 led2=0;
knasp 17:0b1c5f6dbb5c 177
knasp 17:0b1c5f6dbb5c 178
knasp 17:0b1c5f6dbb5c 179
knasp 17:0b1c5f6dbb5c 180 }
knasp 22:a255721ffc58 181
knasp 17:0b1c5f6dbb5c 182 else if (myOrientation == MMA7660::Unknown){
knasp 17:0b1c5f6dbb5c 183
knasp 17:0b1c5f6dbb5c 184 LCD.printf("Don't Know");
knasp 17:0b1c5f6dbb5c 185
knasp 17:0b1c5f6dbb5c 186 }
knasp 17:0b1c5f6dbb5c 187
knasp 14:116f94a428c9 188 }
wojt86 16:6b502d21abf4 189
wojt86 16:6b502d21abf4 190
wojt86 16:6b502d21abf4 191 }
knasp 11:73e8c1bb5467 192 return false;
knasp 11:73e8c1bb5467 193 }
knasp 22:a255721ffc58 194 }