Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: AT24C1024 DMX-STM32 mbed
Revision 8:2e68b9de685d, committed 2017-07-28
- Comitter:
- tomo370
- Date:
- Fri Jul 28 04:44:42 2017 +0000
- Parent:
- 7:813cdaad1200
- Commit message:
- 2017_07_28ver
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Tue Apr 25 12:20:47 2017 +0000
+++ b/main.cpp Fri Jul 28 04:44:42 2017 +0000
@@ -4,7 +4,12 @@
#include "DMX.h"
//モータ制御基板の通し番号を設定してください 初期設定は1です 0は使わないでね。
-#define BoardNumber 8
+#define BoardNumber 1
+
+//ステップ数設定 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
+#define StepSize1 7
+#define StepSize2 7
+
Ticker to;
@@ -95,10 +100,6 @@
float StepAdj1 = 1;
float StepAdj2 = 1;
-//ステップ数設定 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
-#define StepSize1 3
-#define StepSize2 4
-
//未実装
void sendDataToLPC()
@@ -130,13 +131,13 @@
void checkSW()
{
//モーター1用エンドスイッチのチェック
- if(EndSW1.read() == 0) {
+ if(EndSW3.read() == 1) {
stepper1.stop();
stepper1.setCurrentPosition(0);
}
//モーター2用エンドスイッチのチェック
- if(EndSW2.read() == 0) {
+ if(EndSW4.read() == 1) {
stepper2.stop();
stepper2.setCurrentPosition(0);
}
@@ -153,14 +154,14 @@
stepper1.setMaxSpeed(180000);
while(1) {
- stepper1.moveTo(3200);
+ stepper1.moveTo(6200);
//stepper1.moveTo(800 / StepAdj1);
while(stepper1.distanceToGo() != 0) {
stepper1.run();
}
wait(0.5);
//stepper1.moveTo(0 / StepAdj1);
- stepper1.moveTo(0);
+ stepper1.moveTo(200);
while(stepper1.distanceToGo() != 0) {
stepper1.run();
}
@@ -175,7 +176,7 @@
stepper1.setMaxSpeed(10000 / StepAdj1);
stepper2.setMaxSpeed(10000 / StepAdj2);
- stepper1.setMaxSpeed(180000);
+ //stepper1.setMaxSpeed(180000);
while(1) {
stepper1.moveTo(20000 / StepAdj1);
@@ -326,13 +327,16 @@
if (stepper1.distanceToGo() != 0) stepper1.run();
if (stepper2.distanceToGo() != 0) stepper2.run();
}
+ stepper1.setCurrentPosition(-1);
+ stepper2.setCurrentPosition(-1);
+
}
void checkSafeBreak()
{
//モーター1用エンドスイッチのチェック
- if(EndSW1.read() == 1) {
+ if(EndSW3.read() == 1) {
stepper1.stop();
while(1) {
blink();
@@ -340,7 +344,7 @@
}
//モーター2用エンドスイッチのチェック
- if(EndSW2.read() == 1) {
+ if(EndSW4.read() == 1) {
stepper2.stop();
while(1) {
blink();
@@ -416,33 +420,33 @@
dmxInHighBit = dmxInHighBit << 8;
speed1 = (long)(dmxInHighBit + dmxInLowBit);
-//(停止中)
-// dmxInHighBit = dmx.get(DMX_Speed2_H);
-// dmxInLowBit = dmx.get(DMX_Speed2_L);
-// dmxInHighBit = dmxInHighBit << 8;
-// speed2 = (long)(dmxInHighBit + dmxInLowBit);
+//(動作)
+ dmxInHighBit = dmx.get(DMX_Speed2_H);
+ dmxInLowBit = dmx.get(DMX_Speed2_L);
+ dmxInHighBit = dmxInHighBit << 8;
+ speed2 = (long)(dmxInHighBit + dmxInLowBit);
dmxInHighBit = dmx.get(DMX_Acceleration1_H);
dmxInLowBit = dmx.get(DMX_Acceleration1_L);
dmxInHighBit = dmxInHighBit << 8;
Acceleration1 = (long)(dmxInHighBit + dmxInLowBit);
-//(停止中)
-// dmxInHighBit = dmx.get(DMX_Acceleration2_H);
-// dmxInLowBit = dmx.get(DMX_Acceleration2_L);
-// dmxInHighBit = dmxInHighBit << 8;
-// Acceleration2 = (long)(dmxInHighBit + dmxInLowBit);
+//(動作)
+ dmxInHighBit = dmx.get(DMX_Acceleration2_H);
+ dmxInLowBit = dmx.get(DMX_Acceleration2_L);
+ dmxInHighBit = dmxInHighBit << 8;
+ Acceleration2 = (long)(dmxInHighBit + dmxInLowBit);
dmxInHighBit = dmx.get(DMX_Max1_H);
dmxInLowBit = dmx.get(DMX_Max1_L);
dmxInHighBit = dmxInHighBit << 8;
max1 = (long)(dmxInHighBit + dmxInLowBit);
-//(停止中)
-// dmxInHighBit = dmx.get(DMX_Max2_H);
-// dmxInLowBit = dmx.get(DMX_Max2_L);
-// dmxInHighBit = dmxInHighBit << 8;
-// max2 = (long)(dmxInHighBit + dmxInLowBit);
+//(動作)
+ dmxInHighBit = dmx.get(DMX_Max2_H);
+ dmxInLowBit = dmx.get(DMX_Max2_L);
+ dmxInHighBit = dmxInHighBit << 8;
+ max2 = (long)(dmxInHighBit + dmxInLowBit);
}
@@ -603,8 +607,8 @@
break;
case 7: //TMC StealthChop µ16 steps
- DigitalIn stepper1MS1(D11);
- DigitalIn stepper1MS2(D12);
+ DigitalIn stepper1MS1(A5);
+ DigitalIn stepper1MS2(A6);
StepAdj1 = 1;
break;
}
@@ -683,20 +687,20 @@
stepper2.setCurrentPosition(-1);
//モーターの初期化シーケンス
- init1();
+// init1();
// init2();
-// initBoth();
+ initBoth();
//往復運動を繰り返すテストシーケンス(無限ループ)
-// testMove1();
+// testMove2();
myLED =1;
readROMValue1();
-// readROMValue2();
+ readROMValue2();
stepper1.setMaxSpeed(10000 / StepAdj1);
-// stepper2.setMaxSpeed(10000 / StepAdj2);
+ stepper2.setMaxSpeed(10000 / StepAdj2);
while(1) {
//操作モード切り替えボタンのチェック
@@ -712,10 +716,10 @@
position1 = (long)(dmxInHighBit + dmxInLowBit);
//モーター2の目標位置をスライダーから取得(停止中)
-// dmxInHighBit = dmx.get(DMX_Position2_H);
-// dmxInLowBit = dmx.get(DMX_Position2_L);
-// dmxInHighBit = dmxInHighBit << 8;
-// position2 = (long)(dmxInHighBit + dmxInLowBit);
+ dmxInHighBit = dmx.get(DMX_Position2_H);
+ dmxInLowBit = dmx.get(DMX_Position2_L);
+ dmxInHighBit = dmxInHighBit << 8;
+ position2 = (long)(dmxInHighBit + dmxInLowBit);
//手動モードの場合、現在のスライダーの値を取得、パラメーターを設定
if(manipulateMode1 == false) {
@@ -747,16 +751,16 @@
//モーター2のパラメーター設定(停止中)
- //position2 = map(position2, 0, 0xFFFF, 0, max2);
- //stepper2.setMaxSpeed(speed2);
- //stepper2.setAcceleration(Acceleration2);
+ position2 = map(position2, 0, 0xFFFF, 0, max2);
+ stepper2.setMaxSpeed(speed2);
+ stepper2.setAcceleration(Acceleration2);
//モーター1の目標位置設定
stepper1.moveTo(position1);
- //モーター2の目標位置設定(停止中)
- //stepper2.moveTo(position2);
+ //モーター2の目標位置設定()
+ stepper2.moveTo(position2);
//安全エンドスイッチの監視(停止中)
@@ -765,15 +769,15 @@
//モーター1への原点復帰命令のチェック
checkInitCommand1();
- //モーター2への原点復帰命令のチェック(停止中)
- //checkInitCommand2();
+ //モーター2への原点復帰命令のチェック()
+ checkInitCommand2();
//モーター1の走行
if(stepper1.distanceToGo() != 0) {
//checkInitCommand1();
stepper1.run();
}
- //モーター2の走行(停止中)
- //if(stepper2.distanceToGo() != 0) stepper2.run();
+ //モーター2の走行
+ if(stepper2.distanceToGo() != 0) stepper2.run();
}
}
\ No newline at end of file