accelerometer trial

Dependencies:   mbed C12832 MMA7660 USBDevice

Committer:
knasp
Date:
Wed Oct 30 20:06:29 2019 +0000
Revision:
26:f1a0d62af7f9
Parent:
25:f8db641d33ab
minor changes 2

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