Class: Smalruby::Hardware::SmalrubotV3

Inherits:
Object
  • Object
show all
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

Class Method Summary collapse

Instance Method Summary collapse

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_ledObject (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_motorObject (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_sensorObject (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_ledObject (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_motorObject (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_sensorObject (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

Parameters:

  • time (Float)

    of backwarding



# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 84

#forward(sec: nil) ⇒ Object

forward

Parameters:

  • time (Float)

    of forwarding



# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 79

#left_dc_motor_power_ratioObject



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_valueObject



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_ratioObject



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_valueObject



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

Parameters:

  • time (Float)

    of stopping



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

Parameters:

  • time (Float)

    of turning left



# File 'lib/smalruby/hardware/smalrubot_v3.rb', line 89

#turn_off_green_ledObject 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_ledObject 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_ledObject 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_ledObject 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

Parameters:

  • time (Float)

    of turning 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