smalruby 0.0.29-x86-mingw32 → 0.0.30-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of smalruby might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/lib/smalruby/character.rb +6 -0
- data/lib/smalruby/hardware/button.rb +17 -5
- data/lib/smalruby/hardware/dino/fix_gets.rb +34 -7
- data/lib/smalruby/hardware/motor_driver.rb +77 -0
- data/lib/smalruby/hardware/two_wheel_drive_car.rb +54 -19
- data/lib/smalruby/hardware.rb +1 -0
- data/lib/smalruby/version.rb +1 -1
- data/samples/hardware_button.rb +2 -0
- data/samples/hardware_button_with_pullup.rb +32 -0
- data/samples/hardware_motor_driver.rb +110 -0
- data/samples/hardware_two_wheel_drive_car.rb +40 -12
- data/samples/hardware_two_wheel_drive_car_run.rb +7 -10
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5785c85deafb1324b46485d22248cc2bf7d58892
|
4
|
+
data.tar.gz: e79c278f6c33d10c495297caf8631c94088fa8c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7388a304897a11852fdcfedf531f22f9c632ae040982970d1ab12a499e8b7fb63e3a6ac320a70219142b0fd123ec2c11253bec36562929f3dec3aee6b90820fa
|
7
|
+
data.tar.gz: 2721ef1c9e70c0ddff57edf8178458e22377d84071367b647e9ad11e749e64020aab615fb2bd3491b28987fddecd55cd1f53844d51b34e0a3b925f0a7276ba03
|
data/lib/smalruby/character.rb
CHANGED
@@ -391,6 +391,11 @@ module Smalruby
|
|
391
391
|
Hardware.create_hardware(Hardware::TwoWheelDriveCar, pin)
|
392
392
|
end
|
393
393
|
|
394
|
+
# モータードライバ
|
395
|
+
def motor_driver(pin)
|
396
|
+
Hardware.create_hardware(Hardware::MotorDriver, pin)
|
397
|
+
end
|
398
|
+
|
394
399
|
# ボタン
|
395
400
|
def button(pin)
|
396
401
|
Hardware.create_hardware(Hardware::Button, pin)
|
@@ -534,6 +539,7 @@ module Smalruby
|
|
534
539
|
private
|
535
540
|
|
536
541
|
def draw_pen(left, top, right, bottom)
|
542
|
+
return if !visible || vanished?
|
537
543
|
world.current_stage.line(left: left, top: top,
|
538
544
|
right: right, bottom: bottom,
|
539
545
|
color: @pen_color)
|
@@ -6,17 +6,29 @@ module Smalruby
|
|
6
6
|
# ボタンを表現するクラス
|
7
7
|
class Button < Dino::Components::Button
|
8
8
|
def initialize(options)
|
9
|
-
|
9
|
+
@using_pullup = true
|
10
|
+
super(board: world.board, pin: Pin.smalruby_to_dino(options[:pin]),
|
11
|
+
pullup: true)
|
12
|
+
end
|
13
|
+
|
14
|
+
# プルアップ抵抗を使わない
|
15
|
+
def not_use_pullup
|
16
|
+
@using_pullup = false
|
17
|
+
board.set_pullup(pin, false)
|
18
|
+
end
|
19
|
+
|
20
|
+
def stop
|
21
|
+
@board.remove_digital_hardware(self)
|
10
22
|
end
|
11
23
|
|
12
24
|
def up?
|
13
|
-
@state == UP
|
25
|
+
@using_pullup ? @state == DOWN : @state == UP
|
14
26
|
end
|
15
27
|
|
16
28
|
alias_method :on?, :up?
|
17
29
|
|
18
30
|
def down?
|
19
|
-
|
31
|
+
!up?
|
20
32
|
end
|
21
33
|
|
22
34
|
alias_method :off?, :down?
|
@@ -27,8 +39,8 @@ module Smalruby
|
|
27
39
|
super(options)
|
28
40
|
|
29
41
|
s_pin = Pin.dino_to_smalruby(pin)
|
30
|
-
down { world.button_changed(s_pin, :down) }
|
31
|
-
up { world.button_changed(s_pin, :up) }
|
42
|
+
down { world.button_changed(s_pin, (@using_pullup ? :up : :down)) }
|
43
|
+
up { world.button_changed(s_pin, (@using_pullup ? :down : :up)) }
|
32
44
|
end
|
33
45
|
end
|
34
46
|
end
|
@@ -7,16 +7,43 @@ if Util.windows?
|
|
7
7
|
require 'dino'
|
8
8
|
|
9
9
|
if Dino::VERSION >= '0.11'
|
10
|
+
require 'mutex_m'
|
11
|
+
|
10
12
|
class Dino::TxRx::Base
|
13
|
+
def write(message)
|
14
|
+
loop do
|
15
|
+
if IO.select(nil, [io], nil)
|
16
|
+
io.synchronize { io.syswrite(message) }
|
17
|
+
break
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
11
22
|
def gets(timeout = 0.005)
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
23
|
+
@buffer ||= ""
|
24
|
+
if !@buffer.include?("\n")
|
25
|
+
return nil unless IO.select([io], nil, nil, timeout)
|
26
|
+
io.synchronize do
|
27
|
+
io.read_timeout = (timeout * 1000).to_i
|
28
|
+
end
|
29
|
+
bytes = []
|
30
|
+
until (x = io.synchronize { io.getbyte }).nil?
|
31
|
+
bytes.push(x)
|
32
|
+
end
|
33
|
+
return nil if bytes.empty?
|
34
|
+
@buffer += bytes.pack("C*")
|
17
35
|
end
|
18
|
-
|
19
|
-
|
36
|
+
@buffer.slice!(/\A[^\n]*\n/)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class Dino::TxRx::Serial
|
41
|
+
def io
|
42
|
+
unless @io
|
43
|
+
@io = connect
|
44
|
+
@io.extend(Mutex_m)
|
45
|
+
end
|
46
|
+
@io
|
20
47
|
end
|
21
48
|
end
|
22
49
|
elsif Dino::VERSION >= '0.10'
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'smalruby/hardware'
|
3
|
+
|
4
|
+
module Smalruby
|
5
|
+
module Hardware
|
6
|
+
# モータードライバを表現するクラス
|
7
|
+
#
|
8
|
+
# モータードライバのVrefにはPWM出力できるD3, D5, D6, D9, D10, D11の
|
9
|
+
# いずれかを接続し、Vin1、Vin2はVrefからの連番(例えば、VrefがD3であ
|
10
|
+
# ればVin1、Vin2はそれぞれD4, D5)を接続してください。
|
11
|
+
#
|
12
|
+
# 動作確認済みのモータードライバの一覧
|
13
|
+
# * TOSHIBA
|
14
|
+
# * TA7291P
|
15
|
+
class MotorDriver < Dino::Components::BaseComponent
|
16
|
+
# モーターの回転速度の割合(0~100%)
|
17
|
+
attr_reader :speed
|
18
|
+
|
19
|
+
def initialize(options)
|
20
|
+
pin = Pin.smalruby_to_dino(options[:pin])
|
21
|
+
case pin
|
22
|
+
when 3, 5, 6, 9, 10, 11
|
23
|
+
super(board: world.board, pin: (pin...(pin + 3)).to_a)
|
24
|
+
else
|
25
|
+
fail "モーターのピン番号が間違っています: {options[:pin]}"
|
26
|
+
end
|
27
|
+
self.speed = options[:speed] || 100
|
28
|
+
end
|
29
|
+
|
30
|
+
def speed=(val)
|
31
|
+
@speed = val
|
32
|
+
if @speed < 0
|
33
|
+
@speed = 0
|
34
|
+
elsif @speed > 100
|
35
|
+
@speed = 100
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# 正転する
|
40
|
+
def forward
|
41
|
+
write_pins(speed, 100, 0)
|
42
|
+
end
|
43
|
+
|
44
|
+
# 逆転する
|
45
|
+
def backward
|
46
|
+
write_pins(speed, 0, 100)
|
47
|
+
end
|
48
|
+
|
49
|
+
# 停止する
|
50
|
+
def stop
|
51
|
+
write_pins(0, 0, 0)
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def after_initialize(_ = {})
|
57
|
+
pins.each do |pin|
|
58
|
+
set_pin_mode(pin, :out)
|
59
|
+
end
|
60
|
+
stop
|
61
|
+
end
|
62
|
+
|
63
|
+
def write_pins(*levels)
|
64
|
+
levels.each.with_index do |level, i|
|
65
|
+
case level
|
66
|
+
when 0
|
67
|
+
digital_write(pins[i], Dino::Board::LOW)
|
68
|
+
when 100
|
69
|
+
digital_write(pins[i], Dino::Board::HIGH)
|
70
|
+
else
|
71
|
+
analog_write(pins[i], (Dino::Board::HIGH * level / 100.0).round)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -5,35 +5,58 @@ module Smalruby
|
|
5
5
|
module Hardware
|
6
6
|
# 2WD車のモーターを表現するクラス
|
7
7
|
class TwoWheelDriveCar < Dino::Components::BaseComponent
|
8
|
+
# 左のモーターの速度%
|
9
|
+
attr_reader :left_speed
|
10
|
+
|
11
|
+
# 右のモーターの速度%
|
12
|
+
attr_reader :right_speed
|
13
|
+
|
8
14
|
def initialize(options)
|
15
|
+
@left_speed = 100
|
16
|
+
@right_speed = 100
|
17
|
+
|
9
18
|
pin = Pin.smalruby_to_dino(options[:pin])
|
10
19
|
case pin
|
11
|
-
when
|
20
|
+
when 5
|
21
|
+
super(board: world.board, pin: [5, 6, 9, 10])
|
22
|
+
when 6
|
12
23
|
super(board: world.board, pin: (pin...(pin + 4)).to_a)
|
13
24
|
else
|
14
25
|
fail "モーターのピン番号が間違っています: {options[:pin]}"
|
15
26
|
end
|
16
27
|
end
|
17
28
|
|
29
|
+
[:left, :right].each do |lor|
|
30
|
+
define_method("#{lor}_speed=") do |val|
|
31
|
+
name = "@#{lor}_speed"
|
32
|
+
if val < 0
|
33
|
+
instance_variable_set(name, 0)
|
34
|
+
elsif val > 100
|
35
|
+
instance_variable_set(name, 100)
|
36
|
+
else
|
37
|
+
instance_variable_set(name, val)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
18
42
|
# 前進する
|
19
|
-
def forward
|
20
|
-
|
21
|
-
digital_write_pins(left_level, 0, right_level, 0)
|
43
|
+
def forward
|
44
|
+
digital_write_pins(left_speed, 0, right_speed, 0)
|
22
45
|
end
|
23
46
|
|
24
47
|
# 後退する
|
25
|
-
def backward
|
26
|
-
digital_write_pins(0,
|
48
|
+
def backward
|
49
|
+
digital_write_pins(0, left_speed, 0, right_speed)
|
27
50
|
end
|
28
51
|
|
29
52
|
# 左に曲がる
|
30
|
-
def turn_left
|
31
|
-
digital_write_pins(0,
|
53
|
+
def turn_left
|
54
|
+
digital_write_pins(0, left_speed, right_speed, 0)
|
32
55
|
end
|
33
56
|
|
34
57
|
# 右に曲がる
|
35
|
-
def turn_right
|
36
|
-
digital_write_pins(
|
58
|
+
def turn_right
|
59
|
+
digital_write_pins(left_speed, 0, 0, right_speed)
|
37
60
|
end
|
38
61
|
|
39
62
|
# 停止する
|
@@ -46,12 +69,10 @@ module Smalruby
|
|
46
69
|
defaults = {
|
47
70
|
command: 'forward',
|
48
71
|
sec: nil,
|
49
|
-
left_level: 100,
|
50
|
-
right_level: 100,
|
51
72
|
}
|
52
73
|
opts = Util.process_options(options, defaults)
|
53
74
|
|
54
|
-
send(opts[:command]
|
75
|
+
send(opts[:command])
|
55
76
|
sleep(opts[:sec]) if opts[:sec]
|
56
77
|
stop unless opts[:command] == :stop
|
57
78
|
end
|
@@ -65,12 +86,26 @@ module Smalruby
|
|
65
86
|
stop
|
66
87
|
end
|
67
88
|
|
68
|
-
def digital_write_pins(*
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
89
|
+
def digital_write_pins(*speeds)
|
90
|
+
if pins.first == 5
|
91
|
+
speeds.each.with_index do |speed, i|
|
92
|
+
level = (Dino::Board::HIGH * speed / 100.0).floor
|
93
|
+
case level
|
94
|
+
when 0
|
95
|
+
digital_write(pins[i], Dino::Board::LOW)
|
96
|
+
when 100
|
97
|
+
digital_write(pins[i], Dino::Board::HIGH)
|
98
|
+
else
|
99
|
+
analog_write(pins[i], level)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
else
|
103
|
+
2.times do
|
104
|
+
speeds.each.with_index do
|
105
|
+
|speed, i|
|
106
|
+
digital_write(pins[i], (Dino::Board::HIGH * speed / 100.0).floor)
|
107
|
+
sleep(0.05) if i.odd?
|
108
|
+
end
|
74
109
|
end
|
75
110
|
end
|
76
111
|
end
|
data/lib/smalruby/hardware.rb
CHANGED
data/lib/smalruby/version.rb
CHANGED
data/samples/hardware_button.rb
CHANGED
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
DESCRIPTION = <<EOS
|
4
|
+
ハードウェアのボタン(プルアップ)を操作します
|
5
|
+
EOS
|
6
|
+
|
7
|
+
# デジタルの3番ピンに直接ボタンを接続してください。
|
8
|
+
|
9
|
+
require 'smalruby'
|
10
|
+
|
11
|
+
init_hardware
|
12
|
+
|
13
|
+
stage1 = Stage.new(color: 'white')
|
14
|
+
frog1 = Character.new(costume: 'frog1.png', x: 300, y: 200, visible: false)
|
15
|
+
|
16
|
+
stage1.on(:start) do
|
17
|
+
draw_font(string: DESCRIPTION, color: 'black')
|
18
|
+
|
19
|
+
if button('D3').up?
|
20
|
+
frog1.visible = false
|
21
|
+
else
|
22
|
+
frog1.visible = true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
stage1.on(:button_down, 'D3') do
|
27
|
+
frog1.visible = true
|
28
|
+
end
|
29
|
+
|
30
|
+
stage1.on(:button_up, 'D3') do
|
31
|
+
frog1.visible = false
|
32
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
DESCRIPTION = <<EOS
|
4
|
+
モータードライバ(TA7291P)を操作します
|
5
|
+
EOS
|
6
|
+
|
7
|
+
# デジタルの6~11番ピンをそれぞれ左右のモーター用のモータードライバ
|
8
|
+
# (TA7291P)の4・5・6に接続してください。
|
9
|
+
|
10
|
+
require 'smalruby'
|
11
|
+
|
12
|
+
init_hardware
|
13
|
+
|
14
|
+
stage1 = Stage.new(color: 'white')
|
15
|
+
|
16
|
+
stage1.on(:start) do
|
17
|
+
fill(color: 'white')
|
18
|
+
draw_font(string: DESCRIPTION, color: 'black')
|
19
|
+
|
20
|
+
motor_driver('D6').speed = 100
|
21
|
+
motor_driver('D9').speed = 100
|
22
|
+
end
|
23
|
+
|
24
|
+
stage1.on(:key_down, K_UP) do
|
25
|
+
fill(color: 'white')
|
26
|
+
draw_font(string: '進む', color: 'black')
|
27
|
+
|
28
|
+
motor_driver('D6').forward
|
29
|
+
motor_driver('D9').forward
|
30
|
+
|
31
|
+
await until !Input.key_down?(K_UP)
|
32
|
+
|
33
|
+
fill(color: 'white')
|
34
|
+
|
35
|
+
motor_driver('D6').stop
|
36
|
+
motor_driver('D9').stop
|
37
|
+
end
|
38
|
+
|
39
|
+
stage1.on(:key_down, K_DOWN) do
|
40
|
+
fill(color: 'white')
|
41
|
+
draw_font(string: 'バックする', color: 'black')
|
42
|
+
|
43
|
+
motor_driver('D6').backward
|
44
|
+
motor_driver('D9').backward
|
45
|
+
|
46
|
+
await until !Input.key_down?(K_DOWN)
|
47
|
+
|
48
|
+
fill(color: 'white')
|
49
|
+
|
50
|
+
motor_driver('D6').stop
|
51
|
+
motor_driver('D9').stop
|
52
|
+
end
|
53
|
+
|
54
|
+
stage1.on(:key_down, K_LEFT) do
|
55
|
+
fill(color: 'white')
|
56
|
+
draw_font(string: '左に旋回する', color: 'black')
|
57
|
+
|
58
|
+
motor_driver('D6').backward
|
59
|
+
motor_driver('D9').forward
|
60
|
+
|
61
|
+
await until !Input.key_down?(K_LEFT)
|
62
|
+
|
63
|
+
fill(color: 'white')
|
64
|
+
|
65
|
+
motor_driver('D6').stop
|
66
|
+
motor_driver('D9').stop
|
67
|
+
end
|
68
|
+
|
69
|
+
stage1.on(:key_down, K_RIGHT) do
|
70
|
+
fill(color: 'white')
|
71
|
+
draw_font(string: '右に旋回する', color: 'black')
|
72
|
+
|
73
|
+
motor_driver('D6').forward
|
74
|
+
motor_driver('D9').backward
|
75
|
+
|
76
|
+
await until !Input.key_down?(K_RIGHT)
|
77
|
+
|
78
|
+
fill(color: 'white')
|
79
|
+
|
80
|
+
motor_driver('D6').stop
|
81
|
+
motor_driver('D9').stop
|
82
|
+
end
|
83
|
+
|
84
|
+
stage1.on(:key_push, K_W) do
|
85
|
+
motor_driver('D6').speed += 10
|
86
|
+
|
87
|
+
fill(color: 'white')
|
88
|
+
draw_font(string: "左の速度: #{motor_driver('D6').speed}%", color: 'black')
|
89
|
+
end
|
90
|
+
|
91
|
+
stage1.on(:key_push, K_S) do
|
92
|
+
motor_driver('D6').speed -= 10
|
93
|
+
|
94
|
+
fill(color: 'white')
|
95
|
+
draw_font(string: "左の速度: #{motor_driver('D6').speed}%", color: 'black')
|
96
|
+
end
|
97
|
+
|
98
|
+
stage1.on(:key_push, K_O) do
|
99
|
+
motor_driver('D9').speed += 10
|
100
|
+
|
101
|
+
fill(color: 'white')
|
102
|
+
draw_font(string: "右の速度: #{motor_driver('D9').speed}%", color: 'black')
|
103
|
+
end
|
104
|
+
|
105
|
+
stage1.on(:key_push, K_L) do
|
106
|
+
motor_driver('D9').speed -= 10
|
107
|
+
|
108
|
+
fill(color: 'white')
|
109
|
+
draw_font(string: "右の速度: #{motor_driver('D9').speed}%", color: 'black')
|
110
|
+
end
|
@@ -4,8 +4,8 @@ DESCRIPTION = <<EOS
|
|
4
4
|
2WD車のタイヤ(モーター)を操作します
|
5
5
|
EOS
|
6
6
|
|
7
|
-
#
|
8
|
-
#
|
7
|
+
# PWM出力可能なデジタルの5番・6番ピンに左のモーター、10番・9番ピンに右
|
8
|
+
# のモーターを接続してください。
|
9
9
|
|
10
10
|
require 'smalruby'
|
11
11
|
|
@@ -17,15 +17,43 @@ stage1.on(:start) do
|
|
17
17
|
draw_font(string: DESCRIPTION, color: 'black')
|
18
18
|
|
19
19
|
loop do
|
20
|
-
two_wheel_drive_car('
|
21
|
-
sleep(
|
22
|
-
two_wheel_drive_car('
|
23
|
-
sleep(
|
24
|
-
two_wheel_drive_car('
|
25
|
-
sleep(
|
26
|
-
two_wheel_drive_car('
|
27
|
-
sleep(
|
28
|
-
two_wheel_drive_car('
|
29
|
-
sleep(
|
20
|
+
two_wheel_drive_car('D5').forward
|
21
|
+
sleep(2)
|
22
|
+
two_wheel_drive_car('D5').backward
|
23
|
+
sleep(2)
|
24
|
+
two_wheel_drive_car('D5').turn_left
|
25
|
+
sleep(0.5)
|
26
|
+
two_wheel_drive_car('D5').turn_right
|
27
|
+
sleep(0.5)
|
28
|
+
two_wheel_drive_car('D5').stop
|
29
|
+
sleep(1)
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
stage1.on(:key_push, K_E) do
|
34
|
+
two_wheel_drive_car('D5').left_speed += 1
|
35
|
+
|
36
|
+
fill(color: 'white')
|
37
|
+
draw_font(string: "速度%: 左< #{two_wheel_drive_car('D5').left_speed} > 右< #{two_wheel_drive_car('D5').right_speed} >", color: 'black')
|
38
|
+
end
|
39
|
+
|
40
|
+
stage1.on(:key_push, K_D) do
|
41
|
+
two_wheel_drive_car('D5').left_speed -= 1
|
42
|
+
|
43
|
+
fill(color: 'white')
|
44
|
+
draw_font(string: "速度%: 左< #{two_wheel_drive_car('D5').left_speed} > 右< #{two_wheel_drive_car('D5').right_speed} >", color: 'black')
|
45
|
+
end
|
46
|
+
|
47
|
+
stage1.on(:key_push, K_UP) do
|
48
|
+
two_wheel_drive_car('D5').right_speed += 1
|
49
|
+
|
50
|
+
fill(color: 'white')
|
51
|
+
draw_font(string: "速度%: 左< #{two_wheel_drive_car('D5').left_speed} > 右< #{two_wheel_drive_car('D5').right_speed} >", color: 'black')
|
52
|
+
end
|
53
|
+
|
54
|
+
stage1.on(:key_push, K_DOWN) do
|
55
|
+
two_wheel_drive_car('D5').right_speed -= 1
|
56
|
+
|
57
|
+
fill(color: 'white')
|
58
|
+
draw_font(string: "速度%: 左< #{two_wheel_drive_car('D5').left_speed} > 右< #{two_wheel_drive_car('D5').right_speed} >", color: 'black')
|
59
|
+
end
|
@@ -4,8 +4,8 @@ DESCRIPTION = <<EOS
|
|
4
4
|
2WD車のタイヤ(モーター)を操作します
|
5
5
|
EOS
|
6
6
|
|
7
|
-
#
|
8
|
-
#
|
7
|
+
# PWM出力可能なデジタルの5番・6番ピンに左のモーター、10番・9番ピンに右
|
8
|
+
# のモーターを接続してください。
|
9
9
|
|
10
10
|
require 'smalruby'
|
11
11
|
|
@@ -17,13 +17,10 @@ stage1.on(:start) do
|
|
17
17
|
draw_font(string: DESCRIPTION, color: 'black')
|
18
18
|
|
19
19
|
loop do
|
20
|
-
two_wheel_drive_car('
|
21
|
-
|
22
|
-
two_wheel_drive_car('
|
23
|
-
|
24
|
-
two_wheel_drive_car('
|
25
|
-
sleep(1)
|
26
|
-
two_wheel_drive_car('D6').run(command: 'turn_right', sec: 2, left_level: 85, right_level: 100)
|
27
|
-
sleep(1)
|
20
|
+
two_wheel_drive_car('D5').run(command: 'forward', sec: 2)
|
21
|
+
two_wheel_drive_car('D5').run(command: 'backward', sec: 2)
|
22
|
+
two_wheel_drive_car('D5').run(command: 'turn_left', sec: 2)
|
23
|
+
two_wheel_drive_car('D5').run(command: 'turn_right', sec: 2)
|
24
|
+
two_wheel_drive_car('D5').run(command: 'stop', sec: 2)
|
28
25
|
end
|
29
26
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smalruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.30
|
5
5
|
platform: x86-mingw32
|
6
6
|
authors:
|
7
7
|
- Kouji Takao
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -259,6 +259,7 @@ files:
|
|
259
259
|
- lib/smalruby/hardware/button.rb
|
260
260
|
- lib/smalruby/hardware/dino/fix_gets.rb
|
261
261
|
- lib/smalruby/hardware/led.rb
|
262
|
+
- lib/smalruby/hardware/motor_driver.rb
|
262
263
|
- lib/smalruby/hardware/null_hardware.rb
|
263
264
|
- lib/smalruby/hardware/pin.rb
|
264
265
|
- lib/smalruby/hardware/rgb_led_anode.rb
|
@@ -281,7 +282,9 @@ files:
|
|
281
282
|
- samples/extra_car.png
|
282
283
|
- samples/finding_cars.rb
|
283
284
|
- samples/hardware_button.rb
|
285
|
+
- samples/hardware_button_with_pullup.rb
|
284
286
|
- samples/hardware_led.rb
|
287
|
+
- samples/hardware_motor_driver.rb
|
285
288
|
- samples/hardware_rgb_led_anode.rb
|
286
289
|
- samples/hardware_rgb_led_cathode.rb
|
287
290
|
- samples/hardware_sensor.rb
|