Bitter Engine

ラズパイでステッピングモータを動かすの、ちょっとつまりまくってる。大体の例がPythonなんだけど、できればNodeJS使いたい。とりあえずテストでPython使って回してみてから~~とか思ってたけど、ネットに転がってるPythonのサンプルコード見ながらJSに書き換えたら楽勝でしょ:ブイサイン:

 

とりあえずLチカしてみる。


qiita.com
これ参考にした。

setInterval(() => {
  gpio.setup(LED_PIN, gpio.DIR_OUT, () => {
    // LED_BLINK_DELAY_MS毎にLED ON/OFF
    gpio.write(LED_PIN, true);
    console.log("switch on")
    gpio.setup(LED_PIN, gpio.DIR_OUT, () => {
      // LED_BLINK_DELAY_MS毎にLED ON/OFF
      console.log("switch on, one more!")
      gpio.write(LED_PIN, false);
    })
  })
}, 500);

点灯した直後に消灯をいれこむことで


こんな感じにできてよさげ

JavaScript(Node.js) で sleep() アラカルト - Qiita
ふたつめのやりかたがわかりやすくてよさそう。

github.com
あとラズパイのGPIOいじるライブラリを変えた。こっちのほうがモードの切り替えとか(入出力の切り替え)いちいち設定せずに済んでよい

ステッピングモータが動いた。

let dirMode = true;
while (1) {
  for (let index = 0; index < 200; index++) {
    rpio.write(LED_PIN,rpio.HIGH)
    sleep(3);
    rpio.write(LED_PIN,rpio.LOW)
    sleep(5);
  }
  if (dirMode) {
    rpio.write(DIR_PIN,rpio.HIGH)   
    dirMode = !dirMode; 
  } else {
    rpio.write(DIR_PIN,rpio.LOW)    
    dirMode = !dirMode; 
  }
}

自力でPWM出力しようとしてる。これが正しいのかは知らん。
ArduinoとA4988でステッピングモータを回転してみる – 自作のいろいろ
これ参考にした。アルディーノ使えるんならPWM出力デフォルトでできるやろ、とか思っちゃう。知らんけど