Class: Smalruby::Hardware::TwoWheelDriveCar

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

Overview

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ TwoWheelDriveCar

Returns a new instance of TwoWheelDriveCar.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 14

def initialize(options)
  @left_speed = 100
  @right_speed = 100

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

Instance Attribute Details

#left_speedObject (readonly)

左のモーターの速度%



9
10
11
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 9

def left_speed
  @left_speed
end

#right_speedObject (readonly)

右のモーターの速度%



12
13
14
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 12

def right_speed
  @right_speed
end

Instance Method Details

#backwardObject

後退する



48
49
50
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 48

def backward
  digital_write_pins(0, left_speed, 0, right_speed)
end

#forwardObject

前進する



43
44
45
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 43

def forward
  digital_write_pins(left_speed, 0, right_speed, 0)
end

#run(options = {}) ⇒ Object

命令する



68
69
70
71
72
73
74
75
76
77
78
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 68

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

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

#stopObject

停止する



63
64
65
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 63

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

#turn_leftObject

左に曲がる



53
54
55
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 53

def turn_left
  digital_write_pins(0, left_speed, right_speed, 0)
end

#turn_rightObject

右に曲がる



58
59
60
# File 'lib/smalruby/hardware/two_wheel_drive_car.rb', line 58

def turn_right
  digital_write_pins(left_speed, 0, 0, right_speed)
end