feedrateOverride()

説明する

バッファー内の未確認のブロックのフィードレートを上書きして再計算します。

 

文法

machine.feedrateOverride(ratio);

 

パラメーター

machineMachineのオブジェクトです。 。

ratio:フィードレートは比率を上書きします。これは0より大きいはずです。

 

戻る

返品値はありません。

 

マシンがGコードの動きを実行すると、フィードレートはエンコーダーに従って動的に調整されます。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

#include "Motion86.h"

#include "Encoder.h"

#include "SD.h"

 

// マシンオブジェクトを生成します。マシン0~2まで、それぞれ3軸のマシンを最大3台まで使用できます。。

Machine machine(0);

 

// ステッピングモーター enable pin。

int EnablePin = 4;

 

// この gcode ファイルは SD カードに保存されます。

char *filename = "auto.gcode";

File gfile;

char buf[256];

int ptr;

bool working;

 

// プリセット送り速度比を設定する。

volatile double FeedrateRatio = 1.0;

 

bool enc_triggered = false;

 

void encoder_callback(int flag);

 

void setup() {

  while (!Serial);

  SD.begin();

 

  // この例では、ハンドホイールが Enc3 に取り付けられています。

  Enc3.begin(MODE_AB_PHASE);

  Enc3.setRange(1); // 割り込みは毎回トリガーされます

  Enc3.attachInterrupt(encoder_callback);

 

  pinMode(EnablePin, OUTPUT);

 

  // 必要に応じて、軸の移動方向を反転できます。

  // この例では、x 軸と y 軸の方向を反転する必要があります。

  machine.config_ReverseDirection(AXIS_X);

  machine.config_ReverseDirection(AXIS_Y);

 

  // PPU (単位あたりのパルス) は、さまざまなニーズに応じた仮想的な長さの単位です。

  // この例では、x 軸の単位長さは 80 パルスに設定されており、これは実際のアプリケーションでは 1 mm に相当します。

  machine.config_PPU(AXIS_X, 80.0);

  machine.config_PPU(AXIS_Y, 80.0);

  machine.config_PPU(AXIS_Z, 1600.0);

 

  // 機械の動きに対するソフトウェア制限を設定します。

  machine.config_PosLimit(AXIS_X, 0, 300);

  machine.config_PosLimit(AXIS_Y, 0, 200);

  machine.config_PosLimit(AXIS_Z, 0, 300);

 

  // リミットスイッチがホームポイントを設定するために使用するピンを設定します。

  machine.config_HomePins(2, 7, 8);

 

  // 制御する前に、マシンを起動する必要があります。

  machine.machineOn();

 

  // ソフトウェア制限を有効にします。

  machine.enableSoftLimit();

 

  // ホームポイントへの送り速度を設定します。

  machine.setHomeSpeed(1000, 1000, 200);

 

  // SDカード内のGコードファイルを開く

  if (SD.exists(filename)) {

    gfile = SD.open(filename);

    working = true;

  } else {

    Serial.print("File not exists: ");

    Serial.println(filename);

    while (1);

  }

 

  // ステッピングモーターを起動します。

  digitalWrite(EnablePin, LOW);

 

  // リミットスイッチによって定義されたホームポイントに戻ります。

  machine.home();

}

 

void loop() {

  // gcode ファイルを読み取って解析します。

  if (working && !machine.isCmdBufferFull()) {

    ptr = 0;

    while (gfile.available()) {

      buf[ptr] = gfile.read();

      if (buf[ptr] == '\n') {

        buf[ptr + 1] = '\0';

        machine.gcode(buf);

        break;

      } else {

        ptr ++;

      }

    }

    if (!gfile.available())

    {

      Serial.println("GCODE FINISH");

      gfile.close();

      working = false;

    }

  }

 

  // 割り込みが発生したときに送り速度をオーバーライドします。

  if (enc_triggered) {

    if (FeedrateRatio > 2.0) FeedrateRatio = 2.0;

    if (FeedrateRatio < 0.1) FeedrateRatio = 0.1;

    machine.feedrateOverride(FeedrateRatio);

    enc_triggered = false;

    Serial.print("FeedrateRatio = ");

    Serial.println(machine.getFeedrateOverride());

  }

}

 

void encoder_callback(int flag) {

  // 送り速度比は 0 より大きくなければなりません。

  if (flag == INTR_OVERFLOW && FeedrateRatio < 2.0)

    FeedrateRatio += 0.01;

  else if (flag == INTR_UNDERFLOW && FeedrateRatio > 0.0)

    FeedrateRatio -= 0.01;

  enc_triggered = true;

}

 

も参照してください

getFeedeRateOverAgeride()


 

函式庫參考主面

86Duinoリファレンスのテキストは、参照内の Creative Commons Attribution-ShareAlike 3.0 License ライセンスコードサンプルの下でライセンスされています。パブリックドメインにリリースされます。