class Smalruby::Hardware::SmalrubotS1
Smalrubot on Studuino v1 class
Constants
- DEFAULT_DC_MOTOR_POWER_RATIO
default dc motor power ratio
Public Class Methods
new(_)
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 12 def initialize(_) world.board.init_dc_motor_port(PORT_M1, 0) world.board.init_dc_motor_port(PORT_M2, 0) world.board.init_sensor_port(PORT_A0, PIDLED) world.board.init_sensor_port(PORT_A1, PIDLED) world.board.init_sensor_port(PORT_A4, PIDIRPHOTOREFLECTOR) world.board.init_sensor_port(PORT_A5, PIDIRPHOTOREFLECTOR) @dc_motor_power_ratios = { PORT_M1 => DEFAULT_DC_MOTOR_POWER_RATIO, PORT_M2 => DEFAULT_DC_MOTOR_POWER_RATIO, } end
Public Instance Methods
left_dc_motor_power_ratio()
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 28 def left_dc_motor_power_ratio @dc_motor_power_ratios[PORT_M1] end
left_dc_motor_power_ratio=(val)
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 32 def left_dc_motor_power_ratio=(val) set_dc_motor_power_ratio(PORT_M1, val) end
left_sensor_value()
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 74 def left_sensor_value world.board.get_ir_photoreflector_value(PORT_A4).to_i end
right_dc_motor_power_ratio()
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 36 def right_dc_motor_power_ratio @dc_motor_power_ratios[PORT_M2] end
right_dc_motor_power_ratio=(val)
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 40 def right_dc_motor_power_ratio=(val) set_dc_motor_power_ratio(PORT_M2, val) end
right_sensor_value()
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 78 def right_sensor_value world.board.get_ir_photoreflector_value(PORT_A5).to_i end
turn_off_blue_led()
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 87 def turn_off_blue_led world.board.led(PORT_A0, OFF) end
Also aliased as: turn_off_left_led
turn_off_red_led()
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 97 def turn_off_red_led world.board.led(PORT_A1, OFF) end
Also aliased as: turn_off_right_led
turn_on_blue_led()
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 82 def turn_on_blue_led world.board.led(PORT_A0, ON) end
Also aliased as: turn_on_left_led
turn_on_red_led()
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 92 def turn_on_red_led world.board.led(PORT_A1, ON) end
Also aliased as: turn_on_right_led
Private Instance Methods
_stop()
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 157 def _stop set_dc_motor_powers world.board.dc_motor_control(PORT_M1, COAST) world.board.dc_motor_control(PORT_M2, COAST) end
run(direction, sec: nil)
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 127 def run(direction, sec: nil) case direction when :forward set_dc_motor_powers world.board.dc_motor_control(PORT_M1, NORMAL) world.board.dc_motor_control(PORT_M2, NORMAL) when :backward set_dc_motor_powers world.board.dc_motor_control(PORT_M1, REVERSE) world.board.dc_motor_control(PORT_M2, REVERSE) when :turn_left set_dc_motor_powers world.board.dc_motor_control(PORT_M1, REVERSE) world.board.dc_motor_control(PORT_M2, NORMAL) when :turn_right set_dc_motor_powers world.board.dc_motor_control(PORT_M1, NORMAL) world.board.dc_motor_control(PORT_M2, REVERSE) when :stop _stop end if (sec = sec.to_f) > 0 sleep(sec) if direction != :stop _stop end end end
set_dc_motor_power(port)
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 115 def set_dc_motor_power(port) ratio = @dc_motor_power_ratios[port] power = Smalrubot::Board::HIGH * (ratio.to_f / 100) world.board.dc_motor_power(port, power.round) end
set_dc_motor_power_ratio(port, val)
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 104 def set_dc_motor_power_ratio(port, val) if val < 0 @dc_motor_power_ratios[port] = 0 elsif val > 100 @dc_motor_power_ratios[port] = 100 else @dc_motor_power_ratios[port] = val end set_dc_motor_power(port) end
set_dc_motor_powers()
click to toggle source
# File lib/smalruby/hardware/smalrubot_s1.rb, line 121 def set_dc_motor_powers @dc_motor_power_ratios.keys.each do |port| set_dc_motor_power(port) end end