brick-pi 0.0.1 → 0.1.0
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/README.md +11 -4
- data/ext/brick_pi/native.c +38 -0
- data/lib/brick_pi/bot.rb +1 -1
- data/lib/brick_pi/motor.rb +6 -0
- data/lib/brick_pi/sensor.rb +32 -0
- data/lib/brick_pi/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52a6145f0302f94616c86ac57f985b411ccee798
|
4
|
+
data.tar.gz: baa03984e55a2445f2351b46cef2c4a47baf0891
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f1caeaf3d1d7b2daad62daabaa713cb7522bb6debf10891949c28d619b2f65591f2c82ab5b8df88da1372d697b84c2ad4597a50550bf4dd22aaffa10f2a2ab6
|
7
|
+
data.tar.gz: f0d2e46ab5af41b6315e3315a939a239f624bba3b05daf625fbf5fe01ee902f1f9350909bbf25155adc808921f49a4d6beb961714277b74d4a4c493baab26fef
|
data/README.md
CHANGED
@@ -2,14 +2,21 @@
|
|
2
2
|
|
3
3
|
ruby wrappers for the BrickPi Lego Mindstorms C library
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
## What you need:
|
6
|
+
|
7
|
+
You need to have a few things to use this:
|
8
|
+
|
9
|
+
- The wonderful [BrickPi](http://www.dexterindustries.com/BrickPi.html) from Dexter Industries
|
10
|
+
- A Raspberry Pi (if you didn't get one with the BrickPi)
|
11
|
+
- Lego Mindstorms NXT 2.0 motors and/or sensors
|
7
12
|
|
8
13
|
## Installation
|
9
14
|
|
15
|
+
**Note: This gem will currently only install on a Raspberry Pi set up with BrickPi software. It relies on the `WiringPi.h` C program to function and compile.
|
16
|
+
|
10
17
|
Add this line to your application's Gemfile:
|
11
18
|
|
12
|
-
gem '
|
19
|
+
gem 'brick-pi'
|
13
20
|
|
14
21
|
And then execute:
|
15
22
|
|
@@ -17,7 +24,7 @@ And then execute:
|
|
17
24
|
|
18
25
|
Or install it yourself as:
|
19
26
|
|
20
|
-
$ gem install
|
27
|
+
$ gem install brick-pi
|
21
28
|
|
22
29
|
## Usage
|
23
30
|
|
data/ext/brick_pi/native.c
CHANGED
@@ -5,6 +5,11 @@
|
|
5
5
|
VALUE bprb_BrickPiSetup(VALUE self) {
|
6
6
|
return INT2FIX(BrickPiSetup());
|
7
7
|
}
|
8
|
+
|
9
|
+
VALUE bprb_BrickPiSetupSensors(VALUE self) {
|
10
|
+
return INT2FIX(BrickPiSetupSensors());
|
11
|
+
}
|
12
|
+
|
8
13
|
VALUE bprb_ClearTick(VALUE self) {
|
9
14
|
return INT2FIX(ClearTick());
|
10
15
|
}
|
@@ -32,6 +37,22 @@ VALUE bprb_Timeout_set(VALUE self, VALUE timeout) {
|
|
32
37
|
return timeout;
|
33
38
|
}
|
34
39
|
|
40
|
+
VALUE bprb_SensorType_set(VALUE self, VALUE key, VALUE value) {
|
41
|
+
int index = FIX2INT(key);
|
42
|
+
BrickPi.SensorType[index] = FIX2INT(value);
|
43
|
+
return value;
|
44
|
+
}
|
45
|
+
|
46
|
+
VALUE bprb_Sensor_get(VALUE self, VALUE key) {
|
47
|
+
int index = FIX2INT(key);
|
48
|
+
return INT2FIX(BrickPi.Sensor[index]);
|
49
|
+
}
|
50
|
+
|
51
|
+
VALUE bprb_Encoder_get(VALUE self, VALUE key) {
|
52
|
+
int index = FIX2INT(key);
|
53
|
+
return INT2FIX(BrickPi.Encoder[index]);
|
54
|
+
}
|
55
|
+
|
35
56
|
VALUE bprb_BrickPiSetTimeout(VALUE self) {
|
36
57
|
return INT2FIX(BrickPiSetTimeout());
|
37
58
|
}
|
@@ -44,6 +65,7 @@ void Init_native() {
|
|
44
65
|
VALUE BrickPi = rb_define_module("BrickPi");
|
45
66
|
VALUE Native = rb_define_module_under(BrickPi, "Native");
|
46
67
|
rb_define_singleton_method(Native, "BrickPiSetup", bprb_BrickPiSetup, 0);
|
68
|
+
rb_define_singleton_method(Native, "BrickPiSetupSensors", bprb_BrickPiSetupSensors, 0);
|
47
69
|
rb_define_singleton_method(Native, "ClearTick", bprb_ClearTick, 0);
|
48
70
|
VALUE MotorSpeed = rb_define_module_under(Native, "MotorSpeed");
|
49
71
|
rb_define_singleton_method(MotorSpeed, "[]=", bprb_MotorSpeed_set, 2);
|
@@ -51,6 +73,13 @@ void Init_native() {
|
|
51
73
|
rb_define_singleton_method(MotorEnable, "[]=", bprb_MotorEnable_set, 2);
|
52
74
|
VALUE Address = rb_define_module_under(Native, "Address");
|
53
75
|
rb_define_singleton_method(Address, "[]=", bprb_Address_set, 2);
|
76
|
+
VALUE SensorType = rb_define_module_under(Native, "SensorType");
|
77
|
+
rb_define_singleton_method(SensorType, "[]=", bprb_SensorType_set, 2);
|
78
|
+
VALUE Sensor = rb_define_module_under(Native, "Sensor");
|
79
|
+
rb_define_singleton_method(Sensor, "[]", bprb_Sensor_get, 1);
|
80
|
+
VALUE Encoder = rb_define_module_under(Native, "Encoder");
|
81
|
+
rb_define_singleton_method(Encoder, "[]", bprb_Encoder_get, 1);
|
82
|
+
|
54
83
|
rb_define_singleton_method(Native, "Timeout=", bprb_Timeout_set, 1);
|
55
84
|
rb_define_singleton_method(Native, "BrickPiSetTimeout", bprb_BrickPiSetTimeout, 0);
|
56
85
|
rb_define_singleton_method(Native, "BrickPiUpdateValues", bprb_BrickPiUpdateValues, 0);
|
@@ -62,4 +91,13 @@ void Init_native() {
|
|
62
91
|
rb_define_const(Native, "PORT_2", INT2FIX(1));
|
63
92
|
rb_define_const(Native, "PORT_3", INT2FIX(2));
|
64
93
|
rb_define_const(Native, "PORT_4", INT2FIX(3));
|
94
|
+
rb_define_const(Native, "US_PORT", INT2FIX(2));
|
95
|
+
rb_define_const(Native, "TYPE_SENSOR_TOUCH", INT2FIX(32));
|
96
|
+
rb_define_const(Native, "TYPE_SENSOR_ULTRASONIC_CONT", INT2FIX(33));
|
97
|
+
rb_define_const(Native, "TYPE_SENSOR_ULTRASONIC_SS", INT2FIX(34));
|
98
|
+
rb_define_const(Native, "TYPE_SENSOR_COLOR_FULL", INT2FIX(36));
|
99
|
+
rb_define_const(Native, "TYPE_SENSOR_COLOR_RED", INT2FIX(37));
|
100
|
+
rb_define_const(Native, "TYPE_SENSOR_COLOR_GREEN", INT2FIX(38));
|
101
|
+
rb_define_const(Native, "TYPE_SENSOR_COLOR_BLUE", INT2FIX(39));
|
102
|
+
rb_define_const(Native, "TYPE_SENSOR_COLOR_NONE", INT2FIX(40));
|
65
103
|
}
|
data/lib/brick_pi/bot.rb
CHANGED
data/lib/brick_pi/motor.rb
CHANGED
@@ -12,6 +12,12 @@ module BrickPi
|
|
12
12
|
Native::MotorSpeed[@port] = motor_speed
|
13
13
|
end
|
14
14
|
|
15
|
+
# Encoder reads the position of the motor in .5-degree increments,
|
16
|
+
# Divide by 2 to get degrees
|
17
|
+
def position
|
18
|
+
Native::Encoder[@port] / 2
|
19
|
+
end
|
20
|
+
|
15
21
|
def stop
|
16
22
|
spin 0
|
17
23
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module BrickPi
|
2
|
+
class Sensor
|
3
|
+
SENSOR_TYPES = {
|
4
|
+
touch: Native::TYPE_SENSOR_TOUCH,
|
5
|
+
ultrasonic: Native::TYPE_SENSOR_ULTRASONIC_CONT,
|
6
|
+
color: Native::TYPE_SENSOR_COLOR_FULL,
|
7
|
+
color_red: Native::TYPE_SENSOR_COLOR_RED,
|
8
|
+
color_green: Native::TYPE_SENSOR_COLOR_GREEN,
|
9
|
+
color_blue: Native::TYPE_SENSOR_COLOR_BLUE,
|
10
|
+
color_none: Native::TYPE_SENSOR_COLOR_NONE
|
11
|
+
}
|
12
|
+
|
13
|
+
PORTS = {
|
14
|
+
port_1: Native::PORT_1,
|
15
|
+
port_2: Native::PORT_2,
|
16
|
+
port_3: Native::PORT_3,
|
17
|
+
port_4: Native::PORT_4
|
18
|
+
}
|
19
|
+
|
20
|
+
# So you can be all like `BrickPi::Sensor.new(:port_3, :ultrasonic)`
|
21
|
+
def initialize(port, sensor_type)
|
22
|
+
@port = port
|
23
|
+
@sensor_type = sensor_type
|
24
|
+
Native::SensorType[PORT_MAP[@port]] = SENSOR_TYPES[@sensor_type]
|
25
|
+
Native::BrickPiSetupSensors()
|
26
|
+
end
|
27
|
+
|
28
|
+
def read
|
29
|
+
Native::Sensor[@port]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/brick_pi/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brick-pi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Hays
|
@@ -63,6 +63,7 @@ files:
|
|
63
63
|
- lib/brick_pi.rb
|
64
64
|
- lib/brick_pi/bot.rb
|
65
65
|
- lib/brick_pi/motor.rb
|
66
|
+
- lib/brick_pi/sensor.rb
|
66
67
|
- lib/brick_pi/version.rb
|
67
68
|
homepage: ''
|
68
69
|
licenses:
|