First revision of tactile mouse code

Committer:
JPB515
Date:
Mon Apr 08 16:57:36 2019 +0000
Revision:
0:f254a3cfe0f6
First publish of tactile mouse code;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JPB515 0:f254a3cfe0f6 1 #include "mbed.h"
JPB515 0:f254a3cfe0f6 2 #include "tactile_mouse.hpp"
JPB515 0:f254a3cfe0f6 3 #include "stepper.hpp"
JPB515 0:f254a3cfe0f6 4
JPB515 0:f254a3cfe0f6 5 void M1downstep1(double delay){
JPB515 0:f254a3cfe0f6 6 MotorA1=0;
JPB515 0:f254a3cfe0f6 7 MotorA2=1;
JPB515 0:f254a3cfe0f6 8 MotorB1=0;
JPB515 0:f254a3cfe0f6 9 MotorB2=1;
JPB515 0:f254a3cfe0f6 10 wait(0.000001);
JPB515 0:f254a3cfe0f6 11 step = 1;
JPB515 0:f254a3cfe0f6 12 wait(0.000001);
JPB515 0:f254a3cfe0f6 13 step=0;
JPB515 0:f254a3cfe0f6 14 wait(delay);
JPB515 0:f254a3cfe0f6 15 }
JPB515 0:f254a3cfe0f6 16
JPB515 0:f254a3cfe0f6 17 void M1downstep2(double delay){
JPB515 0:f254a3cfe0f6 18 MotorA1=0;
JPB515 0:f254a3cfe0f6 19 MotorA2=1;
JPB515 0:f254a3cfe0f6 20 MotorB1=1;
JPB515 0:f254a3cfe0f6 21 MotorB2=0;
JPB515 0:f254a3cfe0f6 22 wait(0.000001);
JPB515 0:f254a3cfe0f6 23 step = 1;
JPB515 0:f254a3cfe0f6 24 wait(0.000001);
JPB515 0:f254a3cfe0f6 25 step=0;
JPB515 0:f254a3cfe0f6 26 wait(delay);
JPB515 0:f254a3cfe0f6 27 }
JPB515 0:f254a3cfe0f6 28
JPB515 0:f254a3cfe0f6 29 void M1downstep3(double delay){
JPB515 0:f254a3cfe0f6 30 MotorA1=1;
JPB515 0:f254a3cfe0f6 31 MotorA2=0;
JPB515 0:f254a3cfe0f6 32 MotorB1=1;
JPB515 0:f254a3cfe0f6 33 MotorB2=0;
JPB515 0:f254a3cfe0f6 34 wait(0.000001);
JPB515 0:f254a3cfe0f6 35 step = 1;
JPB515 0:f254a3cfe0f6 36 wait(0.000001);
JPB515 0:f254a3cfe0f6 37 step=0;
JPB515 0:f254a3cfe0f6 38 wait(delay);
JPB515 0:f254a3cfe0f6 39 }
JPB515 0:f254a3cfe0f6 40
JPB515 0:f254a3cfe0f6 41 void M1downstep4(double delay){
JPB515 0:f254a3cfe0f6 42 MotorA1=1;
JPB515 0:f254a3cfe0f6 43 MotorA2=0;
JPB515 0:f254a3cfe0f6 44 MotorB1=0;
JPB515 0:f254a3cfe0f6 45 MotorB2=1;
JPB515 0:f254a3cfe0f6 46 wait(0.000001);
JPB515 0:f254a3cfe0f6 47 step = 1;
JPB515 0:f254a3cfe0f6 48 wait(0.000001);
JPB515 0:f254a3cfe0f6 49 step=0;
JPB515 0:f254a3cfe0f6 50 wait(delay);
JPB515 0:f254a3cfe0f6 51 }
JPB515 0:f254a3cfe0f6 52
JPB515 0:f254a3cfe0f6 53 void M1upstep1(double delay){
JPB515 0:f254a3cfe0f6 54 MotorA1=1;
JPB515 0:f254a3cfe0f6 55 MotorA2=0;
JPB515 0:f254a3cfe0f6 56 MotorB1=0;
JPB515 0:f254a3cfe0f6 57 MotorB2=1;
JPB515 0:f254a3cfe0f6 58 wait(0.000001);
JPB515 0:f254a3cfe0f6 59 step = 1;
JPB515 0:f254a3cfe0f6 60 wait(0.000001);
JPB515 0:f254a3cfe0f6 61 step=0;
JPB515 0:f254a3cfe0f6 62 wait(delay);
JPB515 0:f254a3cfe0f6 63 }
JPB515 0:f254a3cfe0f6 64
JPB515 0:f254a3cfe0f6 65 void M1upstep3(double delay){
JPB515 0:f254a3cfe0f6 66 MotorA1=1;
JPB515 0:f254a3cfe0f6 67 MotorA2=0;
JPB515 0:f254a3cfe0f6 68 MotorB1=1;
JPB515 0:f254a3cfe0f6 69 MotorB2=0;
JPB515 0:f254a3cfe0f6 70 wait(0.000001);
JPB515 0:f254a3cfe0f6 71 step = 1;
JPB515 0:f254a3cfe0f6 72 wait(0.000001);
JPB515 0:f254a3cfe0f6 73 step=0;
JPB515 0:f254a3cfe0f6 74 wait(delay);
JPB515 0:f254a3cfe0f6 75 }
JPB515 0:f254a3cfe0f6 76
JPB515 0:f254a3cfe0f6 77 void M1upstep5(double delay){
JPB515 0:f254a3cfe0f6 78 MotorA1=0;
JPB515 0:f254a3cfe0f6 79 MotorA2=1;
JPB515 0:f254a3cfe0f6 80 MotorB1=1;
JPB515 0:f254a3cfe0f6 81 MotorB2=0;
JPB515 0:f254a3cfe0f6 82 wait(0.000001);
JPB515 0:f254a3cfe0f6 83 step = 1;
JPB515 0:f254a3cfe0f6 84 wait(0.000001);
JPB515 0:f254a3cfe0f6 85 step=0;
JPB515 0:f254a3cfe0f6 86 wait(delay);
JPB515 0:f254a3cfe0f6 87 }
JPB515 0:f254a3cfe0f6 88
JPB515 0:f254a3cfe0f6 89 void M1upstep7(double delay){
JPB515 0:f254a3cfe0f6 90 MotorA1=0;
JPB515 0:f254a3cfe0f6 91 MotorA2=1;
JPB515 0:f254a3cfe0f6 92 MotorB1=0;
JPB515 0:f254a3cfe0f6 93 MotorB2=1;
JPB515 0:f254a3cfe0f6 94 wait(0.000001);
JPB515 0:f254a3cfe0f6 95 step = 1;
JPB515 0:f254a3cfe0f6 96 wait(0.000001);
JPB515 0:f254a3cfe0f6 97 step=0;
JPB515 0:f254a3cfe0f6 98 wait(delay);
JPB515 0:f254a3cfe0f6 99 }
JPB515 0:f254a3cfe0f6 100
JPB515 0:f254a3cfe0f6 101
JPB515 0:f254a3cfe0f6 102 void M1stop(double delay){
JPB515 0:f254a3cfe0f6 103 MotorA1=0;
JPB515 0:f254a3cfe0f6 104 MotorA2=0;
JPB515 0:f254a3cfe0f6 105 MotorB1=0;
JPB515 0:f254a3cfe0f6 106 MotorB2=0;
JPB515 0:f254a3cfe0f6 107 wait(0.00001);
JPB515 0:f254a3cfe0f6 108 step = 1;
JPB515 0:f254a3cfe0f6 109 wait(0.00001);
JPB515 0:f254a3cfe0f6 110 step=0;
JPB515 0:f254a3cfe0f6 111 }
JPB515 0:f254a3cfe0f6 112
JPB515 0:f254a3cfe0f6 113 //Extend and retract functions take time delay in S
JPB515 0:f254a3cfe0f6 114 void M1down(double delay){
JPB515 0:f254a3cfe0f6 115 M1upstep7(delay);
JPB515 0:f254a3cfe0f6 116 M1upstep5(delay);
JPB515 0:f254a3cfe0f6 117 M1upstep3(delay);
JPB515 0:f254a3cfe0f6 118 M1upstep1(delay);
JPB515 0:f254a3cfe0f6 119 M1stop(0);
JPB515 0:f254a3cfe0f6 120 }//Steps are different - sequence actually turns out to be the same as the up sequence!
JPB515 0:f254a3cfe0f6 121
JPB515 0:f254a3cfe0f6 122 void M1up(double delay){
JPB515 0:f254a3cfe0f6 123 M1upstep1(delay);
JPB515 0:f254a3cfe0f6 124 M1upstep3(delay);
JPB515 0:f254a3cfe0f6 125 M1upstep5(delay);
JPB515 0:f254a3cfe0f6 126 M1upstep7(delay);
JPB515 0:f254a3cfe0f6 127 M1stop(0);
JPB515 0:f254a3cfe0f6 128 }
JPB515 0:f254a3cfe0f6 129
JPB515 0:f254a3cfe0f6 130
JPB515 0:f254a3cfe0f6 131
JPB515 0:f254a3cfe0f6 132 void selectMotor(int x, int y){
JPB515 0:f254a3cfe0f6 133 switch (x){
JPB515 0:f254a3cfe0f6 134 case 0: BOARD_MUXA=0;
JPB515 0:f254a3cfe0f6 135 BOARD_MUXB=0;
JPB515 0:f254a3cfe0f6 136 BOARD_MUXC=0;
JPB515 0:f254a3cfe0f6 137 break;
JPB515 0:f254a3cfe0f6 138 case 1: BOARD_MUXA=1;
JPB515 0:f254a3cfe0f6 139 BOARD_MUXB=0;
JPB515 0:f254a3cfe0f6 140 BOARD_MUXC=0;
JPB515 0:f254a3cfe0f6 141 break;
JPB515 0:f254a3cfe0f6 142 case 2: BOARD_MUXA=0;
JPB515 0:f254a3cfe0f6 143 BOARD_MUXB=1;
JPB515 0:f254a3cfe0f6 144 BOARD_MUXC=0;
JPB515 0:f254a3cfe0f6 145 break;
JPB515 0:f254a3cfe0f6 146 case 3: BOARD_MUXA=1;
JPB515 0:f254a3cfe0f6 147 BOARD_MUXB=1;
JPB515 0:f254a3cfe0f6 148 BOARD_MUXC=0;
JPB515 0:f254a3cfe0f6 149 break;
JPB515 0:f254a3cfe0f6 150 case 4: BOARD_MUXA=0;
JPB515 0:f254a3cfe0f6 151 BOARD_MUXB=0;
JPB515 0:f254a3cfe0f6 152 BOARD_MUXC=1;
JPB515 0:f254a3cfe0f6 153 break;
JPB515 0:f254a3cfe0f6 154 case 5: BOARD_MUXA=1;
JPB515 0:f254a3cfe0f6 155 BOARD_MUXB=0;
JPB515 0:f254a3cfe0f6 156 BOARD_MUXC=1;
JPB515 0:f254a3cfe0f6 157 break;
JPB515 0:f254a3cfe0f6 158 case 6: BOARD_MUXA=0;
JPB515 0:f254a3cfe0f6 159 BOARD_MUXB=1;
JPB515 0:f254a3cfe0f6 160 BOARD_MUXC=1;
JPB515 0:f254a3cfe0f6 161 break;
JPB515 0:f254a3cfe0f6 162 case 7: BOARD_MUXA=1;
JPB515 0:f254a3cfe0f6 163 BOARD_MUXB=1;
JPB515 0:f254a3cfe0f6 164 BOARD_MUXC=1;
JPB515 0:f254a3cfe0f6 165 break;
JPB515 0:f254a3cfe0f6 166 default:BOARD_MUXA=0;
JPB515 0:f254a3cfe0f6 167 BOARD_MUXB=0;
JPB515 0:f254a3cfe0f6 168 BOARD_MUXC=0;
JPB515 0:f254a3cfe0f6 169 break;
JPB515 0:f254a3cfe0f6 170 }
JPB515 0:f254a3cfe0f6 171 switch (y){
JPB515 0:f254a3cfe0f6 172 case 0: MUXA=0;
JPB515 0:f254a3cfe0f6 173 MUXB=0;
JPB515 0:f254a3cfe0f6 174 MUXC=0;
JPB515 0:f254a3cfe0f6 175 break;
JPB515 0:f254a3cfe0f6 176 case 1: MUXA=1;
JPB515 0:f254a3cfe0f6 177 MUXB=0;
JPB515 0:f254a3cfe0f6 178 MUXC=0;
JPB515 0:f254a3cfe0f6 179 break;
JPB515 0:f254a3cfe0f6 180 case 2: MUXA=0;
JPB515 0:f254a3cfe0f6 181 MUXB=1;
JPB515 0:f254a3cfe0f6 182 MUXC=0;
JPB515 0:f254a3cfe0f6 183 break;
JPB515 0:f254a3cfe0f6 184 case 3: MUXA=1;
JPB515 0:f254a3cfe0f6 185 MUXB=1;
JPB515 0:f254a3cfe0f6 186 MUXC=0;
JPB515 0:f254a3cfe0f6 187 break;
JPB515 0:f254a3cfe0f6 188 case 4: MUXA=0;
JPB515 0:f254a3cfe0f6 189 MUXB=0;
JPB515 0:f254a3cfe0f6 190 MUXC=1;
JPB515 0:f254a3cfe0f6 191 break;
JPB515 0:f254a3cfe0f6 192 case 5: MUXA=1;
JPB515 0:f254a3cfe0f6 193 MUXB=0;
JPB515 0:f254a3cfe0f6 194 MUXC=1;
JPB515 0:f254a3cfe0f6 195 break;
JPB515 0:f254a3cfe0f6 196 case 6: MUXA=0;
JPB515 0:f254a3cfe0f6 197 MUXB=1;
JPB515 0:f254a3cfe0f6 198 MUXC=1;
JPB515 0:f254a3cfe0f6 199 break;
JPB515 0:f254a3cfe0f6 200 case 7: MUXA=1;
JPB515 0:f254a3cfe0f6 201 MUXB=1;
JPB515 0:f254a3cfe0f6 202 MUXC=1;
JPB515 0:f254a3cfe0f6 203 break;
JPB515 0:f254a3cfe0f6 204 default:MUXA=0;
JPB515 0:f254a3cfe0f6 205 MUXB=0;
JPB515 0:f254a3cfe0f6 206 MUXC=0;
JPB515 0:f254a3cfe0f6 207 break;
JPB515 0:f254a3cfe0f6 208 }
JPB515 0:f254a3cfe0f6 209 }