test2017-1-13

Dependencies:   AT24C1024 DMX-STM32 mbed

Committer:
tomo370
Date:
Fri Jul 28 04:44:42 2017 +0000
Revision:
8:2e68b9de685d
Parent:
7:813cdaad1200
2017_07_28ver

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tomo370 0:d94213e24c2e 1 #include "mbed.h"
tomo370 0:d94213e24c2e 2 #include "AT24C1024.h"
tomo370 0:d94213e24c2e 3 #include "AccelStepper.h"
tomo370 0:d94213e24c2e 4 #include "DMX.h"
tomo370 0:d94213e24c2e 5
tomo370 7:813cdaad1200 6 //モータ制御基板の通し番号を設定してください  初期設定は1です 0は使わないでね。
tomo370 8:2e68b9de685d 7 #define BoardNumber 1
tomo370 8:2e68b9de685d 8
tomo370 8:2e68b9de685d 9 //ステップ数設定 1:DRV full, 2:DRV 1/2, 3:DRV 1/4, 4:DRV 1/8, 5:DRV 1/16, 6:DRV 1/32, 7:TMC StealthChop µ16
tomo370 8:2e68b9de685d 10 #define StepSize1 7
tomo370 8:2e68b9de685d 11 #define StepSize2 7
tomo370 8:2e68b9de685d 12
tomo370 5:fd097a259856 13
tomo370 7:813cdaad1200 14 Ticker to;
tomo370 4:c3f3fdde7eee 15
tomo370 0:d94213e24c2e 16 Timer t;
tomo370 1:cf2f5992241c 17 DigitalOut dmxEnable(D8); //基本L(レシーブ)に固定します
tomo370 0:d94213e24c2e 18 DMX dmx(PA_9, PA_10);
tomo370 0:d94213e24c2e 19
tomo370 1:cf2f5992241c 20 I2C i2c(D4, D5); // SDA, SCL
tomo370 1:cf2f5992241c 21 AT24C1024 at24c1024(i2c); // Atmel 1Mbit EE-PROM
tomo370 7:813cdaad1200 22 const int addr = 0x70;
tomo370 0:d94213e24c2e 23
tomo370 1:cf2f5992241c 24 AccelStepper stepper1(1, D9, D6); // step, direction
tomo370 1:cf2f5992241c 25 AccelStepper stepper2(1, D10, D7); // step, direction
tomo370 1:cf2f5992241c 26
tomo370 1:cf2f5992241c 27 //モーター1 CN0とCN1を使用
tomo370 0:d94213e24c2e 28 DigitalOut stepper1Enable(D2);
tomo370 0:d94213e24c2e 29 DigitalOut stepper1MS1(D11);
tomo370 0:d94213e24c2e 30 DigitalOut stepper1MS2(D12);
tomo370 4:c3f3fdde7eee 31 DigitalOut stepper1MS3(A4);
tomo370 0:d94213e24c2e 32
tomo370 1:cf2f5992241c 33 //モーター2 CN2とCN3を使用
tomo370 0:d94213e24c2e 34 DigitalOut stepper2Enable(D3);
tomo370 0:d94213e24c2e 35 DigitalOut stepper2MS1(A5);
tomo370 0:d94213e24c2e 36 DigitalOut stepper2MS2(A6);
tomo370 0:d94213e24c2e 37 DigitalOut stepper2MS3(A7);
tomo370 0:d94213e24c2e 38
tomo370 1:cf2f5992241c 39 DigitalIn EndSW1(A0); //CN4 //3端子エンドスイッチ1 予備
tomo370 1:cf2f5992241c 40 DigitalIn EndSW2(A1); //CN5 //3端子エンドスイッチ2 予備
tomo370 1:cf2f5992241c 41 DigitalIn EndSW3(A2); //CN6 //2端子エンドスイッチ1 モーター1用にする
tomo370 1:cf2f5992241c 42 DigitalIn EndSW4(A3); //CN7 //2端子エンドスイッチ2 モーター2用にする
tomo370 1:cf2f5992241c 43
tomo370 1:cf2f5992241c 44 DigitalOut myLED(LED3); //動作確認用LED
tomo370 1:cf2f5992241c 45
tomo370 1:cf2f5992241c 46 unsigned long position1, position2; //モーター1の設定位置
tomo370 1:cf2f5992241c 47 unsigned long max1, max2;
tomo370 1:cf2f5992241c 48 unsigned long speed1, speed2;
tomo370 1:cf2f5992241c 49 unsigned long Acceleration1, Acceleration2;
tomo370 1:cf2f5992241c 50 unsigned long param1, param2;
tomo370 1:cf2f5992241c 51 unsigned long dmxInHighBit, dmxInLowBit;
tomo370 2:198becff12f4 52 unsigned long HighBit, LowBit;
tomo370 1:cf2f5992241c 53
tomo370 4:c3f3fdde7eee 54 bool manipulateMode1 = false; //0:手動 1:自動
tomo370 4:c3f3fdde7eee 55 bool manipulateMode2 = false; //0:手動 1:自動
tomo370 1:cf2f5992241c 56
tomo370 1:cf2f5992241c 57
tomo370 5:fd097a259856 58 //モーター1のパラメーター DMXチャンネルリスト チャンネル数:16個
tomo370 5:fd097a259856 59 #define CH_Origin BoardNumber * 32 - 32
tomo370 0:d94213e24c2e 60
tomo370 1:cf2f5992241c 61 #define DMX_Position1_H CH_Origin //モーター1制御用のDMX信号の始まりの値
tomo370 1:cf2f5992241c 62 #define DMX_Position1_L CH_Origin + 1
tomo370 1:cf2f5992241c 63 #define DMX_Speed1_H CH_Origin + 2
tomo370 1:cf2f5992241c 64 #define DMX_Speed1_L CH_Origin + 3
tomo370 1:cf2f5992241c 65 #define DMX_Acceleration1_H CH_Origin + 4
tomo370 1:cf2f5992241c 66 #define DMX_Acceleration1_L CH_Origin + 5
tomo370 1:cf2f5992241c 67 #define DMX_Max1_H CH_Origin + 6
tomo370 1:cf2f5992241c 68 #define DMX_Max1_L CH_Origin + 7
tomo370 1:cf2f5992241c 69 #define DMX_Offset1_H CH_Origin + 8
tomo370 1:cf2f5992241c 70 #define DMX_Offset1_L CH_Origin + 9
tomo370 1:cf2f5992241c 71 #define DMX_SaveValue1_H CH_Origin + 10
tomo370 1:cf2f5992241c 72 #define DMX_SaveValue1_L CH_Origin + 11
tomo370 1:cf2f5992241c 73 #define DMX_ParmSetMode1_H CH_Origin + 12
tomo370 1:cf2f5992241c 74 #define DMX_ParmSetMode1_L CH_Origin + 13
tomo370 5:fd097a259856 75 #define DMX_Initialize1_H CH_Origin + 14
tomo370 5:fd097a259856 76 #define DMX_Initialize1_L CH_Origin + 15
tomo370 0:d94213e24c2e 77
tomo370 5:fd097a259856 78 //モーター2のパラメーター DMXチャンネルリスト チャンネル数:16個
tomo370 1:cf2f5992241c 79 #define DMX_Position2_H CH_Origin + 16
tomo370 1:cf2f5992241c 80 #define DMX_Position2_L CH_Origin + 17
tomo370 1:cf2f5992241c 81 #define DMX_Speed2_H CH_Origin + 18
tomo370 1:cf2f5992241c 82 #define DMX_Speed2_L CH_Origin + 19
tomo370 1:cf2f5992241c 83 #define DMX_Acceleration2_H CH_Origin + 20
tomo370 1:cf2f5992241c 84 #define DMX_Acceleration2_L CH_Origin + 21
tomo370 1:cf2f5992241c 85 #define DMX_Max2_H CH_Origin + 22
tomo370 1:cf2f5992241c 86 #define DMX_Max2_L CH_Origin + 23
tomo370 1:cf2f5992241c 87 #define DMX_Offset2_H CH_Origin + 24
tomo370 1:cf2f5992241c 88 #define DMX_Offset2_L CH_Origin + 25
tomo370 1:cf2f5992241c 89 #define DMX_SaveValue2_H CH_Origin + 26
tomo370 1:cf2f5992241c 90 #define DMX_SaveValue2_L CH_Origin + 27
tomo370 1:cf2f5992241c 91 #define DMX_ParmSetMode2_H CH_Origin + 28
tomo370 1:cf2f5992241c 92 #define DMX_ParmSetMode2_L CH_Origin + 29
tomo370 5:fd097a259856 93 #define DMX_Initialize2_H CH_Origin + 30
tomo370 5:fd097a259856 94 #define DMX_Initialize2_L CH_Origin + 31
tomo370 1:cf2f5992241c 95
tomo370 4:c3f3fdde7eee 96 //モーターの回転方向 TMCは1 DRVは-1に設定すること
tomo370 4:c3f3fdde7eee 97 //未実装(実装予定)
tomo370 4:c3f3fdde7eee 98
tomo370 4:c3f3fdde7eee 99 //ステップ数の調整用の係数
tomo370 4:c3f3fdde7eee 100 float StepAdj1 = 1;
tomo370 4:c3f3fdde7eee 101 float StepAdj2 = 1;
tomo370 4:c3f3fdde7eee 102
tomo370 4:c3f3fdde7eee 103
tomo370 5:fd097a259856 104 //未実装
tomo370 7:813cdaad1200 105 void sendDataToLPC()
tomo370 4:c3f3fdde7eee 106 {
tomo370 7:813cdaad1200 107 char cmd[2];
tomo370 7:813cdaad1200 108 cmd[0] = 0x51;
tomo370 7:813cdaad1200 109 cmd[1] = 0x51;
tomo370 7:813cdaad1200 110 i2c.write(addr, cmd, 2);
tomo370 7:813cdaad1200 111
tomo370 7:813cdaad1200 112 //stepper1.newSpeed();
tomo370 4:c3f3fdde7eee 113 }
tomo370 4:c3f3fdde7eee 114
tomo370 1:cf2f5992241c 115 //map
tomo370 0:d94213e24c2e 116 long map(long x, long in_min, long in_max, long out_min, long out_max)
tomo370 0:d94213e24c2e 117 {
tomo370 0:d94213e24c2e 118 return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
tomo370 0:d94213e24c2e 119 }
tomo370 0:d94213e24c2e 120
tomo370 1:cf2f5992241c 121 void blink()
tomo370 1:cf2f5992241c 122 {
tomo370 1:cf2f5992241c 123 for(int i=0; i<5; i++) {
tomo370 1:cf2f5992241c 124 myLED=0;
tomo370 1:cf2f5992241c 125 wait_ms(60);
tomo370 1:cf2f5992241c 126 myLED=1;
tomo370 1:cf2f5992241c 127 wait_ms(60);
tomo370 1:cf2f5992241c 128 }
tomo370 1:cf2f5992241c 129 }
tomo370 1:cf2f5992241c 130
tomo370 0:d94213e24c2e 131 void checkSW()
tomo370 0:d94213e24c2e 132 {
tomo370 1:cf2f5992241c 133 //モーター1用エンドスイッチのチェック
tomo370 8:2e68b9de685d 134 if(EndSW3.read() == 1) {
tomo370 0:d94213e24c2e 135 stepper1.stop();
tomo370 0:d94213e24c2e 136 stepper1.setCurrentPosition(0);
tomo370 0:d94213e24c2e 137 }
tomo370 1:cf2f5992241c 138
tomo370 1:cf2f5992241c 139 //モーター2用エンドスイッチのチェック
tomo370 8:2e68b9de685d 140 if(EndSW4.read() == 1) {
tomo370 1:cf2f5992241c 141 stepper2.stop();
tomo370 1:cf2f5992241c 142 stepper2.setCurrentPosition(0);
tomo370 1:cf2f5992241c 143 }
tomo370 0:d94213e24c2e 144 }
tomo370 0:d94213e24c2e 145
tomo370 4:c3f3fdde7eee 146
tomo370 4:c3f3fdde7eee 147 //モーター1のみの往復テスト
tomo370 4:c3f3fdde7eee 148 void testMove1()
tomo370 0:d94213e24c2e 149 {
tomo370 4:c3f3fdde7eee 150 //initなしの場合
tomo370 4:c3f3fdde7eee 151 stepper1.setCurrentPosition(0);
tomo370 4:c3f3fdde7eee 152 stepper1.setMaxSpeed(4000 / StepAdj1);
tomo370 4:c3f3fdde7eee 153 stepper1.setAcceleration(20000 / StepAdj1);
tomo370 0:d94213e24c2e 154
tomo370 4:c3f3fdde7eee 155 stepper1.setMaxSpeed(180000);
tomo370 4:c3f3fdde7eee 156 while(1) {
tomo370 8:2e68b9de685d 157 stepper1.moveTo(6200);
tomo370 4:c3f3fdde7eee 158 //stepper1.moveTo(800 / StepAdj1);
tomo370 4:c3f3fdde7eee 159 while(stepper1.distanceToGo() != 0) {
tomo370 4:c3f3fdde7eee 160 stepper1.run();
tomo370 4:c3f3fdde7eee 161 }
tomo370 4:c3f3fdde7eee 162 wait(0.5);
tomo370 4:c3f3fdde7eee 163 //stepper1.moveTo(0 / StepAdj1);
tomo370 8:2e68b9de685d 164 stepper1.moveTo(200);
tomo370 4:c3f3fdde7eee 165 while(stepper1.distanceToGo() != 0) {
tomo370 4:c3f3fdde7eee 166 stepper1.run();
tomo370 4:c3f3fdde7eee 167 }
tomo370 4:c3f3fdde7eee 168 wait(0.5);
tomo370 4:c3f3fdde7eee 169 }
tomo370 0:d94213e24c2e 170 }
tomo370 0:d94213e24c2e 171
tomo370 3:dd2305e50390 172
tomo370 5:fd097a259856 173 //モーター2個同時の往復テスト
tomo370 4:c3f3fdde7eee 174 void testMove2()
tomo370 4:c3f3fdde7eee 175 {
tomo370 4:c3f3fdde7eee 176 stepper1.setMaxSpeed(10000 / StepAdj1);
tomo370 4:c3f3fdde7eee 177 stepper2.setMaxSpeed(10000 / StepAdj2);
tomo370 4:c3f3fdde7eee 178
tomo370 8:2e68b9de685d 179 //stepper1.setMaxSpeed(180000);
tomo370 4:c3f3fdde7eee 180
tomo370 4:c3f3fdde7eee 181 while(1) {
tomo370 4:c3f3fdde7eee 182 stepper1.moveTo(20000 / StepAdj1);
tomo370 4:c3f3fdde7eee 183 stepper2.moveTo(20000 / StepAdj2);
tomo370 4:c3f3fdde7eee 184 while(stepper1.distanceToGo() != 0) {
tomo370 4:c3f3fdde7eee 185 stepper1.run();
tomo370 5:fd097a259856 186 stepper2.run();
tomo370 4:c3f3fdde7eee 187 }
tomo370 5:fd097a259856 188 while(stepper2.distanceToGo() != 0) {
tomo370 5:fd097a259856 189 stepper1.run();
tomo370 5:fd097a259856 190 stepper2.run();
tomo370 5:fd097a259856 191 }
tomo370 4:c3f3fdde7eee 192
tomo370 4:c3f3fdde7eee 193 stepper1.moveTo(500 / StepAdj1);
tomo370 5:fd097a259856 194 stepper2.moveTo(500 / StepAdj2);
tomo370 4:c3f3fdde7eee 195 while(stepper1.distanceToGo() != 0) {
tomo370 4:c3f3fdde7eee 196 stepper1.run();
tomo370 5:fd097a259856 197 stepper2.run();
tomo370 4:c3f3fdde7eee 198 }
tomo370 4:c3f3fdde7eee 199 while(stepper2.distanceToGo() != 0) {
tomo370 5:fd097a259856 200 stepper2.run();
tomo370 4:c3f3fdde7eee 201 stepper1.run();
tomo370 4:c3f3fdde7eee 202 }
tomo370 4:c3f3fdde7eee 203 }
tomo370 4:c3f3fdde7eee 204 }
tomo370 4:c3f3fdde7eee 205
tomo370 6:2a9e0228f81d 206
tomo370 5:fd097a259856 207 void interuptInit1()
tomo370 5:fd097a259856 208 {
tomo370 7:813cdaad1200 209 //stepper1.setMaxSpeed(1000);
tomo370 7:813cdaad1200 210 //stepper1.setAcceleration(5000);
tomo370 7:813cdaad1200 211
tomo370 5:fd097a259856 212
tomo370 7:813cdaad1200 213 //まずとにかく原点を目指す
tomo370 7:813cdaad1200 214 stepper1.moveTo(1);
tomo370 6:2a9e0228f81d 215 while(stepper1.distanceToGo() != 0) {
tomo370 6:2a9e0228f81d 216 stepper1.run();
tomo370 6:2a9e0228f81d 217 }
tomo370 6:2a9e0228f81d 218
tomo370 7:813cdaad1200 219 //15度程度の時計回り動作
tomo370 7:813cdaad1200 220 stepper1.moveTo(200);
tomo370 7:813cdaad1200 221 while(stepper1.distanceToGo() != 0) {
tomo370 7:813cdaad1200 222 stepper1.run();
tomo370 7:813cdaad1200 223 }
tomo370 7:813cdaad1200 224
tomo370 7:813cdaad1200 225 //原点復帰動作、反時計回り
tomo370 6:2a9e0228f81d 226 stepper1.setCurrentPosition(-1);
tomo370 5:fd097a259856 227 stepper1.moveTo(-30000 / StepAdj1);
tomo370 5:fd097a259856 228 while(stepper1.currentPosition() != 0) {
tomo370 5:fd097a259856 229 stepper1.run();
tomo370 5:fd097a259856 230 checkSW();
tomo370 5:fd097a259856 231 }
tomo370 5:fd097a259856 232 //初期位置へ移動
tomo370 5:fd097a259856 233 //something
tomo370 5:fd097a259856 234 }
tomo370 5:fd097a259856 235
tomo370 5:fd097a259856 236 void interuptInit2()
tomo370 5:fd097a259856 237 {
tomo370 5:fd097a259856 238 stepper2.setMaxSpeed(4000 / StepAdj2);
tomo370 5:fd097a259856 239 stepper2.setAcceleration(20000 / StepAdj2);
tomo370 5:fd097a259856 240
tomo370 7:813cdaad1200 241 //まず原点を目指す
tomo370 7:813cdaad1200 242
tomo370 7:813cdaad1200 243
tomo370 6:2a9e0228f81d 244 //15度程度の後退動作
tomo370 7:813cdaad1200 245 stepper2.setCurrentPosition(1);
tomo370 6:2a9e0228f81d 246 stepper2.moveTo(100);
tomo370 6:2a9e0228f81d 247 while(stepper2.distanceToGo() != 0) {
tomo370 6:2a9e0228f81d 248 stepper2.run();
tomo370 6:2a9e0228f81d 249 }
tomo370 6:2a9e0228f81d 250
tomo370 5:fd097a259856 251 //原点復帰動作
tomo370 6:2a9e0228f81d 252 stepper2.setCurrentPosition(-1);
tomo370 5:fd097a259856 253 stepper2.moveTo(-30000 / StepAdj2);
tomo370 5:fd097a259856 254 while(stepper2.currentPosition() != 0) {
tomo370 5:fd097a259856 255 stepper2.run();
tomo370 5:fd097a259856 256 checkSW();
tomo370 5:fd097a259856 257 }
tomo370 5:fd097a259856 258 //初期位置へ移動
tomo370 5:fd097a259856 259 //something
tomo370 5:fd097a259856 260 }
tomo370 5:fd097a259856 261
tomo370 5:fd097a259856 262
tomo370 3:dd2305e50390 263 void init1()
tomo370 0:d94213e24c2e 264 {
tomo370 4:c3f3fdde7eee 265 stepper1.setMaxSpeed(4000 / StepAdj1);
tomo370 4:c3f3fdde7eee 266 stepper1.setAcceleration(20000 / StepAdj1);
tomo370 6:2a9e0228f81d 267
tomo370 6:2a9e0228f81d 268 //30度程度の後退動作
tomo370 6:2a9e0228f81d 269 stepper1.moveTo(200);
tomo370 6:2a9e0228f81d 270 while(stepper1.distanceToGo() != 0) {
tomo370 6:2a9e0228f81d 271 stepper1.run();
tomo370 6:2a9e0228f81d 272 }
tomo370 6:2a9e0228f81d 273 stepper1.setCurrentPosition(-1);
tomo370 6:2a9e0228f81d 274
tomo370 6:2a9e0228f81d 275 //反時計回りに回転、エンドスイッチで停止
tomo370 4:c3f3fdde7eee 276 stepper1.moveTo(-30000 / StepAdj1);
tomo370 0:d94213e24c2e 277 while(stepper1.currentPosition() != 0) {
tomo370 0:d94213e24c2e 278 stepper1.run();
tomo370 0:d94213e24c2e 279 checkSW();
tomo370 0:d94213e24c2e 280 }
tomo370 5:fd097a259856 281 // stepper1.moveTo(500 / StepAdj1);
tomo370 5:fd097a259856 282 // while(stepper1.distanceToGo() != 0) stepper1.run();
tomo370 3:dd2305e50390 283 }
tomo370 3:dd2305e50390 284
tomo370 3:dd2305e50390 285 void init2()
tomo370 3:dd2305e50390 286 {
tomo370 6:2a9e0228f81d 287
tomo370 4:c3f3fdde7eee 288 stepper2.setMaxSpeed(4000 / StepAdj2);
tomo370 4:c3f3fdde7eee 289 stepper2.setAcceleration(20000 / StepAdj2);
tomo370 6:2a9e0228f81d 290
tomo370 6:2a9e0228f81d 291 //30度程度時計回りに回転動作
tomo370 6:2a9e0228f81d 292 stepper2.moveTo(200);
tomo370 6:2a9e0228f81d 293 while(stepper2.distanceToGo() != 0) {
tomo370 6:2a9e0228f81d 294 stepper2.run();
tomo370 6:2a9e0228f81d 295 }
tomo370 6:2a9e0228f81d 296
tomo370 6:2a9e0228f81d 297 stepper2.setCurrentPosition(-1);
tomo370 6:2a9e0228f81d 298
tomo370 6:2a9e0228f81d 299 //反時計回りに回転、エンドスイッチで停止
tomo370 4:c3f3fdde7eee 300 stepper2.moveTo(-30000 / StepAdj2);
tomo370 1:cf2f5992241c 301 while(stepper2.currentPosition() != 0) {
tomo370 1:cf2f5992241c 302 stepper2.run();
tomo370 1:cf2f5992241c 303 checkSW();
tomo370 1:cf2f5992241c 304 }
tomo370 4:c3f3fdde7eee 305 }
tomo370 4:c3f3fdde7eee 306
tomo370 4:c3f3fdde7eee 307 void initBoth()
tomo370 4:c3f3fdde7eee 308 {
tomo370 4:c3f3fdde7eee 309 stepper1.setCurrentPosition(-1);
tomo370 4:c3f3fdde7eee 310 stepper1.setMaxSpeed(4000 / StepAdj1);
tomo370 4:c3f3fdde7eee 311 stepper1.setAcceleration(20000 / StepAdj1);
tomo370 4:c3f3fdde7eee 312 stepper1.moveTo(-30000 / StepAdj1);
tomo370 4:c3f3fdde7eee 313
tomo370 4:c3f3fdde7eee 314 stepper2.setCurrentPosition(-1);
tomo370 4:c3f3fdde7eee 315 stepper2.setMaxSpeed(4000 / StepAdj2);
tomo370 4:c3f3fdde7eee 316 stepper2.setAcceleration(20000 / StepAdj2);
tomo370 4:c3f3fdde7eee 317 stepper2.moveTo(-30000 / StepAdj2);
tomo370 4:c3f3fdde7eee 318
tomo370 4:c3f3fdde7eee 319 while((stepper1.distanceToGo() != 0)||(stepper2.distanceToGo() != 0)) {
tomo370 4:c3f3fdde7eee 320 if (stepper1.distanceToGo() != 0) stepper1.run();
tomo370 4:c3f3fdde7eee 321 if (stepper2.distanceToGo() != 0) stepper2.run();
tomo370 4:c3f3fdde7eee 322 checkSW();
tomo370 4:c3f3fdde7eee 323 }
tomo370 4:c3f3fdde7eee 324 stepper1.moveTo(500 / StepAdj1);
tomo370 4:c3f3fdde7eee 325 stepper2.moveTo(500 / StepAdj2);
tomo370 4:c3f3fdde7eee 326 while((stepper1.distanceToGo() != 0)||(stepper2.distanceToGo() != 0)) {
tomo370 4:c3f3fdde7eee 327 if (stepper1.distanceToGo() != 0) stepper1.run();
tomo370 4:c3f3fdde7eee 328 if (stepper2.distanceToGo() != 0) stepper2.run();
tomo370 1:cf2f5992241c 329 }
tomo370 8:2e68b9de685d 330 stepper1.setCurrentPosition(-1);
tomo370 8:2e68b9de685d 331 stepper2.setCurrentPosition(-1);
tomo370 8:2e68b9de685d 332
tomo370 1:cf2f5992241c 333 }
tomo370 1:cf2f5992241c 334
tomo370 3:dd2305e50390 335
tomo370 1:cf2f5992241c 336 void checkSafeBreak()
tomo370 1:cf2f5992241c 337 {
tomo370 5:fd097a259856 338 //モーター1用エンドスイッチのチェック
tomo370 8:2e68b9de685d 339 if(EndSW3.read() == 1) {
tomo370 1:cf2f5992241c 340 stepper1.stop();
tomo370 1:cf2f5992241c 341 while(1) {
tomo370 1:cf2f5992241c 342 blink();
tomo370 1:cf2f5992241c 343 }
tomo370 1:cf2f5992241c 344 }
tomo370 1:cf2f5992241c 345
tomo370 1:cf2f5992241c 346 //モーター2用エンドスイッチのチェック
tomo370 8:2e68b9de685d 347 if(EndSW4.read() == 1) {
tomo370 1:cf2f5992241c 348 stepper2.stop();
tomo370 1:cf2f5992241c 349 while(1) {
tomo370 1:cf2f5992241c 350 blink();
tomo370 1:cf2f5992241c 351 }
tomo370 1:cf2f5992241c 352 }
tomo370 1:cf2f5992241c 353 }
tomo370 1:cf2f5992241c 354
tomo370 5:fd097a259856 355
tomo370 1:cf2f5992241c 356 //モーター1のパラメータ保存
tomo370 1:cf2f5992241c 357 void paramStore1()
tomo370 1:cf2f5992241c 358 {
tomo370 1:cf2f5992241c 359 //速度
tomo370 2:198becff12f4 360 uint8_t dt = dmx.get(DMX_Speed1_H);
tomo370 2:198becff12f4 361 at24c1024.write(DMX_Speed1_H, dt);
tomo370 2:198becff12f4 362 wait_ms(2);
tomo370 2:198becff12f4 363 dt = dmx.get(DMX_Speed1_L);
tomo370 2:198becff12f4 364 at24c1024.write(DMX_Speed1_L, dt);
tomo370 1:cf2f5992241c 365 wait_ms(2);
tomo370 1:cf2f5992241c 366
tomo370 1:cf2f5992241c 367 //加速度
tomo370 1:cf2f5992241c 368 dt = dmx.get(DMX_Acceleration1_H);
tomo370 1:cf2f5992241c 369 at24c1024.write(DMX_Acceleration1_H, dt);
tomo370 2:198becff12f4 370 wait_ms(2);
tomo370 1:cf2f5992241c 371 dt = dmx.get(DMX_Acceleration1_L);
tomo370 1:cf2f5992241c 372 at24c1024.write(DMX_Acceleration1_L, dt);
tomo370 2:198becff12f4 373 wait_ms(2);
tomo370 1:cf2f5992241c 374
tomo370 1:cf2f5992241c 375 //最大値
tomo370 1:cf2f5992241c 376 dt = dmx.get(DMX_Max1_H);
tomo370 1:cf2f5992241c 377 at24c1024.write(DMX_Max1_H, dt);
tomo370 2:198becff12f4 378 wait_ms(2);
tomo370 1:cf2f5992241c 379 dt = dmx.get(DMX_Max1_L);
tomo370 1:cf2f5992241c 380 at24c1024.write(DMX_Max1_L, dt);
tomo370 1:cf2f5992241c 381
tomo370 1:cf2f5992241c 382 wait_ms(5);
tomo370 1:cf2f5992241c 383 }
tomo370 1:cf2f5992241c 384
tomo370 2:198becff12f4 385 //モーター2のパラメータ保存
tomo370 2:198becff12f4 386 void paramStore2()
tomo370 2:198becff12f4 387 {
tomo370 2:198becff12f4 388 //速度
tomo370 2:198becff12f4 389 uint8_t dt = dmx.get(DMX_Speed2_H);
tomo370 2:198becff12f4 390 at24c1024.write(DMX_Speed2_H, dt);
tomo370 2:198becff12f4 391 wait_ms(2);
tomo370 2:198becff12f4 392 dt = dmx.get(DMX_Speed2_L);
tomo370 2:198becff12f4 393 at24c1024.write(DMX_Speed2_L, dt);
tomo370 2:198becff12f4 394 wait_ms(2);
tomo370 2:198becff12f4 395
tomo370 2:198becff12f4 396 //加速度
tomo370 2:198becff12f4 397 dt = dmx.get(DMX_Acceleration2_H);
tomo370 2:198becff12f4 398 at24c1024.write(DMX_Acceleration2_H, dt);
tomo370 2:198becff12f4 399 wait_ms(2);
tomo370 2:198becff12f4 400 dt = dmx.get(DMX_Acceleration2_L);
tomo370 2:198becff12f4 401 at24c1024.write(DMX_Acceleration2_L, dt);
tomo370 2:198becff12f4 402 wait_ms(2);
tomo370 2:198becff12f4 403
tomo370 2:198becff12f4 404 //最大値
tomo370 2:198becff12f4 405 dt = dmx.get(DMX_Max2_H);
tomo370 2:198becff12f4 406 at24c1024.write(DMX_Max2_H, dt);
tomo370 2:198becff12f4 407 wait_ms(2);
tomo370 2:198becff12f4 408 dt = dmx.get(DMX_Max2_L);
tomo370 2:198becff12f4 409 at24c1024.write(DMX_Max2_L, dt);
tomo370 2:198becff12f4 410
tomo370 2:198becff12f4 411 wait_ms(2);
tomo370 2:198becff12f4 412 }
tomo370 2:198becff12f4 413
tomo370 2:198becff12f4 414
tomo370 1:cf2f5992241c 415 //速度・加速度・最大値・オフセットの値をスライダーから取得
tomo370 1:cf2f5992241c 416 void captureSliderValue()
tomo370 1:cf2f5992241c 417 {
tomo370 1:cf2f5992241c 418 dmxInHighBit = dmx.get(DMX_Speed1_H);
tomo370 1:cf2f5992241c 419 dmxInLowBit = dmx.get(DMX_Speed1_L);
tomo370 1:cf2f5992241c 420 dmxInHighBit = dmxInHighBit << 8;
tomo370 1:cf2f5992241c 421 speed1 = (long)(dmxInHighBit + dmxInLowBit);
tomo370 1:cf2f5992241c 422
tomo370 8:2e68b9de685d 423 //(動作)
tomo370 8:2e68b9de685d 424 dmxInHighBit = dmx.get(DMX_Speed2_H);
tomo370 8:2e68b9de685d 425 dmxInLowBit = dmx.get(DMX_Speed2_L);
tomo370 8:2e68b9de685d 426 dmxInHighBit = dmxInHighBit << 8;
tomo370 8:2e68b9de685d 427 speed2 = (long)(dmxInHighBit + dmxInLowBit);
tomo370 1:cf2f5992241c 428
tomo370 1:cf2f5992241c 429 dmxInHighBit = dmx.get(DMX_Acceleration1_H);
tomo370 1:cf2f5992241c 430 dmxInLowBit = dmx.get(DMX_Acceleration1_L);
tomo370 1:cf2f5992241c 431 dmxInHighBit = dmxInHighBit << 8;
tomo370 1:cf2f5992241c 432 Acceleration1 = (long)(dmxInHighBit + dmxInLowBit);
tomo370 1:cf2f5992241c 433
tomo370 8:2e68b9de685d 434 //(動作)
tomo370 8:2e68b9de685d 435 dmxInHighBit = dmx.get(DMX_Acceleration2_H);
tomo370 8:2e68b9de685d 436 dmxInLowBit = dmx.get(DMX_Acceleration2_L);
tomo370 8:2e68b9de685d 437 dmxInHighBit = dmxInHighBit << 8;
tomo370 8:2e68b9de685d 438 Acceleration2 = (long)(dmxInHighBit + dmxInLowBit);
tomo370 1:cf2f5992241c 439
tomo370 1:cf2f5992241c 440 dmxInHighBit = dmx.get(DMX_Max1_H);
tomo370 1:cf2f5992241c 441 dmxInLowBit = dmx.get(DMX_Max1_L);
tomo370 1:cf2f5992241c 442 dmxInHighBit = dmxInHighBit << 8;
tomo370 1:cf2f5992241c 443 max1 = (long)(dmxInHighBit + dmxInLowBit);
tomo370 1:cf2f5992241c 444
tomo370 8:2e68b9de685d 445 //(動作)
tomo370 8:2e68b9de685d 446 dmxInHighBit = dmx.get(DMX_Max2_H);
tomo370 8:2e68b9de685d 447 dmxInLowBit = dmx.get(DMX_Max2_L);
tomo370 8:2e68b9de685d 448 dmxInHighBit = dmxInHighBit << 8;
tomo370 8:2e68b9de685d 449 max2 = (long)(dmxInHighBit + dmxInLowBit);
tomo370 1:cf2f5992241c 450 }
tomo370 0:d94213e24c2e 451
tomo370 0:d94213e24c2e 452
tomo370 1:cf2f5992241c 453 //モーター1の 速度・加速度・オフセットの値をEEPROMから取得
tomo370 1:cf2f5992241c 454 void readROMValue1()
tomo370 1:cf2f5992241c 455 {
tomo370 1:cf2f5992241c 456 //速度
tomo370 2:198becff12f4 457 HighBit = at24c1024.read(DMX_Speed1_H);
tomo370 2:198becff12f4 458 LowBit = at24c1024.read(DMX_Speed1_L);
tomo370 1:cf2f5992241c 459 HighBit = HighBit << 8;
tomo370 2:198becff12f4 460 speed1 = (long)(HighBit + LowBit);
tomo370 1:cf2f5992241c 461
tomo370 1:cf2f5992241c 462 //加速度
tomo370 1:cf2f5992241c 463 HighBit = at24c1024.read(DMX_Acceleration1_H);
tomo370 1:cf2f5992241c 464 LowBit = at24c1024.read(DMX_Acceleration1_L);
tomo370 1:cf2f5992241c 465 HighBit = HighBit << 8;
tomo370 2:198becff12f4 466 Acceleration1 = (long)(HighBit + LowBit);
tomo370 1:cf2f5992241c 467
tomo370 1:cf2f5992241c 468 //最大値
tomo370 1:cf2f5992241c 469 HighBit = at24c1024.read(DMX_Max1_H);
tomo370 1:cf2f5992241c 470 LowBit = at24c1024.read(DMX_Max1_L);
tomo370 1:cf2f5992241c 471 HighBit = HighBit << 8;
tomo370 2:198becff12f4 472 max1 = (long)(HighBit + LowBit);
tomo370 1:cf2f5992241c 473 }
tomo370 1:cf2f5992241c 474
tomo370 1:cf2f5992241c 475
tomo370 1:cf2f5992241c 476 //モーター2の 速度・加速度・オフセットの値をEEPROMから取得
tomo370 1:cf2f5992241c 477 void readROMValue2()
tomo370 1:cf2f5992241c 478 {
tomo370 2:198becff12f4 479 //速度
tomo370 2:198becff12f4 480 HighBit = at24c1024.read(DMX_Speed2_H);
tomo370 2:198becff12f4 481 LowBit = at24c1024.read(DMX_Speed2_L);
tomo370 2:198becff12f4 482 HighBit = HighBit << 8;
tomo370 2:198becff12f4 483 speed2 = (long)(HighBit + LowBit);
tomo370 2:198becff12f4 484
tomo370 2:198becff12f4 485 //加速度
tomo370 2:198becff12f4 486 HighBit = at24c1024.read(DMX_Acceleration2_H);
tomo370 2:198becff12f4 487 LowBit = at24c1024.read(DMX_Acceleration2_L);
tomo370 2:198becff12f4 488 HighBit = HighBit << 8;
tomo370 2:198becff12f4 489 Acceleration2 = (long)(HighBit + LowBit);
tomo370 2:198becff12f4 490
tomo370 2:198becff12f4 491 //最大値
tomo370 2:198becff12f4 492 HighBit = at24c1024.read(DMX_Max2_H);
tomo370 2:198becff12f4 493 LowBit = at24c1024.read(DMX_Max2_L);
tomo370 2:198becff12f4 494 HighBit = HighBit << 8;
tomo370 2:198becff12f4 495 max2 = (long)(HighBit + LowBit);
tomo370 0:d94213e24c2e 496 }
tomo370 0:d94213e24c2e 497
tomo370 0:d94213e24c2e 498
tomo370 1:cf2f5992241c 499 //操作モード切り替えボタンのチェック
tomo370 1:cf2f5992241c 500 void checkManipulateButton()
tomo370 1:cf2f5992241c 501 {
tomo370 1:cf2f5992241c 502 dmxInHighBit = dmx.get(DMX_ParmSetMode1_H);
tomo370 1:cf2f5992241c 503 dmxInLowBit = dmx.get(DMX_ParmSetMode1_L);
tomo370 1:cf2f5992241c 504 if(dmxInHighBit == 102 && dmxInLowBit == 255) {
tomo370 1:cf2f5992241c 505 manipulateMode1 = !manipulateMode1;
tomo370 1:cf2f5992241c 506 blink();
tomo370 1:cf2f5992241c 507 }
tomo370 1:cf2f5992241c 508
tomo370 1:cf2f5992241c 509 dmxInHighBit = dmx.get(DMX_ParmSetMode2_H);
tomo370 1:cf2f5992241c 510 dmxInLowBit = dmx.get(DMX_ParmSetMode2_L);
tomo370 1:cf2f5992241c 511 if(dmxInHighBit == 102 && dmxInLowBit == 255) {
tomo370 1:cf2f5992241c 512 manipulateMode2 = !manipulateMode2;
tomo370 1:cf2f5992241c 513 blink();
tomo370 1:cf2f5992241c 514 }
tomo370 1:cf2f5992241c 515 }
tomo370 1:cf2f5992241c 516
tomo370 1:cf2f5992241c 517 //書き込みボタンのチェック
tomo370 1:cf2f5992241c 518 void checkWriteButton()
tomo370 1:cf2f5992241c 519 {
tomo370 1:cf2f5992241c 520 dmxInHighBit = dmx.get(DMX_SaveValue1_H);
tomo370 1:cf2f5992241c 521 dmxInLowBit = dmx.get(DMX_SaveValue1_L);
tomo370 1:cf2f5992241c 522 dmxInHighBit = dmxInHighBit << 8;
tomo370 1:cf2f5992241c 523 param1 = (long)(dmxInHighBit + dmxInLowBit);
tomo370 1:cf2f5992241c 524
tomo370 1:cf2f5992241c 525 dmxInHighBit = dmx.get(DMX_SaveValue2_H);
tomo370 1:cf2f5992241c 526 dmxInLowBit = dmx.get(DMX_SaveValue2_L);
tomo370 1:cf2f5992241c 527 dmxInHighBit = dmxInHighBit << 8;
tomo370 1:cf2f5992241c 528 param2 = (long)(dmxInHighBit + dmxInLowBit);
tomo370 1:cf2f5992241c 529
tomo370 1:cf2f5992241c 530 if(param1 == 24932) {
tomo370 1:cf2f5992241c 531 paramStore1();
tomo370 1:cf2f5992241c 532 blink();
tomo370 1:cf2f5992241c 533 } else;
tomo370 1:cf2f5992241c 534
tomo370 1:cf2f5992241c 535 if(param2 == 24932) {
tomo370 2:198becff12f4 536 paramStore2();
tomo370 2:198becff12f4 537 blink();
tomo370 1:cf2f5992241c 538 } else;
tomo370 1:cf2f5992241c 539 }
tomo370 1:cf2f5992241c 540
tomo370 5:fd097a259856 541 //原点復帰命令のチェック
tomo370 5:fd097a259856 542 void checkInitCommand1()
tomo370 5:fd097a259856 543 {
tomo370 5:fd097a259856 544 dmxInHighBit = dmx.get(DMX_Initialize1_H);
tomo370 5:fd097a259856 545 dmxInLowBit = dmx.get(DMX_Initialize1_L);
tomo370 5:fd097a259856 546
tomo370 5:fd097a259856 547 if(dmxInHighBit == 75 && dmxInLowBit == 255) {
tomo370 5:fd097a259856 548 interuptInit1();
tomo370 5:fd097a259856 549 }
tomo370 5:fd097a259856 550 }
tomo370 5:fd097a259856 551
tomo370 5:fd097a259856 552 void checkInitCommand2()
tomo370 5:fd097a259856 553 {
tomo370 5:fd097a259856 554 dmxInHighBit = dmx.get(DMX_Initialize2_H);
tomo370 5:fd097a259856 555 dmxInLowBit = dmx.get(DMX_Initialize2_L);
tomo370 5:fd097a259856 556
tomo370 5:fd097a259856 557 if(dmxInHighBit == 75 && dmxInLowBit == 255) {
tomo370 5:fd097a259856 558 interuptInit2();
tomo370 5:fd097a259856 559 }
tomo370 5:fd097a259856 560 }
tomo370 5:fd097a259856 561
tomo370 5:fd097a259856 562
tomo370 4:c3f3fdde7eee 563 //モータードライバの設定
tomo370 4:c3f3fdde7eee 564 void conf1()
tomo370 4:c3f3fdde7eee 565 {
tomo370 4:c3f3fdde7eee 566 switch (StepSize1) {
tomo370 4:c3f3fdde7eee 567 case 1: //DRV8825 full steps
tomo370 4:c3f3fdde7eee 568 stepper1MS1 = 0;
tomo370 4:c3f3fdde7eee 569 stepper1MS2 = 0;
tomo370 4:c3f3fdde7eee 570 stepper1MS3 = 0;
tomo370 4:c3f3fdde7eee 571 StepAdj1 = 16;
tomo370 4:c3f3fdde7eee 572 break;
tomo370 4:c3f3fdde7eee 573
tomo370 4:c3f3fdde7eee 574 case 2: //DRV8825 1/2 steps
tomo370 4:c3f3fdde7eee 575 stepper1MS1 = 1;
tomo370 4:c3f3fdde7eee 576 stepper1MS2 = 0;
tomo370 4:c3f3fdde7eee 577 stepper1MS3 = 0;
tomo370 4:c3f3fdde7eee 578 StepAdj1 = 8;
tomo370 4:c3f3fdde7eee 579 break;
tomo370 4:c3f3fdde7eee 580
tomo370 4:c3f3fdde7eee 581 case 3: //DRV8825 1/4 steps
tomo370 4:c3f3fdde7eee 582 stepper1MS1 = 0;
tomo370 4:c3f3fdde7eee 583 stepper1MS2 = 1;
tomo370 4:c3f3fdde7eee 584 stepper1MS3 = 0;
tomo370 4:c3f3fdde7eee 585 StepAdj1 = 4;
tomo370 4:c3f3fdde7eee 586 break;
tomo370 4:c3f3fdde7eee 587
tomo370 4:c3f3fdde7eee 588 case 4: //DRV8825 1/8 steps
tomo370 4:c3f3fdde7eee 589 stepper1MS1 = 1;
tomo370 4:c3f3fdde7eee 590 stepper1MS2 = 1;
tomo370 4:c3f3fdde7eee 591 stepper1MS3 = 0;
tomo370 4:c3f3fdde7eee 592 StepAdj1 = 2;
tomo370 4:c3f3fdde7eee 593 break;
tomo370 4:c3f3fdde7eee 594
tomo370 4:c3f3fdde7eee 595 case 5: //DRV8825 1/16 steps
tomo370 4:c3f3fdde7eee 596 stepper1MS1 = 0;
tomo370 4:c3f3fdde7eee 597 stepper1MS2 = 0;
tomo370 4:c3f3fdde7eee 598 stepper1MS3 = 1;
tomo370 4:c3f3fdde7eee 599 StepAdj1 = 1;
tomo370 4:c3f3fdde7eee 600 break;
tomo370 4:c3f3fdde7eee 601
tomo370 4:c3f3fdde7eee 602 case 6: //DRV8825 1/32 steps
tomo370 4:c3f3fdde7eee 603 stepper1MS1 = 1;
tomo370 4:c3f3fdde7eee 604 stepper1MS2 = 1;
tomo370 4:c3f3fdde7eee 605 stepper1MS3 = 1;
tomo370 4:c3f3fdde7eee 606 StepAdj1 = 0.5;
tomo370 4:c3f3fdde7eee 607 break;
tomo370 4:c3f3fdde7eee 608
tomo370 4:c3f3fdde7eee 609 case 7: //TMC StealthChop µ16 steps
tomo370 8:2e68b9de685d 610 DigitalIn stepper1MS1(A5);
tomo370 8:2e68b9de685d 611 DigitalIn stepper1MS2(A6);
tomo370 4:c3f3fdde7eee 612 StepAdj1 = 1;
tomo370 4:c3f3fdde7eee 613 break;
tomo370 4:c3f3fdde7eee 614 }
tomo370 4:c3f3fdde7eee 615 stepper1Enable = 0;
tomo370 4:c3f3fdde7eee 616 }
tomo370 4:c3f3fdde7eee 617
tomo370 4:c3f3fdde7eee 618 void conf2()
tomo370 4:c3f3fdde7eee 619 {
tomo370 4:c3f3fdde7eee 620 switch (StepSize2) {
tomo370 4:c3f3fdde7eee 621 case 1: //DRV8825 full steps
tomo370 4:c3f3fdde7eee 622 stepper2MS1 = 0;
tomo370 4:c3f3fdde7eee 623 stepper2MS2 = 0;
tomo370 4:c3f3fdde7eee 624 stepper2MS3 = 0;
tomo370 4:c3f3fdde7eee 625 StepAdj2 = 16;
tomo370 4:c3f3fdde7eee 626 break;
tomo370 4:c3f3fdde7eee 627
tomo370 4:c3f3fdde7eee 628 case 2: //DRV8825 1/2 steps
tomo370 4:c3f3fdde7eee 629 stepper2MS1 = 1;
tomo370 4:c3f3fdde7eee 630 stepper2MS2 = 0;
tomo370 4:c3f3fdde7eee 631 stepper2MS3 = 0;
tomo370 4:c3f3fdde7eee 632 StepAdj2 = 8;
tomo370 4:c3f3fdde7eee 633 break;
tomo370 4:c3f3fdde7eee 634
tomo370 4:c3f3fdde7eee 635 case 3: //DRV8825 1/4 steps
tomo370 4:c3f3fdde7eee 636 stepper2MS1 = 0;
tomo370 4:c3f3fdde7eee 637 stepper2MS2 = 1;
tomo370 4:c3f3fdde7eee 638 stepper2MS3 = 0;
tomo370 4:c3f3fdde7eee 639 StepAdj2 = 4;
tomo370 4:c3f3fdde7eee 640 break;
tomo370 4:c3f3fdde7eee 641
tomo370 4:c3f3fdde7eee 642 case 4: //DRV8825 1/8 steps
tomo370 4:c3f3fdde7eee 643 stepper2MS1 = 1;
tomo370 4:c3f3fdde7eee 644 stepper2MS2 = 1;
tomo370 4:c3f3fdde7eee 645 stepper2MS3 = 0;
tomo370 4:c3f3fdde7eee 646 StepAdj2 = 2;
tomo370 4:c3f3fdde7eee 647 break;
tomo370 4:c3f3fdde7eee 648
tomo370 4:c3f3fdde7eee 649 case 5: //DRV8825 1/16 steps
tomo370 4:c3f3fdde7eee 650 stepper2MS1 = 0;
tomo370 4:c3f3fdde7eee 651 stepper2MS2 = 0;
tomo370 4:c3f3fdde7eee 652 stepper2MS3 = 1;
tomo370 4:c3f3fdde7eee 653 StepAdj2 = 1;
tomo370 4:c3f3fdde7eee 654 break;
tomo370 4:c3f3fdde7eee 655
tomo370 4:c3f3fdde7eee 656 case 6: //DRV8825 1/32 steps
tomo370 4:c3f3fdde7eee 657 stepper2MS1 = 1;
tomo370 4:c3f3fdde7eee 658 stepper2MS2 = 1;
tomo370 4:c3f3fdde7eee 659 stepper2MS3 = 1;
tomo370 4:c3f3fdde7eee 660 StepAdj2 = 0.5;
tomo370 4:c3f3fdde7eee 661 break;
tomo370 4:c3f3fdde7eee 662
tomo370 4:c3f3fdde7eee 663 case 7: //TMC StealthChop µ16 steps
tomo370 4:c3f3fdde7eee 664 DigitalIn stepper2MS1(D11);
tomo370 4:c3f3fdde7eee 665 DigitalIn stepper2MS2(D12);
tomo370 4:c3f3fdde7eee 666 StepAdj2 = 1;
tomo370 4:c3f3fdde7eee 667 break;
tomo370 4:c3f3fdde7eee 668 }
tomo370 4:c3f3fdde7eee 669 stepper2Enable = 0;
tomo370 4:c3f3fdde7eee 670 }
tomo370 4:c3f3fdde7eee 671
tomo370 1:cf2f5992241c 672
tomo370 0:d94213e24c2e 673 int main()
tomo370 0:d94213e24c2e 674 {
tomo370 5:fd097a259856 675 wait(1);
tomo370 4:c3f3fdde7eee 676
tomo370 7:813cdaad1200 677 //DMXの機能をレシーブに固定 (ハードウェア的に固定するため停止中)
tomo370 7:813cdaad1200 678 // dmxEnable = 0; //0:receiver 1:sender
tomo370 0:d94213e24c2e 679
tomo370 4:c3f3fdde7eee 680 conf1(); //motor1 config ドライバの設定
tomo370 4:c3f3fdde7eee 681 conf2(); //motor2 config
tomo370 1:cf2f5992241c 682
tomo370 0:d94213e24c2e 683 t.start();
tomo370 7:813cdaad1200 684 //to.attach(&sendDataToLPC, 1);
tomo370 0:d94213e24c2e 685
tomo370 0:d94213e24c2e 686 stepper1.setCurrentPosition(-1);
tomo370 1:cf2f5992241c 687 stepper2.setCurrentPosition(-1);
tomo370 0:d94213e24c2e 688
tomo370 4:c3f3fdde7eee 689 //モーターの初期化シーケンス
tomo370 8:2e68b9de685d 690 // init1();
tomo370 3:dd2305e50390 691 // init2();
tomo370 8:2e68b9de685d 692 initBoth();
tomo370 0:d94213e24c2e 693
tomo370 4:c3f3fdde7eee 694 //往復運動を繰り返すテストシーケンス(無限ループ)
tomo370 8:2e68b9de685d 695 // testMove2();
tomo370 1:cf2f5992241c 696
tomo370 1:cf2f5992241c 697 myLED =1;
tomo370 1:cf2f5992241c 698
tomo370 2:198becff12f4 699 readROMValue1();
tomo370 8:2e68b9de685d 700 readROMValue2();
tomo370 0:d94213e24c2e 701
tomo370 4:c3f3fdde7eee 702 stepper1.setMaxSpeed(10000 / StepAdj1);
tomo370 8:2e68b9de685d 703 stepper2.setMaxSpeed(10000 / StepAdj2);
tomo370 4:c3f3fdde7eee 704
tomo370 0:d94213e24c2e 705 while(1) {
tomo370 1:cf2f5992241c 706 //操作モード切り替えボタンのチェック
tomo370 1:cf2f5992241c 707 checkManipulateButton();
tomo370 1:cf2f5992241c 708
tomo370 1:cf2f5992241c 709 //書き込みボタンチェック
tomo370 1:cf2f5992241c 710 checkWriteButton();
tomo370 0:d94213e24c2e 711
tomo370 6:2a9e0228f81d 712 //モーター1の目標位置をDMXから取得
tomo370 1:cf2f5992241c 713 dmxInHighBit = dmx.get(DMX_Position1_H);
tomo370 1:cf2f5992241c 714 dmxInLowBit = dmx.get(DMX_Position1_L);
tomo370 1:cf2f5992241c 715 dmxInHighBit = dmxInHighBit << 8;
tomo370 1:cf2f5992241c 716 position1 = (long)(dmxInHighBit + dmxInLowBit);
tomo370 0:d94213e24c2e 717
tomo370 5:fd097a259856 718 //モーター2の目標位置をスライダーから取得(停止中)
tomo370 8:2e68b9de685d 719 dmxInHighBit = dmx.get(DMX_Position2_H);
tomo370 8:2e68b9de685d 720 dmxInLowBit = dmx.get(DMX_Position2_L);
tomo370 8:2e68b9de685d 721 dmxInHighBit = dmxInHighBit << 8;
tomo370 8:2e68b9de685d 722 position2 = (long)(dmxInHighBit + dmxInLowBit);
tomo370 0:d94213e24c2e 723
tomo370 1:cf2f5992241c 724 //手動モードの場合、現在のスライダーの値を取得、パラメーターを設定
tomo370 2:198becff12f4 725 if(manipulateMode1 == false) {
tomo370 1:cf2f5992241c 726 captureSliderValue();
tomo370 2:198becff12f4 727 myLED = 0;
tomo370 1:cf2f5992241c 728 }
tomo370 0:d94213e24c2e 729
tomo370 1:cf2f5992241c 730 //自動モードの場合、EEPROMから値を取得、パラメーターを設定
tomo370 1:cf2f5992241c 731 else {
tomo370 2:198becff12f4 732 myLED = 1;
tomo370 1:cf2f5992241c 733 }
tomo370 0:d94213e24c2e 734
tomo370 6:2a9e0228f81d 735 //手動モードの場合、現在のスライダーの値を取得、パラメーターを設定(停止中)
tomo370 6:2a9e0228f81d 736 // if(manipulateMode2 == false) {
tomo370 6:2a9e0228f81d 737 // captureSliderValue();
tomo370 6:2a9e0228f81d 738 // myLED = 0;
tomo370 6:2a9e0228f81d 739 // }
tomo370 2:198becff12f4 740
tomo370 6:2a9e0228f81d 741 //自動モードの場合、EEPROMから値を取得、パラメータを設定(停止中)
tomo370 6:2a9e0228f81d 742 // else {
tomo370 6:2a9e0228f81d 743 // myLED = 1;
tomo370 6:2a9e0228f81d 744 // }
tomo370 1:cf2f5992241c 745
tomo370 5:fd097a259856 746
tomo370 5:fd097a259856 747 //モーター1のパラメーター設定
tomo370 1:cf2f5992241c 748 position1 = map(position1, 0, 0xFFFF, 0, max1);
tomo370 1:cf2f5992241c 749 stepper1.setMaxSpeed(speed1);
tomo370 1:cf2f5992241c 750 stepper1.setAcceleration(Acceleration1);
tomo370 1:cf2f5992241c 751
tomo370 5:fd097a259856 752
tomo370 5:fd097a259856 753 //モーター2のパラメーター設定(停止中)
tomo370 8:2e68b9de685d 754 position2 = map(position2, 0, 0xFFFF, 0, max2);
tomo370 8:2e68b9de685d 755 stepper2.setMaxSpeed(speed2);
tomo370 8:2e68b9de685d 756 stepper2.setAcceleration(Acceleration2);
tomo370 1:cf2f5992241c 757
tomo370 5:fd097a259856 758
tomo370 5:fd097a259856 759 //モーター1の目標位置設定
tomo370 1:cf2f5992241c 760 stepper1.moveTo(position1);
tomo370 5:fd097a259856 761
tomo370 8:2e68b9de685d 762 //モーター2の目標位置設定()
tomo370 8:2e68b9de685d 763 stepper2.moveTo(position2);
tomo370 1:cf2f5992241c 764
tomo370 4:c3f3fdde7eee 765
tomo370 5:fd097a259856 766 //安全エンドスイッチの監視(停止中)
tomo370 5:fd097a259856 767 //checkSafeBreak();
tomo370 5:fd097a259856 768
tomo370 5:fd097a259856 769 //モーター1への原点復帰命令のチェック
tomo370 5:fd097a259856 770 checkInitCommand1();
tomo370 4:c3f3fdde7eee 771
tomo370 8:2e68b9de685d 772 //モーター2への原点復帰命令のチェック()
tomo370 8:2e68b9de685d 773 checkInitCommand2();
tomo370 5:fd097a259856 774
tomo370 5:fd097a259856 775 //モーター1の走行
tomo370 7:813cdaad1200 776 if(stepper1.distanceToGo() != 0) {
tomo370 7:813cdaad1200 777 //checkInitCommand1();
tomo370 7:813cdaad1200 778 stepper1.run();
tomo370 7:813cdaad1200 779 }
tomo370 8:2e68b9de685d 780 //モーター2の走行
tomo370 8:2e68b9de685d 781 if(stepper2.distanceToGo() != 0) stepper2.run();
tomo370 1:cf2f5992241c 782 }
tomo370 1:cf2f5992241c 783 }