0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ブラウザから操作可能なラジコンを作る【3】

Last updated at Posted at 2025-03-02

【3】サーボモーターを制御

前回、DCモーターをモータードライバー経由でPWMを使用し
加速・減速を行いました。
今回はハンドルの操作に使用する
サーボモーター
DualSenseにはアナログトリガーがあるので
モーターの回転スピードを調整する制御まで進めます。


目次

サーボモーター

サーボを使った工作でおなじみのSG90を使用します。


RaspberryPiのGPIOに直接つなぐだけで使えるので
注意点も何も無く、挿してコードを動かすだけで使えます。

このサーボの仕様では、初期位置の0度に対して
-90度~+90度まで180度回転

piggpio経由では、Hz換算で500~2500の範囲に収まるそうで
直感的に分かりにくいこと、この上ないのと
初期位置からマイナス方向に回らないっぽい?


試験コード

使い方が根本的に違う、という可能性をハラミつつも
初期位置=500となっているようなので
ラジコンへの取り付け位置から、手探りで初期位置を調整し

位置 PWM出力
イニシャル 850
550
1150

という割り振りを前提に
試験コードを書いた全容が下記になります。

const gpio = require('./gpio.service')

const MotorPorts = {
    HANDLE: 17,
    INITIAL_ANGLE: 850,
}

// PWM信号出力ポート追加
gpio.addPort({port: MotorPorts.HANDLE, mode: 'out'})

await gpio.initGpio()

// 初期位置にサーボを動かす。
gpio.searvoWrite(MotorPorts.HANDLE, MotorPorts.INITIAL_ANGLE)

const angle = [550, 1150]
let p = 0

// 1秒毎に、左・右の角度にサーボを動かす。
while (true) {
    console.log(gpio.searvoWrite(MotorPorts.HANDLE, angle[p]))
    p = (p === 0) ? 1 : 0
    await new Promise((resolve) => setTimeout(resolve, 1000))
}


サーボ駆動試験

試験コードを動かすと、こんな感じでサーボモーターがかくかく動きます。



サーボモーターを動かすだけ、の場合こんな感じでかなり簡単に済みます。

誰でも簡単に使えるように
規格化、体系化されたありがたみを感じる部分です。




UZAYA

Uzayaでは、多分仕事を求めています。
何かの役に立ちそうでしたら、是非お知らせを。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?