Class: Smalruby::Hardware::TwoWheelDriveCar

Inherits:
Dino::Components::BaseComponent
  • Object
show all
Defined in:
lib/smalruby/hardware/two_wheel_drive_car.rb

Overview

2WD車のモーターを表現するクラス

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ TwoWheelDriveCar

Returns a new instance of TwoWheelDriveCar.



8
9
10
11
12
13
14
15
16
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 8

def initialize(options)
  pin = Pin.smalruby_to_dino(options[:pin])
  case pin
  when 2..10
    super(board: world.board, pin: (pin...(pin + 4)).to_a)
  else
    fail "モーターのピン番号が間違っています: {options[:pin]}"
  end
end

Instance Method Details

#backward(left_level = 100, right_level = 100) ⇒ Object

後退する



25
26
27
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 25

def backward(left_level = 100, right_level = 100)
  digital_write_pins(0, left_level, 0, right_level)
end

#forward(left_level = 100, right_level = 100) ⇒ Object

前進する



19
20
21
22
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 19

def forward(left_level = 100,
            right_level = 100)
  digital_write_pins(left_level, 0, right_level, 0)
end

#run(options = {}) ⇒ Object

命令する



45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 45

def run(options = {})
  defaults = {
    command: 'forward',
    sec: nil,
    left_level: 100,
    right_level: 100,
  }
  opts = Util.process_options(options, defaults)

  send(opts[:command], opts[:left_level], opts[:right_level])
  sleep(opts[:sec]) if opts[:sec]
  stop unless opts[:command] == :stop
end

#stopObject

停止する



40
41
42
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 40

def stop
  digital_write_pins(0, 0, 0, 0)
end

#turn_left(left_level = 100, right_level = 100) ⇒ Object

左に曲がる



30
31
32
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 30

def turn_left(left_level = 100, right_level = 100)
  digital_write_pins(0, left_level, right_level, 0)
end

#turn_right(left_level = 100, right_level = 100) ⇒ Object

右に曲がる



35
36
37
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 35

def turn_right(left_level = 100, right_level = 100)
  digital_write_pins(left_level, 0, 0, right_level)
end