artoo 0.5.0 → 1.0.0.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +2 -2
- data/.yardopts +1 -1
- data/CONTRIBUTORS.md +16 -0
- data/Gemfile +10 -9
- data/Gemfile.lock +31 -35
- data/README.md +110 -19
- data/Rakefile +0 -1
- data/api/assets/javascripts/artoo/controllers/robot.js.coffee +5 -8
- data/api/public/core.js +7 -12
- data/api/public/partials/robot-detail.html +1 -1
- data/bin/robi +1 -1
- data/examples/christmas_roomba.rb +16 -19
- data/examples/hello_api_multiple.rb +3 -2
- data/examples/notifications.rb +2 -2
- data/examples/sphero_messages.rb +9 -3
- data/lib/artoo/adaptors/test.rb +28 -0
- data/lib/artoo/connection.rb +5 -0
- data/lib/artoo/delegator.rb +1 -1
- data/lib/artoo/device.rb +13 -0
- data/lib/artoo/drivers/counter.rb +28 -0
- data/lib/artoo/drivers/pinger.rb +8 -11
- data/lib/artoo/drivers/random.rb +27 -0
- data/lib/artoo/drivers/test.rb +23 -0
- data/lib/artoo/master.rb +4 -2
- data/lib/artoo/robot.rb +11 -103
- data/lib/artoo/robot_class_methods.rb +147 -0
- data/lib/artoo/version.rb +1 -1
- data/test/robot_test.rb +3 -3
- data/test/test_helper.rb +1 -2
- metadata +10 -44
- data/bin/sphero.sh +0 -8
- data/bin/sphero_linux_bind.sh +0 -25
- data/bin/sphero_linux_socat.sh +0 -8
- data/examples/sphero2.rb +0 -26
- data/lib/artoo/adaptors/ardrone.rb +0 -41
- data/lib/artoo/adaptors/ardrone_navigation.rb +0 -33
- data/lib/artoo/adaptors/ardrone_video.rb +0 -35
- data/lib/artoo/adaptors/firmata.rb +0 -33
- data/lib/artoo/adaptors/roomba.rb +0 -51
- data/lib/artoo/adaptors/sphero.rb +0 -58
- data/lib/artoo/drivers/ardrone.rb +0 -15
- data/lib/artoo/drivers/ardrone_navigation.rb +0 -25
- data/lib/artoo/drivers/ardrone_video.rb +0 -27
- data/lib/artoo/drivers/button.rb +0 -59
- data/lib/artoo/drivers/led.rb +0 -48
- data/lib/artoo/drivers/motor.rb +0 -69
- data/lib/artoo/drivers/pinger2.rb +0 -27
- data/lib/artoo/drivers/roomba.rb +0 -179
- data/lib/artoo/drivers/servo.rb +0 -59
- data/lib/artoo/drivers/sphero.rb +0 -105
- data/lib/artoo/drivers/wiichuck.rb +0 -61
- data/lib/artoo/drivers/wiiclassic.rb +0 -139
- data/lib/artoo/drivers/wiidriver.rb +0 -102
- data/test/adaptors/ardrone_test.rb +0 -24
- data/test/adaptors/firmata_test.rb +0 -25
- data/test/adaptors/sphero_test.rb +0 -24
- data/test/drivers/ardrone_navigation_test.rb +0 -11
- data/test/drivers/ardrone_test.rb +0 -11
- data/test/drivers/ardrone_video_test.rb +0 -11
- data/test/drivers/led_test.rb +0 -56
- data/test/drivers/motor_test.rb +0 -40
- data/test/drivers/roomba_test.rb +0 -87
- data/test/drivers/servo_test.rb +0 -45
- data/test/drivers/sphero_test.rb +0 -54
- data/test/drivers/wiichuck_test.rb +0 -11
- data/test/drivers/wiiclassic_test.rb +0 -11
- data/test/drivers/wiidriver_test.rb +0 -54
@@ -1,102 +0,0 @@
|
|
1
|
-
require 'artoo/drivers/driver'
|
2
|
-
|
3
|
-
module Artoo
|
4
|
-
module Drivers
|
5
|
-
# Wii-based controller shared driver behaviors for Firmata
|
6
|
-
class Wiidriver < Driver
|
7
|
-
attr_reader :joystick, :data
|
8
|
-
|
9
|
-
def address; 0x52; end
|
10
|
-
|
11
|
-
# Create new Wiidriver
|
12
|
-
def initialize(params={})
|
13
|
-
@joystick = get_defaults
|
14
|
-
@data = {}
|
15
|
-
super
|
16
|
-
end
|
17
|
-
|
18
|
-
# Starts drives and required connections
|
19
|
-
def start_driver
|
20
|
-
begin
|
21
|
-
connection.i2c_config(0)
|
22
|
-
every(interval) do
|
23
|
-
connection.i2c_write_request(address, 0x40, 0x00)
|
24
|
-
connection.i2c_write_request(address, 0x00, 0x00)
|
25
|
-
connection.i2c_read_request(address, 6)
|
26
|
-
|
27
|
-
connection.read_and_process
|
28
|
-
handle_events
|
29
|
-
end
|
30
|
-
|
31
|
-
super
|
32
|
-
rescue Exception => e
|
33
|
-
Logger.error "Error starting wii driver!"
|
34
|
-
Logger.error e.message
|
35
|
-
Logger.error e.backtrace.inspect
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
# Get and update data
|
40
|
-
def update(value)
|
41
|
-
if encrypted?(value)
|
42
|
-
Logger.error "Encrypted bytes from wii device!"
|
43
|
-
raise "Encrypted bytes from wii device!"
|
44
|
-
end
|
45
|
-
|
46
|
-
@data = parse(value)
|
47
|
-
end
|
48
|
-
|
49
|
-
def handle_events
|
50
|
-
while i = find_event("i2c_reply") do
|
51
|
-
update(events.slice!(i).data.first)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
protected
|
56
|
-
|
57
|
-
def find_event(name)
|
58
|
-
events.index {|e| e.name == name}
|
59
|
-
end
|
60
|
-
|
61
|
-
def events
|
62
|
-
connection.async_events
|
63
|
-
end
|
64
|
-
|
65
|
-
def get_defaults
|
66
|
-
{}
|
67
|
-
end
|
68
|
-
|
69
|
-
def parse
|
70
|
-
{}
|
71
|
-
end
|
72
|
-
|
73
|
-
def set_joystick_default_value(joystick_axis, default_value)
|
74
|
-
joystick[joystick_axis] = default_value if joystick[joystick_axis].nil?
|
75
|
-
end
|
76
|
-
|
77
|
-
def calculate_joystick_value(axis, origin)
|
78
|
-
data[axis] - joystick[origin]
|
79
|
-
end
|
80
|
-
|
81
|
-
def encrypted?(value)
|
82
|
-
[[0, 1], [2, 3], [4, 5]].all? {|a| get_value(value, a[0]) == get_value(value, a[1]) }
|
83
|
-
end
|
84
|
-
|
85
|
-
def decode(x)
|
86
|
-
return ( x ^ 0x17 ) + 0x17
|
87
|
-
end
|
88
|
-
|
89
|
-
def decode_value(value, index)
|
90
|
-
decode(get_value(value, index))
|
91
|
-
end
|
92
|
-
|
93
|
-
def get_value(value, index)
|
94
|
-
value[:data][index]
|
95
|
-
end
|
96
|
-
|
97
|
-
def generate_bool(value)
|
98
|
-
value == 0 ? true : false
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
|
2
|
-
require 'artoo/adaptors/ardrone'
|
3
|
-
require 'argus'
|
4
|
-
|
5
|
-
describe Artoo::Adaptors::Ardrone do
|
6
|
-
before do
|
7
|
-
@port = Artoo::Port.new('/dev/awesome')
|
8
|
-
@adaptor = Artoo::Adaptors::Ardrone.new(:port => @port)
|
9
|
-
@ardrone = mock('ardrone')
|
10
|
-
Argus::Drone.stubs(:new).returns(@ardrone)
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'Artoo::Adaptors::Ardrone#connect' do
|
14
|
-
@adaptor.connect.must_equal true
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'Artoo::Adaptors::Ardrone#disconnect' do
|
18
|
-
@adaptor.connect
|
19
|
-
|
20
|
-
@ardrone.expects(:stop)
|
21
|
-
@adaptor.disconnect
|
22
|
-
@adaptor.connected?.must_equal false
|
23
|
-
end
|
24
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
|
2
|
-
require 'artoo/adaptors/firmata'
|
3
|
-
require 'firmata'
|
4
|
-
|
5
|
-
describe Artoo::Adaptors::Firmata do
|
6
|
-
before do
|
7
|
-
@port = Artoo::Port.new('/dev/awesome')
|
8
|
-
@adaptor = Artoo::Adaptors::Firmata.new(:port => @port)
|
9
|
-
@firmata = mock('firmata')
|
10
|
-
Firmata::Board.stubs(:new).returns(@firmata)
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'Artoo::Adaptors::Firmata#connect' do
|
14
|
-
@firmata.expects(:connect)
|
15
|
-
@adaptor.connect.must_equal true
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'Artoo::Adaptors::Firmata#disconnect' do
|
19
|
-
@firmata.stubs(:connect)
|
20
|
-
@adaptor.connect
|
21
|
-
@adaptor.disconnect
|
22
|
-
|
23
|
-
@adaptor.connected?.must_equal false
|
24
|
-
end
|
25
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
|
2
|
-
require 'artoo/adaptors/sphero'
|
3
|
-
require 'sphero'
|
4
|
-
|
5
|
-
describe Artoo::Adaptors::Sphero do
|
6
|
-
before do
|
7
|
-
@port = Artoo::Port.new('/dev/awesome')
|
8
|
-
@adaptor = Artoo::Adaptors::Sphero.new(:port => @port)
|
9
|
-
@sphero = mock('sphero')
|
10
|
-
Sphero.stubs(:new).returns(@sphero)
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'Artoo::Adaptors::Sphero#connect' do
|
14
|
-
@adaptor.connect.must_equal true
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'Artoo::Adaptors::Sphero#disconnect' do
|
18
|
-
@adaptor.connect
|
19
|
-
|
20
|
-
@sphero.expects(:close)
|
21
|
-
@adaptor.disconnect
|
22
|
-
@adaptor.connected?.must_equal false
|
23
|
-
end
|
24
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
|
2
|
-
require 'artoo/drivers/ardrone_navigation'
|
3
|
-
|
4
|
-
describe Artoo::Drivers::ArdroneNavigation do
|
5
|
-
before do
|
6
|
-
@device = mock('device')
|
7
|
-
@driver = Artoo::Drivers::ArdroneNavigation.new(:parent => @device)
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'must do things'
|
11
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
|
2
|
-
require 'artoo/drivers/ardrone'
|
3
|
-
|
4
|
-
describe Artoo::Drivers::Ardrone do
|
5
|
-
before do
|
6
|
-
@device = mock('device')
|
7
|
-
@driver = Artoo::Drivers::Ardrone.new(:parent => @device)
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'must do things'
|
11
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
|
2
|
-
require 'artoo/drivers/ardrone_video'
|
3
|
-
|
4
|
-
describe Artoo::Drivers::ArdroneVideo do
|
5
|
-
before do
|
6
|
-
@device = mock('device')
|
7
|
-
@driver = Artoo::Drivers::ArdroneVideo.new(:parent => @device)
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'must do things'
|
11
|
-
end
|
data/test/drivers/led_test.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
|
2
|
-
require 'artoo/drivers/led'
|
3
|
-
|
4
|
-
describe Artoo::Drivers::Led do
|
5
|
-
before do
|
6
|
-
@device = mock('device')
|
7
|
-
@pin = 13
|
8
|
-
@device.stubs(:pin).returns(@pin)
|
9
|
-
@led = Artoo::Drivers::Led.new(:parent => @device)
|
10
|
-
@connection = mock('connection')
|
11
|
-
@device.stubs(:connection).returns(@connection)
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'Led#is_on? default' do
|
15
|
-
@led.is_on?.must_equal false
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'Led#is_off? default' do
|
19
|
-
@led.is_off?.must_equal true
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'Led#on' do
|
23
|
-
@connection.expects(:set_pin_mode).with(@pin, Firmata::Board::OUTPUT)
|
24
|
-
@connection.expects(:digital_write).with(@pin, Firmata::Board::HIGH)
|
25
|
-
@led.on
|
26
|
-
@led.is_on?.must_equal true
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'Led#off' do
|
30
|
-
@connection.expects(:set_pin_mode).with(@pin, Firmata::Board::OUTPUT)
|
31
|
-
@connection.expects(:digital_write).with(@pin, Firmata::Board::LOW)
|
32
|
-
@led.off
|
33
|
-
@led.is_off?.must_equal true
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'Led#toggle' do
|
37
|
-
@connection.stubs(:set_pin_mode)
|
38
|
-
@connection.stubs(:digital_write)
|
39
|
-
@led.is_off?.must_equal true
|
40
|
-
@led.toggle
|
41
|
-
@led.is_on?.must_equal true
|
42
|
-
@led.toggle
|
43
|
-
@led.is_off?.must_equal true
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'Led#brightness' do
|
47
|
-
val = 100
|
48
|
-
@connection.expects(:set_pin_mode).with(@pin, Firmata::Board::PWM)
|
49
|
-
@connection.expects(:analog_write).with(@pin, val)
|
50
|
-
@led.brightness(val)
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'Led#commands' do
|
54
|
-
@led.commands.must_include :toggle
|
55
|
-
end
|
56
|
-
end
|
data/test/drivers/motor_test.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
|
2
|
-
require 'artoo/drivers/motor'
|
3
|
-
|
4
|
-
describe Artoo::Drivers::Motor do
|
5
|
-
before do
|
6
|
-
@device = mock('device')
|
7
|
-
@device.stubs(:pin).returns([2, 3, 4])
|
8
|
-
@motor = Artoo::Drivers::Motor.new(:parent => @device)
|
9
|
-
|
10
|
-
@connection = mock('connection')
|
11
|
-
@connection.stubs(:set_pin_mode)
|
12
|
-
@connection.stubs(:analog_write)
|
13
|
-
@connection.stubs(:digital_write)
|
14
|
-
@device.stubs(:connection).returns(@connection)
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'Motor#speed must be valid' do
|
18
|
-
invalid_speed = lambda { @motor2 = Artoo::Drivers::Motor.new(:parent => @device); @motor2.speed("ads") }
|
19
|
-
invalid_speed.must_raise RuntimeError
|
20
|
-
error = invalid_speed.call rescue $!
|
21
|
-
error.message.must_equal 'Motor speed must be an integer between 0-255'
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'Motor#forward' do
|
25
|
-
@motor.wrapped_object.expects(:set_legs)
|
26
|
-
@motor.forward(100)
|
27
|
-
@motor.current_speed.must_equal 100
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'Motor#backward' do
|
31
|
-
@motor.wrapped_object.expects(:set_legs)
|
32
|
-
@motor.backward(100)
|
33
|
-
@motor.current_speed.must_equal 100
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'Motor#stop' do
|
37
|
-
@motor.stop
|
38
|
-
@motor.current_speed.must_equal 0
|
39
|
-
end
|
40
|
-
end
|
data/test/drivers/roomba_test.rb
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
|
2
|
-
require 'artoo/drivers/roomba'
|
3
|
-
|
4
|
-
describe Artoo::Drivers::Roomba do
|
5
|
-
before do
|
6
|
-
@connection = mock('connection')
|
7
|
-
@device = mock('device')
|
8
|
-
@device.stubs(:connection).returns(@connection)
|
9
|
-
@roomba = Artoo::Drivers::Roomba.new(:parent => @device)
|
10
|
-
@roomba.stubs(:sleep)
|
11
|
-
@roomba_proxy = @roomba.wrapped_object
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'Roomba#start' do
|
15
|
-
@connection.expects(:send_bytes).with(Artoo::Drivers::Roomba::Mode::START)
|
16
|
-
@roomba.start
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'Roomba#safe_mode' do
|
20
|
-
@roomba.stubs(:start)
|
21
|
-
@connection.expects(:send_bytes).with(Artoo::Drivers::Roomba::Mode::SAFE)
|
22
|
-
@roomba.safe_mode
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'Roomba#full_mode' do
|
26
|
-
@roomba.stubs(:start)
|
27
|
-
@connection.expects(:send_bytes).with(Artoo::Drivers::Roomba::Mode::FULL)
|
28
|
-
@roomba.full_mode
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'Roomba#forward' do
|
32
|
-
@roomba_proxy.expects(:drive).with(250, Artoo::Drivers::Roomba::Direction::STRAIGHT, 10)
|
33
|
-
@roomba_proxy.expects(:stop)
|
34
|
-
@roomba.forward(10, 250)
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'Roomba#stop' do
|
38
|
-
@roomba_proxy.expects(:drive).with(Artoo::Drivers::Roomba::Speed::ZERO, Artoo::Drivers::Roomba::Direction::STRAIGHT)
|
39
|
-
@roomba.stop
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'Roomba#fast_forward' do
|
43
|
-
@roomba_proxy.expects(:drive).with(Artoo::Drivers::Roomba::Speed::MAX, Artoo::Drivers::Roomba::Direction::STRAIGHT, 10)
|
44
|
-
@roomba_proxy.expects(:stop)
|
45
|
-
@roomba.fast_forward(10)
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'Roomba#backwards' do
|
49
|
-
@roomba_proxy.expects(:drive).with(Artoo::Drivers::Roomba::Speed::NEG, Artoo::Drivers::Roomba::Direction::STRAIGHT, 10)
|
50
|
-
@roomba_proxy.expects(:stop)
|
51
|
-
@roomba.backwards(10)
|
52
|
-
end
|
53
|
-
|
54
|
-
it 'Roomba#turn_left' do
|
55
|
-
@roomba_proxy.expects(:drive).with(Artoo::Drivers::Roomba::Speed::SLOW, Artoo::Drivers::Roomba::Direction::COUNTERCLOCKWISE, 10)
|
56
|
-
@roomba_proxy.expects(:stop)
|
57
|
-
@roomba.turn_left(10)
|
58
|
-
end
|
59
|
-
|
60
|
-
it 'Roomba#nudge_left' do
|
61
|
-
@roomba_proxy.expects(:drive).with(Artoo::Drivers::Roomba::Speed::SLOW, Artoo::Drivers::Roomba::Direction::COUNTERCLOCKWISE, 0.25)
|
62
|
-
@roomba_proxy.expects(:stop)
|
63
|
-
@roomba.nudge_left
|
64
|
-
end
|
65
|
-
|
66
|
-
it 'Roomba#turn_right' do
|
67
|
-
@roomba_proxy.expects(:drive).with(Artoo::Drivers::Roomba::Speed::SLOW, Artoo::Drivers::Roomba::Direction::CLOCKWISE, 10)
|
68
|
-
@roomba_proxy.expects(:stop)
|
69
|
-
@roomba.turn_right(10)
|
70
|
-
end
|
71
|
-
|
72
|
-
it 'Roomba#nudge_right' do
|
73
|
-
@roomba_proxy.expects(:drive).with(Artoo::Drivers::Roomba::Speed::SLOW, Artoo::Drivers::Roomba::Direction::CLOCKWISE, 0.25)
|
74
|
-
@roomba_proxy.expects(:stop)
|
75
|
-
@roomba.nudge_right
|
76
|
-
end
|
77
|
-
|
78
|
-
it 'Roomba#play' do
|
79
|
-
@connection.expects(:send_bytes).with([Artoo::Drivers::Roomba::Song::PLAY, 0])
|
80
|
-
@roomba.play(0)
|
81
|
-
end
|
82
|
-
|
83
|
-
it 'Roomba#song' do
|
84
|
-
@connection.expects(:send_bytes).with([Artoo::Drivers::Roomba::Song::SONG, 0, 3, Artoo::Drivers::Roomba::Note::B, Artoo::Drivers::Roomba::Note::QUARTER, Artoo::Drivers::Roomba::Note::B, Artoo::Drivers::Roomba::Note::QUARTER, Artoo::Drivers::Roomba::Note::B, Artoo::Drivers::Roomba::Note::HALF])
|
85
|
-
@roomba.song([[Artoo::Drivers::Roomba::Note::B, Artoo::Drivers::Roomba::Note::QUARTER], [Artoo::Drivers::Roomba::Note::B, Artoo::Drivers::Roomba::Note::QUARTER], [Artoo::Drivers::Roomba::Note::B, Artoo::Drivers::Roomba::Note::HALF]], 0)
|
86
|
-
end
|
87
|
-
end
|
data/test/drivers/servo_test.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
|
2
|
-
require 'artoo/drivers/servo'
|
3
|
-
|
4
|
-
describe Artoo::Drivers::Servo do
|
5
|
-
before do
|
6
|
-
@device = mock('device')
|
7
|
-
@device.stubs(:pin).returns(3)
|
8
|
-
@servo = Artoo::Drivers::Servo.new(:parent => @device)
|
9
|
-
|
10
|
-
@connection = mock('connection')
|
11
|
-
@connection.stubs(:set_pin_mode)
|
12
|
-
@connection.stubs(:analog_write)
|
13
|
-
# @connection.stubs(:digital_write)
|
14
|
-
@device.stubs(:connection).returns(@connection)
|
15
|
-
end
|
16
|
-
|
17
|
-
it "Servo#angle_to_span" do
|
18
|
-
@servo.angle_to_span(0).must_equal 0
|
19
|
-
@servo.angle_to_span(30).must_equal 42
|
20
|
-
@servo.angle_to_span(90).must_equal 127
|
21
|
-
@servo.angle_to_span(180).must_equal 255
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'Servo#move must be valid' do
|
25
|
-
invalid_angle = lambda { @servo2 = Artoo::Drivers::Servo.new(:parent => @device); @servo2.move(360) }
|
26
|
-
invalid_angle.must_raise RuntimeError
|
27
|
-
error = invalid_angle.call rescue $!
|
28
|
-
error.message.must_equal 'Servo angle must be an integer between 0-180'
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'Servo#min' do
|
32
|
-
@servo.min
|
33
|
-
@servo.current_angle.must_equal 0
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'Servo#center' do
|
37
|
-
@servo.center
|
38
|
-
@servo.current_angle.must_equal 90
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'Servo#max' do
|
42
|
-
@servo.max
|
43
|
-
@servo.current_angle.must_equal 180
|
44
|
-
end
|
45
|
-
end
|