test2017-1-13

Dependencies:   AT24C1024 DMX-STM32 mbed

Committer:
tomo370
Date:
Mon Apr 03 09:12:33 2017 +0000
Revision:
5:fd097a259856
Parent:
4:c3f3fdde7eee
Child:
6:2a9e0228f81d
?????????????

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