123
Dependencies: CPU_Usage DebounceIn QEI TFT_fonts UniGraphic
main.cpp@0:c049cebc31b4, 2018-08-06 (annotated)
- Committer:
- turumputum
- Date:
- Mon Aug 06 21:31:59 2018 +0000
- Revision:
- 0:c049cebc31b4
work edition
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
turumputum | 0:c049cebc31b4 | 1 | #include "mbed.h" |
turumputum | 0:c049cebc31b4 | 2 | //#include "stdio.h" |
turumputum | 0:c049cebc31b4 | 3 | #include "QEI.h" |
turumputum | 0:c049cebc31b4 | 4 | #include "string" |
turumputum | 0:c049cebc31b4 | 5 | #include "Arial12x12.h" |
turumputum | 0:c049cebc31b4 | 6 | #include "Arial24x23.h" |
turumputum | 0:c049cebc31b4 | 7 | #include "Arial28x28.h" |
turumputum | 0:c049cebc31b4 | 8 | #include "font_big.h" |
turumputum | 0:c049cebc31b4 | 9 | #include "bigFo.h" |
turumputum | 0:c049cebc31b4 | 10 | #include "ILI9341.h" |
turumputum | 0:c049cebc31b4 | 11 | #include "Arial43x48_numb.h" |
turumputum | 0:c049cebc31b4 | 12 | #include "DebounceIn.h" |
turumputum | 0:c049cebc31b4 | 13 | #include "CPU_Usage.h" |
turumputum | 0:c049cebc31b4 | 14 | |
turumputum | 0:c049cebc31b4 | 15 | |
turumputum | 0:c049cebc31b4 | 16 | |
turumputum | 0:c049cebc31b4 | 17 | #define PI (3.141592653589793) |
turumputum | 0:c049cebc31b4 | 18 | |
turumputum | 0:c049cebc31b4 | 19 | #define encoderRATE 100 |
turumputum | 0:c049cebc31b4 | 20 | #define lcdRATE 100 |
turumputum | 0:c049cebc31b4 | 21 | #define stepRATE 15 |
turumputum | 0:c049cebc31b4 | 22 | |
turumputum | 0:c049cebc31b4 | 23 | #define mmRatio 4450 |
turumputum | 0:c049cebc31b4 | 24 | |
turumputum | 0:c049cebc31b4 | 25 | #define stAngle 0 |
turumputum | 0:c049cebc31b4 | 26 | #define stFeed 1 |
turumputum | 0:c049cebc31b4 | 27 | #define stThread 2 |
turumputum | 0:c049cebc31b4 | 28 | |
turumputum | 0:c049cebc31b4 | 29 | #define editPos 0 |
turumputum | 0:c049cebc31b4 | 30 | #define editMult 1 |
turumputum | 0:c049cebc31b4 | 31 | #define editFeed 2 |
turumputum | 0:c049cebc31b4 | 32 | |
turumputum | 0:c049cebc31b4 | 33 | Timer t; |
turumputum | 0:c049cebc31b4 | 34 | |
turumputum | 0:c049cebc31b4 | 35 | DigitalOut myled1(LED1); |
turumputum | 0:c049cebc31b4 | 36 | |
turumputum | 0:c049cebc31b4 | 37 | Serial pc(USBTX, USBRX); |
turumputum | 0:c049cebc31b4 | 38 | |
turumputum | 0:c049cebc31b4 | 39 | |
turumputum | 0:c049cebc31b4 | 40 | Thread threadEnc(osPriorityNormal); |
turumputum | 0:c049cebc31b4 | 41 | Thread threadStep(osPriorityAboveNormal); |
turumputum | 0:c049cebc31b4 | 42 | |
turumputum | 0:c049cebc31b4 | 43 | DebounceIn wheelPanButton(PC_12); |
turumputum | 0:c049cebc31b4 | 44 | |
turumputum | 0:c049cebc31b4 | 45 | DebounceIn pos1Button(PB_12); |
turumputum | 0:c049cebc31b4 | 46 | DebounceIn pos2Button(PA_12); |
turumputum | 0:c049cebc31b4 | 47 | DebounceIn selectButton(PA_11); |
turumputum | 0:c049cebc31b4 | 48 | |
turumputum | 0:c049cebc31b4 | 49 | InterruptIn switch1Button(PC_8); |
turumputum | 0:c049cebc31b4 | 50 | InterruptIn switch2Button(PC_6); |
turumputum | 0:c049cebc31b4 | 51 | InterruptIn switch3Button(PC_5); |
turumputum | 0:c049cebc31b4 | 52 | //PC_6 midle feed rubilnik pin |
turumputum | 0:c049cebc31b4 | 53 | |
turumputum | 0:c049cebc31b4 | 54 | |
turumputum | 0:c049cebc31b4 | 55 | DigitalOut stepPin(PB_1); |
turumputum | 0:c049cebc31b4 | 56 | DigitalOut dirPin(PB_2); |
turumputum | 0:c049cebc31b4 | 57 | |
turumputum | 0:c049cebc31b4 | 58 | |
turumputum | 0:c049cebc31b4 | 59 | //Use X4 encoding. |
turumputum | 0:c049cebc31b4 | 60 | //QEI wheel(p29, p30, NC, 624, QEI::X4_ENCODING); |
turumputum | 0:c049cebc31b4 | 61 | //Use X2 encoding by default. |
turumputum | 0:c049cebc31b4 | 62 | //QEI wheel (p29, p30, NC, 624); |
turumputum | 0:c049cebc31b4 | 63 | QEI wheel (PB_13, PB_14, PB_15, 4000, QEI::X4_ENCODING); |
turumputum | 0:c049cebc31b4 | 64 | |
turumputum | 0:c049cebc31b4 | 65 | QEI wheelPan (PC_11, PC_10, NC, 20, QEI::X4_ENCODING); |
turumputum | 0:c049cebc31b4 | 66 | |
turumputum | 0:c049cebc31b4 | 67 | PinName buspins[8]={D8,D9,D2,D3,D4,D5,D6,D7}; |
turumputum | 0:c049cebc31b4 | 68 | ILI9341 myLCD(BUS_8, buspins, A3, A4, A2, A1, A0,"myLCD"); // Parallel Bus 8bit, buspins array, CS, reset, RS, WR, RD |
turumputum | 0:c049cebc31b4 | 69 | |
turumputum | 0:c049cebc31b4 | 70 | |
turumputum | 0:c049cebc31b4 | 71 | unsigned short backgroundcolor=Blue; |
turumputum | 0:c049cebc31b4 | 72 | unsigned short foregroundcolor=White; |
turumputum | 0:c049cebc31b4 | 73 | |
turumputum | 0:c049cebc31b4 | 74 | |
turumputum | 0:c049cebc31b4 | 75 | |
turumputum | 0:c049cebc31b4 | 76 | int state=1, prevState=-1; |
turumputum | 0:c049cebc31b4 | 77 | |
turumputum | 0:c049cebc31b4 | 78 | volatile int dir,z=1, k=7, edit=0; |
turumputum | 0:c049cebc31b4 | 79 | |
turumputum | 0:c049cebc31b4 | 80 | volatile float stPos=0, stPrevPos=1, stTarget=0; |
turumputum | 0:c049cebc31b4 | 81 | volatile float stepMult =1, prevStepMult=0, pos1, pos2, prevPos1, prevPos2; |
turumputum | 0:c049cebc31b4 | 82 | |
turumputum | 0:c049cebc31b4 | 83 | float multMass[2]={0.1,1}; |
turumputum | 0:c049cebc31b4 | 84 | int feedMass[10]={30,60,120,180,240,300,450,600,900,1200}; |
turumputum | 0:c049cebc31b4 | 85 | |
turumputum | 0:c049cebc31b4 | 86 | volatile int Pulses = 0, panPulses=0, feedRate = 450, delta; |
turumputum | 0:c049cebc31b4 | 87 | volatile int PrevPulses = 0; |
turumputum | 0:c049cebc31b4 | 88 | volatile int rev = 0; |
turumputum | 0:c049cebc31b4 | 89 | volatile int prevRev = 0; |
turumputum | 0:c049cebc31b4 | 90 | volatile int panAngle=0, prevPanAngle=0; |
turumputum | 0:c049cebc31b4 | 91 | volatile float stepPeriod = stepRATE; |
turumputum | 0:c049cebc31b4 | 92 | volatile float Angle = 0; |
turumputum | 0:c049cebc31b4 | 93 | float prevAngle=0; |
turumputum | 0:c049cebc31b4 | 94 | bool wheelBut, prevWheelBut, startUp=true, showStopPos=1; |
turumputum | 0:c049cebc31b4 | 95 | |
turumputum | 0:c049cebc31b4 | 96 | |
turumputum | 0:c049cebc31b4 | 97 | void printWheelPan(){ |
turumputum | 0:c049cebc31b4 | 98 | myLCD.set_font((unsigned char*) SCProSB31x55); |
turumputum | 0:c049cebc31b4 | 99 | myLCD.locate(50,50); |
turumputum | 0:c049cebc31b4 | 100 | myLCD.printf("%.1f ", Angle); |
turumputum | 0:c049cebc31b4 | 101 | myLCD.set_font((unsigned char*) Arial43x48_numb); |
turumputum | 0:c049cebc31b4 | 102 | myLCD.locate(50,50); |
turumputum | 0:c049cebc31b4 | 103 | myLCD.printf("%.1f ", Angle); |
turumputum | 0:c049cebc31b4 | 104 | } |
turumputum | 0:c049cebc31b4 | 105 | |
turumputum | 0:c049cebc31b4 | 106 | void printWheelBut(){ |
turumputum | 0:c049cebc31b4 | 107 | myLCD.set_font((unsigned char*) Arial24x23); |
turumputum | 0:c049cebc31b4 | 108 | myLCD.locate(150,50); |
turumputum | 0:c049cebc31b4 | 109 | myLCD.printf("But %.1i ", wheelBut); |
turumputum | 0:c049cebc31b4 | 110 | } |
turumputum | 0:c049cebc31b4 | 111 | |
turumputum | 0:c049cebc31b4 | 112 | void printMult(){ |
turumputum | 0:c049cebc31b4 | 113 | myLCD.set_font((unsigned char*) Arial24x23); |
turumputum | 0:c049cebc31b4 | 114 | myLCD.locate(90,215); |
turumputum | 0:c049cebc31b4 | 115 | myLCD.printf("%.1f", stepMult); |
turumputum | 0:c049cebc31b4 | 116 | } |
turumputum | 0:c049cebc31b4 | 117 | |
turumputum | 0:c049cebc31b4 | 118 | void printFeed(){ |
turumputum | 0:c049cebc31b4 | 119 | myLCD.set_font((unsigned char*) Arial24x23); |
turumputum | 0:c049cebc31b4 | 120 | myLCD.locate(250,215); |
turumputum | 0:c049cebc31b4 | 121 | myLCD.printf("%i", feedRate); |
turumputum | 0:c049cebc31b4 | 122 | } |
turumputum | 0:c049cebc31b4 | 123 | |
turumputum | 0:c049cebc31b4 | 124 | void printTrPos(){ |
turumputum | 0:c049cebc31b4 | 125 | myLCD.set_font((unsigned char*) Arial24x23); |
turumputum | 0:c049cebc31b4 | 126 | myLCD.locate(90,185); |
turumputum | 0:c049cebc31b4 | 127 | myLCD.printf("%.1f", pos1/mmRatio); |
turumputum | 0:c049cebc31b4 | 128 | } |
turumputum | 0:c049cebc31b4 | 129 | |
turumputum | 0:c049cebc31b4 | 130 | void printPos2(){ |
turumputum | 0:c049cebc31b4 | 131 | myLCD.set_font((unsigned char*) Arial24x23); |
turumputum | 0:c049cebc31b4 | 132 | myLCD.locate(250,185); |
turumputum | 0:c049cebc31b4 | 133 | myLCD.printf("%.1f", pos2/mmRatio); |
turumputum | 0:c049cebc31b4 | 134 | } |
turumputum | 0:c049cebc31b4 | 135 | |
turumputum | 0:c049cebc31b4 | 136 | void printStPos(){ |
turumputum | 0:c049cebc31b4 | 137 | myLCD.foreground(Green); |
turumputum | 0:c049cebc31b4 | 138 | myLCD.set_font((unsigned char*) Arial12x12); |
turumputum | 0:c049cebc31b4 | 139 | myLCD.locate(10,95); |
turumputum | 0:c049cebc31b4 | 140 | float val=stTarget/mmRatio; |
turumputum | 0:c049cebc31b4 | 141 | myLCD.printf("%.1f ", val); |
turumputum | 0:c049cebc31b4 | 142 | myLCD.foreground(White); |
turumputum | 0:c049cebc31b4 | 143 | myLCD.set_font((unsigned char*) SCProSB31x55); |
turumputum | 0:c049cebc31b4 | 144 | myLCD.locate(60,70); |
turumputum | 0:c049cebc31b4 | 145 | val=stPos/mmRatio; |
turumputum | 0:c049cebc31b4 | 146 | myLCD.printf("%.1f ", val); |
turumputum | 0:c049cebc31b4 | 147 | } |
turumputum | 0:c049cebc31b4 | 148 | |
turumputum | 0:c049cebc31b4 | 149 | |
turumputum | 0:c049cebc31b4 | 150 | void printStAngle(){ |
turumputum | 0:c049cebc31b4 | 151 | myLCD.cls(); |
turumputum | 0:c049cebc31b4 | 152 | myLCD.set_orientation(1); |
turumputum | 0:c049cebc31b4 | 153 | myLCD.background(Blue); // set background to black |
turumputum | 0:c049cebc31b4 | 154 | myLCD.foreground(White); // set chars to white |
turumputum | 0:c049cebc31b4 | 155 | myLCD.rect(0,0,320,240, Blue); |
turumputum | 0:c049cebc31b4 | 156 | myLCD.set_font((unsigned char*) Arial28x28); |
turumputum | 0:c049cebc31b4 | 157 | myLCD.locate(100,10); |
turumputum | 0:c049cebc31b4 | 158 | myLCD.printf("ANGLE mode"); |
turumputum | 0:c049cebc31b4 | 159 | myLCD.set_font((unsigned char*) Arial24x23); |
turumputum | 0:c049cebc31b4 | 160 | myLCD.locate(200,300); |
turumputum | 0:c049cebc31b4 | 161 | myLCD.printf("o"); |
turumputum | 0:c049cebc31b4 | 162 | } |
turumputum | 0:c049cebc31b4 | 163 | //PRINT FEED MODE |
turumputum | 0:c049cebc31b4 | 164 | void printStFeed(){ |
turumputum | 0:c049cebc31b4 | 165 | myLCD.cls(); |
turumputum | 0:c049cebc31b4 | 166 | myLCD.set_orientation(1); |
turumputum | 0:c049cebc31b4 | 167 | myLCD.background(Blue); // set background to black |
turumputum | 0:c049cebc31b4 | 168 | myLCD.foreground(White); // set chars to white |
turumputum | 0:c049cebc31b4 | 169 | myLCD.rect(0,0,320,240, Blue); |
turumputum | 0:c049cebc31b4 | 170 | myLCD.set_font((unsigned char*) Arial28x28); |
turumputum | 0:c049cebc31b4 | 171 | myLCD.locate(75,10); |
turumputum | 0:c049cebc31b4 | 172 | myLCD.printf(" FEED mode"); |
turumputum | 0:c049cebc31b4 | 173 | myLCD.background(Black); |
turumputum | 0:c049cebc31b4 | 174 | myLCD.set_font((unsigned char*) Arial24x23); |
turumputum | 0:c049cebc31b4 | 175 | myLCD.locate(5,70); |
turumputum | 0:c049cebc31b4 | 176 | myLCD.printf("pos "); |
turumputum | 0:c049cebc31b4 | 177 | myLCD.rect(0,180,160,210, Blue); |
turumputum | 0:c049cebc31b4 | 178 | myLCD.rect(160,180,320,210, Blue); |
turumputum | 0:c049cebc31b4 | 179 | myLCD.rect(160,210,320,240, Blue); |
turumputum | 0:c049cebc31b4 | 180 | myLCD.rect(0,210,160,240, Blue); |
turumputum | 0:c049cebc31b4 | 181 | myLCD.set_font((unsigned char*) Arial24x23); |
turumputum | 0:c049cebc31b4 | 182 | myLCD.locate(5,215); |
turumputum | 0:c049cebc31b4 | 183 | myLCD.printf("Mult:"); |
turumputum | 0:c049cebc31b4 | 184 | myLCD.locate(165,215); |
turumputum | 0:c049cebc31b4 | 185 | myLCD.printf("Feed:"); |
turumputum | 0:c049cebc31b4 | 186 | myLCD.locate(5,185); |
turumputum | 0:c049cebc31b4 | 187 | myLCD.printf("Pos1:"); |
turumputum | 0:c049cebc31b4 | 188 | //myLCD.locate(165,185); |
turumputum | 0:c049cebc31b4 | 189 | //myLCD.printf("Pos2:"); |
turumputum | 0:c049cebc31b4 | 190 | printFeed(); |
turumputum | 0:c049cebc31b4 | 191 | } |
turumputum | 0:c049cebc31b4 | 192 | |
turumputum | 0:c049cebc31b4 | 193 | void pitnTmpVar(float var){ |
turumputum | 0:c049cebc31b4 | 194 | myLCD.set_font((unsigned char*) Arial12x12); |
turumputum | 0:c049cebc31b4 | 195 | myLCD.locate(5,5); |
turumputum | 0:c049cebc31b4 | 196 | myLCD.printf("%.1f ", var); |
turumputum | 0:c049cebc31b4 | 197 | } |
turumputum | 0:c049cebc31b4 | 198 | |
turumputum | 0:c049cebc31b4 | 199 | void encoderPan_thread() { |
turumputum | 0:c049cebc31b4 | 200 | while(1){ |
turumputum | 0:c049cebc31b4 | 201 | |
turumputum | 0:c049cebc31b4 | 202 | wheelBut=wheelPanButton.read(); |
turumputum | 0:c049cebc31b4 | 203 | if(!wheelBut){ |
turumputum | 0:c049cebc31b4 | 204 | int prevPanPulses=panPulses; |
turumputum | 0:c049cebc31b4 | 205 | panPulses=wheelPan.getPulses()/4; |
turumputum | 0:c049cebc31b4 | 206 | delta = (prevPanPulses - panPulses); |
turumputum | 0:c049cebc31b4 | 207 | if(edit==0){ |
turumputum | 0:c049cebc31b4 | 208 | stTarget = stTarget+ (delta*stepMult*mmRatio); |
turumputum | 0:c049cebc31b4 | 209 | }else if(edit==1){ |
turumputum | 0:c049cebc31b4 | 210 | z=z+delta; |
turumputum | 0:c049cebc31b4 | 211 | if(z>1){z=0;}else if (z<0){z=1;} |
turumputum | 0:c049cebc31b4 | 212 | stepMult= multMass[z]; |
turumputum | 0:c049cebc31b4 | 213 | }else if(edit==2){ |
turumputum | 0:c049cebc31b4 | 214 | k=k+delta; |
turumputum | 0:c049cebc31b4 | 215 | if(k>9){k=0;}else if (k<0){k=9;} |
turumputum | 0:c049cebc31b4 | 216 | feedRate = feedMass[k]; |
turumputum | 0:c049cebc31b4 | 217 | stepPeriod=60000000/(feedRate*mmRatio); |
turumputum | 0:c049cebc31b4 | 218 | } |
turumputum | 0:c049cebc31b4 | 219 | }else{ |
turumputum | 0:c049cebc31b4 | 220 | edit++; |
turumputum | 0:c049cebc31b4 | 221 | if(edit>2){edit=0;} |
turumputum | 0:c049cebc31b4 | 222 | wait_ms(100); |
turumputum | 0:c049cebc31b4 | 223 | } |
turumputum | 0:c049cebc31b4 | 224 | |
turumputum | 0:c049cebc31b4 | 225 | if(!pos1Button.read()){ |
turumputum | 0:c049cebc31b4 | 226 | pos1=stPos; |
turumputum | 0:c049cebc31b4 | 227 | printTrPos(); |
turumputum | 0:c049cebc31b4 | 228 | wait_ms(100); |
turumputum | 0:c049cebc31b4 | 229 | } |
turumputum | 0:c049cebc31b4 | 230 | |
turumputum | 0:c049cebc31b4 | 231 | if(!pos2Button.read()){ |
turumputum | 0:c049cebc31b4 | 232 | stPos=0; |
turumputum | 0:c049cebc31b4 | 233 | stTarget = 0; |
turumputum | 0:c049cebc31b4 | 234 | printStPos(); |
turumputum | 0:c049cebc31b4 | 235 | wait_ms(100); |
turumputum | 0:c049cebc31b4 | 236 | } |
turumputum | 0:c049cebc31b4 | 237 | |
turumputum | 0:c049cebc31b4 | 238 | if(!selectButton.read()){ |
turumputum | 0:c049cebc31b4 | 239 | state++; |
turumputum | 0:c049cebc31b4 | 240 | if(state>1){state=0;} |
turumputum | 0:c049cebc31b4 | 241 | wait_ms(500); |
turumputum | 0:c049cebc31b4 | 242 | } |
turumputum | 0:c049cebc31b4 | 243 | |
turumputum | 0:c049cebc31b4 | 244 | wait_ms(encoderRATE); |
turumputum | 0:c049cebc31b4 | 245 | |
turumputum | 0:c049cebc31b4 | 246 | } |
turumputum | 0:c049cebc31b4 | 247 | } |
turumputum | 0:c049cebc31b4 | 248 | |
turumputum | 0:c049cebc31b4 | 249 | void feedToPos(){ |
turumputum | 0:c049cebc31b4 | 250 | stepPeriod=60000000/(feedRate*mmRatio); |
turumputum | 0:c049cebc31b4 | 251 | stTarget = pos1; |
turumputum | 0:c049cebc31b4 | 252 | wait_ms(100); |
turumputum | 0:c049cebc31b4 | 253 | } |
turumputum | 0:c049cebc31b4 | 254 | void feedHandMode(){ |
turumputum | 0:c049cebc31b4 | 255 | stepPeriod=stepRATE; |
turumputum | 0:c049cebc31b4 | 256 | wait_ms(100); |
turumputum | 0:c049cebc31b4 | 257 | } |
turumputum | 0:c049cebc31b4 | 258 | void feedToZero(){ |
turumputum | 0:c049cebc31b4 | 259 | stepPeriod=60000000/(feedRate*mmRatio); |
turumputum | 0:c049cebc31b4 | 260 | stTarget = 0; |
turumputum | 0:c049cebc31b4 | 261 | wait_ms(100); |
turumputum | 0:c049cebc31b4 | 262 | } |
turumputum | 0:c049cebc31b4 | 263 | |
turumputum | 0:c049cebc31b4 | 264 | |
turumputum | 0:c049cebc31b4 | 265 | void stepper_thread() { |
turumputum | 0:c049cebc31b4 | 266 | while(1){ |
turumputum | 0:c049cebc31b4 | 267 | if(stTarget>stPos){dirPin=1; dir=1;}else{dirPin=0;dir=-1;} |
turumputum | 0:c049cebc31b4 | 268 | |
turumputum | 0:c049cebc31b4 | 269 | if(stTarget!=stPos){ |
turumputum | 0:c049cebc31b4 | 270 | stepPin=1; |
turumputum | 0:c049cebc31b4 | 271 | wait_us(2); |
turumputum | 0:c049cebc31b4 | 272 | stepPin=0; |
turumputum | 0:c049cebc31b4 | 273 | wait_us(stepPeriod); |
turumputum | 0:c049cebc31b4 | 274 | stPos=stPos+dir; |
turumputum | 0:c049cebc31b4 | 275 | } else{ |
turumputum | 0:c049cebc31b4 | 276 | wait_ms(100); |
turumputum | 0:c049cebc31b4 | 277 | } |
turumputum | 0:c049cebc31b4 | 278 | |
turumputum | 0:c049cebc31b4 | 279 | } |
turumputum | 0:c049cebc31b4 | 280 | } |
turumputum | 0:c049cebc31b4 | 281 | |
turumputum | 0:c049cebc31b4 | 282 | |
turumputum | 0:c049cebc31b4 | 283 | int main() { |
turumputum | 0:c049cebc31b4 | 284 | pc.printf("startUp\r\n"); |
turumputum | 0:c049cebc31b4 | 285 | wheelPanButton.mode(PullUp); |
turumputum | 0:c049cebc31b4 | 286 | pos1Button.mode(PullUp); |
turumputum | 0:c049cebc31b4 | 287 | pos2Button.mode(PullUp); |
turumputum | 0:c049cebc31b4 | 288 | selectButton.mode(PullUp); |
turumputum | 0:c049cebc31b4 | 289 | switch1Button.mode(PullUp); |
turumputum | 0:c049cebc31b4 | 290 | switch2Button.mode(PullUp); |
turumputum | 0:c049cebc31b4 | 291 | switch3Button.mode(PullUp); |
turumputum | 0:c049cebc31b4 | 292 | pc.printf("ButtonIsPullUp\r\n"); |
turumputum | 0:c049cebc31b4 | 293 | |
turumputum | 0:c049cebc31b4 | 294 | switch1Button.fall(&feedToPos); |
turumputum | 0:c049cebc31b4 | 295 | switch2Button.fall(&feedHandMode); |
turumputum | 0:c049cebc31b4 | 296 | switch3Button.fall(&feedToZero); |
turumputum | 0:c049cebc31b4 | 297 | pc.printf("InteruptIsOn\r\n"); |
turumputum | 0:c049cebc31b4 | 298 | |
turumputum | 0:c049cebc31b4 | 299 | //wheelPanButton.set_samples(5); |
turumputum | 0:c049cebc31b4 | 300 | //wheelPanButton.set_debounce_us(5000); |
turumputum | 0:c049cebc31b4 | 301 | threadEnc.start(encoderPan_thread); |
turumputum | 0:c049cebc31b4 | 302 | pc.printf("encoderThreadIsRunning\r\n"); |
turumputum | 0:c049cebc31b4 | 303 | wait_ms(500); |
turumputum | 0:c049cebc31b4 | 304 | threadStep.start(stepper_thread); |
turumputum | 0:c049cebc31b4 | 305 | pc.printf("stepperThreadIsRunning\r\n"); |
turumputum | 0:c049cebc31b4 | 306 | wait_ms(500); |
turumputum | 0:c049cebc31b4 | 307 | |
turumputum | 0:c049cebc31b4 | 308 | |
turumputum | 0:c049cebc31b4 | 309 | while(1){ |
turumputum | 0:c049cebc31b4 | 310 | |
turumputum | 0:c049cebc31b4 | 311 | //ANGLE MODE |
turumputum | 0:c049cebc31b4 | 312 | if ((state==stAngle)){ |
turumputum | 0:c049cebc31b4 | 313 | //print screen |
turumputum | 0:c049cebc31b4 | 314 | if(state!=prevState){ |
turumputum | 0:c049cebc31b4 | 315 | printStAngle(); |
turumputum | 0:c049cebc31b4 | 316 | prevState=state; |
turumputum | 0:c049cebc31b4 | 317 | } |
turumputum | 0:c049cebc31b4 | 318 | if(prevAngle!=Angle){ |
turumputum | 0:c049cebc31b4 | 319 | printWheelPan(); |
turumputum | 0:c049cebc31b4 | 320 | prevAngle=Angle; |
turumputum | 0:c049cebc31b4 | 321 | stTarget = Angle*stepMult; |
turumputum | 0:c049cebc31b4 | 322 | } |
turumputum | 0:c049cebc31b4 | 323 | |
turumputum | 0:c049cebc31b4 | 324 | if(prevWheelBut!=wheelBut){ |
turumputum | 0:c049cebc31b4 | 325 | //printWheelBut(); |
turumputum | 0:c049cebc31b4 | 326 | prevWheelBut=wheelBut; |
turumputum | 0:c049cebc31b4 | 327 | } |
turumputum | 0:c049cebc31b4 | 328 | |
turumputum | 0:c049cebc31b4 | 329 | |
turumputum | 0:c049cebc31b4 | 330 | } |
turumputum | 0:c049cebc31b4 | 331 | //FEED MODE |
turumputum | 0:c049cebc31b4 | 332 | if ((state==stFeed)){ |
turumputum | 0:c049cebc31b4 | 333 | //print screen |
turumputum | 0:c049cebc31b4 | 334 | if(state!=prevState){ |
turumputum | 0:c049cebc31b4 | 335 | printStFeed(); |
turumputum | 0:c049cebc31b4 | 336 | prevState=state; |
turumputum | 0:c049cebc31b4 | 337 | } |
turumputum | 0:c049cebc31b4 | 338 | //check encoder |
turumputum | 0:c049cebc31b4 | 339 | if(stPrevPos!=stPos){ |
turumputum | 0:c049cebc31b4 | 340 | printStPos(); |
turumputum | 0:c049cebc31b4 | 341 | stPrevPos=stPos; |
turumputum | 0:c049cebc31b4 | 342 | showStopPos =1; |
turumputum | 0:c049cebc31b4 | 343 | }else if(showStopPos){ |
turumputum | 0:c049cebc31b4 | 344 | printStPos(); |
turumputum | 0:c049cebc31b4 | 345 | showStopPos=0; |
turumputum | 0:c049cebc31b4 | 346 | }else if(edit==1){ |
turumputum | 0:c049cebc31b4 | 347 | printMult(); |
turumputum | 0:c049cebc31b4 | 348 | }else if(edit==2){ |
turumputum | 0:c049cebc31b4 | 349 | printFeed(); |
turumputum | 0:c049cebc31b4 | 350 | } |
turumputum | 0:c049cebc31b4 | 351 | |
turumputum | 0:c049cebc31b4 | 352 | |
turumputum | 0:c049cebc31b4 | 353 | |
turumputum | 0:c049cebc31b4 | 354 | |
turumputum | 0:c049cebc31b4 | 355 | if(prevStepMult!=stepMult){ |
turumputum | 0:c049cebc31b4 | 356 | printMult(); |
turumputum | 0:c049cebc31b4 | 357 | prevStepMult=stepMult; |
turumputum | 0:c049cebc31b4 | 358 | } |
turumputum | 0:c049cebc31b4 | 359 | |
turumputum | 0:c049cebc31b4 | 360 | |
turumputum | 0:c049cebc31b4 | 361 | } |
turumputum | 0:c049cebc31b4 | 362 | //pitnTmpVar(stepPeriod); |
turumputum | 0:c049cebc31b4 | 363 | wait_ms(lcdRATE); |
turumputum | 0:c049cebc31b4 | 364 | } |
turumputum | 0:c049cebc31b4 | 365 | |
turumputum | 0:c049cebc31b4 | 366 | } |
turumputum | 0:c049cebc31b4 | 367 |