Class: Smalruby::Hardware::SmalrubotV3
- Inherits:
-
Object
- Object
- Smalruby::Hardware::SmalrubotV3
- Defined in:
- lib/smalruby/hardware/smalrubot_v3.rb
Overview
Smalrubot v3 class
Constant Summary collapse
- WAIT_TIME =
wait time for next action
0.01
Instance Attribute Summary collapse
-
#green_led ⇒ Object
readonly
Green LED that is connected D2.
-
#left_motor ⇒ Object
readonly
Left Motor that is connected D6, D7, D8.
-
#left_sensor ⇒ Object
readonly
Left sensor that is connected A0.
-
#red_led ⇒ Object
readonly
Red LED that is connected D13.
-
#right_motor ⇒ Object
readonly
Right Motor that is connected D9, D10, D11.
-
#right_sensor ⇒ Object
readonly
Right sensor that is connected A1.
Class Method Summary collapse
-
.lock(&block) ⇒ Object
lock for motor driver.
-
.unlock(&block) ⇒ Object
unlock for motor driver.
Instance Method Summary collapse
-
#backward(sec: nil) ⇒ Object
backward.
-
#forward(sec: nil) ⇒ Object
forward.
-
#initialize(_) ⇒ SmalrubotV3
constructor
A new instance of SmalrubotV3.
- #left_dc_motor_power_ratio ⇒ Object
- #left_dc_motor_power_ratio=(val) ⇒ Object
- #left_sensor_value ⇒ Object
- #right_dc_motor_power_ratio ⇒ Object
- #right_dc_motor_power_ratio=(val) ⇒ Object
- #right_sensor_value ⇒ Object
-
#stop(sec: WAIT_TIME) ⇒ Object
stop.
-
#turn_left(sec: nil) ⇒ Object
turn left.
- #turn_off_green_led ⇒ Object (also: #turn_off_left_led)
- #turn_off_red_led ⇒ Object (also: #turn_off_right_led)
- #turn_on_green_led ⇒ Object (also: #turn_on_left_led)
- #turn_on_red_led ⇒ Object (also: #turn_on_right_led)
-
#turn_right(sec: nil) ⇒ Object
turn right.
Constructor Details
#initialize(_) ⇒ SmalrubotV3
Returns a new instance of SmalrubotV3.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 48 def initialize(_) @red_led = Led.new(pin: 'D13') @green_led = Led.new(pin: 'D2') @left_motor = MotorDriver.new(pin: 'D6') @left_motor.speed = 100 @right_motor = MotorDriver.new(pin: 'D9') @right_motor.speed = 100 @left_sensor = Sensor.new(pin: 'A0') @right_sensor = Sensor.new(pin: 'A1') @current_motor_direction = :stop end |
Instance Attribute Details
#green_led ⇒ Object (readonly)
Green LED that is connected D2
34 35 36 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 34 def green_led @green_led end |
#left_motor ⇒ Object (readonly)
Left Motor that is connected D6, D7, D8
37 38 39 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 37 def left_motor @left_motor end |
#left_sensor ⇒ Object (readonly)
Left sensor that is connected A0
43 44 45 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 43 def left_sensor @left_sensor end |
#red_led ⇒ Object (readonly)
Red LED that is connected D13
31 32 33 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 31 def red_led @red_led end |
#right_motor ⇒ Object (readonly)
Right Motor that is connected D9, D10, D11
40 41 42 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 40 def right_motor @right_motor end |
#right_sensor ⇒ Object (readonly)
Right sensor that is connected A1
46 47 48 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 46 def right_sensor @right_sensor end |
Class Method Details
.lock(&block) ⇒ Object
lock for motor driver
15 16 17 18 19 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 15 def lock(&block) @mutex.synchronize do yield end end |
.unlock(&block) ⇒ Object
unlock for motor driver
22 23 24 25 26 27 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 22 def unlock(&block) @mutex.unlock yield ensure @mutex.lock end |
Instance Method Details
#backward(sec: nil) ⇒ Object
backward
|
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 84
|
#forward(sec: nil) ⇒ Object
forward
|
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 79
|
#left_dc_motor_power_ratio ⇒ Object
63 64 65 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 63 def left_dc_motor_power_ratio @left_motor.speed end |
#left_dc_motor_power_ratio=(val) ⇒ Object
67 68 69 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 67 def left_dc_motor_power_ratio=(val) @left_motor.speed = val end |
#left_sensor_value ⇒ Object
118 119 120 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 118 def left_sensor_value @left_sensor.value.to_i end |
#right_dc_motor_power_ratio ⇒ Object
71 72 73 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 71 def right_dc_motor_power_ratio @right_motor.speed end |
#right_dc_motor_power_ratio=(val) ⇒ Object
75 76 77 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 75 def right_dc_motor_power_ratio=(val) @right_motor.speed = val end |
#right_sensor_value ⇒ Object
122 123 124 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 122 def right_sensor_value @right_sensor.value.to_i end |
#stop(sec: WAIT_TIME) ⇒ Object
stop
107 108 109 110 111 112 113 114 115 116 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 107 def stop(sec: WAIT_TIME) self.class.lock do @left_motor.stop @right_motor.stop @current_motor_direction = :stop if (sec = sec.to_f) > 0 sleep(sec) end end end |
#turn_left(sec: nil) ⇒ Object
turn left
|
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 89
|
#turn_off_green_led ⇒ Object Also known as: turn_off_left_led
131 132 133 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 131 def turn_off_green_led @green_led.turn_off end |
#turn_off_red_led ⇒ Object Also known as: turn_off_right_led
141 142 143 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 141 def turn_off_red_led @red_led.turn_off end |
#turn_on_green_led ⇒ Object Also known as: turn_on_left_led
126 127 128 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 126 def turn_on_green_led @green_led.turn_on end |
#turn_on_red_led ⇒ Object Also known as: turn_on_right_led
136 137 138 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 136 def turn_on_red_led @red_led.turn_on end |
#turn_right(sec: nil) ⇒ Object
turn right
98 99 100 101 102 |
# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 98 %i(forward backward turn_left turn_right).each do |direction| define_method(direction) do |sec: nil| run(direction, sec: sec) end end |