class Smalruby::Hardware::MotorDriver
モータードライバを表現するクラス
モータードライバのVrefにはPWM出力できるD3, D5, D6, D9, D10, D11の いずれかを接続し、Vin1、Vin2はVrefからの連番(例えば、VrefがD3であ ればVin1、Vin2はそれぞれD4, D5)を接続してください。
動作確認済みのモータードライバの一覧
-
TOSHIBA
-
TA7291P
-
Attributes
speed[R]
モーターの回転速度の割合(0~100%)
Public Class Methods
new(options)
click to toggle source
Calls superclass method
# File lib/smalruby/hardware/motor_driver.rb, line 18 def initialize(options) pin = Pin.smalruby_to_smalrubot(options[:pin]) case pin when 3, 5, 6, 9, 10, 11 super(board: world.board, pin: (pin...(pin + 3)).to_a) else fail "モーターのピン番号が間違っています: {options[:pin]}" end self.speed = options[:speed] || 100 end
Public Instance Methods
backward()
click to toggle source
逆転する
# File lib/smalruby/hardware/motor_driver.rb, line 44 def backward write_pins(speed, 0, 100) end
forward()
click to toggle source
正転する
# File lib/smalruby/hardware/motor_driver.rb, line 39 def forward write_pins(speed, 100, 0) end
speed=(val)
click to toggle source
# File lib/smalruby/hardware/motor_driver.rb, line 29 def speed=(val) @speed = val if @speed < 0 @speed = 0 elsif @speed > 100 @speed = 100 end end
stop()
click to toggle source
停止する
# File lib/smalruby/hardware/motor_driver.rb, line 49 def stop write_pins(0, 0, 0) end
Private Instance Methods
after_initialize(_ = {})
click to toggle source
# File lib/smalruby/hardware/motor_driver.rb, line 55 def after_initialize(_ = {}) pins.each do |pin| set_pin_mode(pin, :out) end stop end
write_pins(*levels)
click to toggle source
# File lib/smalruby/hardware/motor_driver.rb, line 62 def write_pins(*levels) levels.each.with_index do |level, i| case level when 0 digital_write(pins[i], Smalrubot::Board::LOW) when 100 digital_write(pins[i], Smalrubot::Board::HIGH) else analog_write(pins[i], (Smalrubot::Board::HIGH * level / 100.0).round) end end end