madrona-rad 0.3.5 → 0.3.6

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.
data/History.txt CHANGED
@@ -1,3 +1,6 @@
1
+ == 0.3.6 2009-08-18
2
+ - added support for multiple boards
3
+
1
4
  == 0.3.5 2009-08-16
2
5
  - added support for ruby 1.9 with help of Zen Spider
3
6
 
data/README.rdoc CHANGED
@@ -12,8 +12,7 @@ See also the Arduino Software reference: http://www.arduino.cc/en/Reference/Home
12
12
 
13
13
  ==Examples
14
14
 
15
- See the examples directory for lots of examples of RAD in action:
16
- http://github.com/atduskgreg/rad/tree/master/lib/examples
15
+ See the examples directory for lots of examples of RAD in action
17
16
 
18
17
  The atduskgreg/rad wiki also contains a growing library of examples and hardware tutorials:
19
18
  http://github.com/atduskgreg/rad/wikis
@@ -46,7 +45,7 @@ Write a sketch that will blink a single LED every 500ms:
46
45
  end
47
46
  end
48
47
 
49
- Attach your Arduino and use rake to complile and upload your sketch:
48
+ Attach your Arduino and use rake to compile and upload your sketch:
50
49
 
51
50
  $ rake make:upload
52
51
 
@@ -58,6 +57,8 @@ Installing RAD and the Arduino software on Linux can be a little more difficult
58
57
 
59
58
  And RAD will do its best to get the Arduino software installed on your system.
60
59
 
60
+ For OS X, Arduino should be installed in your applications directory -- install the intel or power pc drivers in /drivers
61
+
61
62
  ==Get Involved
62
63
 
63
64
  Cheers? Jeers? Wanna help out? Contact Greg Borenstein: greg [dot] borenstein [at] gmail [dot] com
data/bin/rad CHANGED
@@ -28,7 +28,7 @@ class OptionParser #:nodoc:
28
28
  "physical_reset" => false
29
29
  },
30
30
  "software" => {
31
- "arduino_root" => "/Applications/arduino-0012"
31
+ "arduino_root" => "/Applications/arduino-0015"
32
32
  }
33
33
  }
34
34
 
@@ -261,9 +261,13 @@ else
261
261
  # example sketches can be uploaded to your arduino with
262
262
  # rake make:upload sketch=examples/hello_world
263
263
  # just replace hello_world with other examples
264
+ #
265
+ # hello world (replace with your code):
264
266
 
267
+ output_pin 13, :as => :led
268
+
265
269
  def loop
266
- # your code here
270
+ blink led, 100
267
271
  end
268
272
 
269
273
  end
@@ -282,6 +286,20 @@ else
282
286
  puts "Added #{sketch_name}/config"
283
287
 
284
288
  File.open("#{sketch_name}/config/hardware.yml", 'w') do |file|
289
+ file << "##############################################################
290
+ # Today's MCU Choices (replace the mcu with your arduino board)
291
+ # atmega8 => Arduino NG or older w/ ATmega8
292
+ # atmega168 => Arduino NG or older w/ ATmega168
293
+ # mini => Arduino Mini
294
+ # bt => Arduino BT
295
+ # diecimila => Arduino Diecimila or Duemilanove w/ ATmega168
296
+ # nano => Arduino Nano
297
+ # lilypad => LilyPad Arduino
298
+ # pro => Arduino Pro or Pro Mini (8 MHz)
299
+ # atmega328 => Arduino Duemilanove w/ ATmega328
300
+ # mega => Arduino Mega
301
+
302
+ "
285
303
  file << options["hardware"].to_yaml
286
304
  end
287
305
  puts "Added #{sketch_name}/config/hardware.yml"
@@ -296,7 +314,14 @@ else
296
314
 
297
315
  puts "***************************************************"
298
316
  puts "*** Please note: This version supports ***"
299
- puts "*** Arduino 12 only! ***"
317
+ puts "*** Arduino 15 only! ***"
318
+ puts "*** ***"
319
+ puts "*** default configuration: diecimila ***"
320
+ puts "*** to change goto config/hardware ***"
321
+ puts "*** ***"
322
+ puts "*** using usb? ***"
323
+ puts "*** don't forget to install the drivers ***"
324
+ puts "*** ***"
300
325
  puts "*** run rad install arduino to upgrade ***"
301
326
  puts "***************************************************"
302
327
  end
@@ -1,5 +1,13 @@
1
1
  class BlinkMAddressAssignment < ArduinoSketch
2
2
 
3
+ # IMPORTANT -- This is one for four examples that fails with Ruby 1.9 support (latest ruby2c and parsetree)
4
+ # the failing example is commented out and replaced with this hello world until I have a chance to resolve the issue -- jd
5
+ output_pin 13, :as => :led
6
+
7
+ def loop
8
+ blink led, 100
9
+ x = 4
10
+ end
3
11
  # want to use more than one blink m?
4
12
  # since each blink m arrives with the same address,
5
13
  # we can't address each one individually
@@ -16,89 +24,89 @@ class BlinkMAddressAssignment < ArduinoSketch
16
24
  # if you need to, program an led to help with the timing
17
25
 
18
26
 
19
- @blink_m_start_address = 10
20
- @flag = false
21
- @addr1 = "10, byte"
22
- @addr2 = "11, byte"
23
- @addr3 = "12, byte"
24
-
25
- output_pin 19, :as => :wire, :device => :i2c, :enable => :true # reminder, true issues wire.begin
26
- input_pin 7, :as => :button_one, :device => :button
27
- input_pin 8, :as => :button_two, :device => :button
28
- input_pin 9, :as => :button_three, :device => :button
29
-
30
- output_pin 5, :as => :my_lcd, :device => :pa_lcd, :rate => 19200, :clear_screen => :true
31
-
32
- def setup
33
- delay 1000
34
- my_lcd.setxy 0,0, "bienvenue"
35
- delay 5000
36
- end
37
-
38
- def loop
39
-
40
- if @flag == false
41
- staging
42
- else
43
- test_address
44
- end
45
- delay 100
46
- end
47
-
48
- def staging
49
- my_lcd.setxy 0,0, "press button one to"
50
- my_lcd.setxy 0,1, "set address to "
51
- my_lcd.print @blink_m_start_address
52
- my_lcd.setxy 0,2, "or two for status"
53
- delay 60
54
- my_lcd.setxy 0,3, " "
55
- my_lcd.setxy 0,3
56
- 800.times do |i|
57
- return 0 if @flag == true
58
- my_lcd.print "." if i % 50 == 0
59
- delay 5
60
- if button_one.read_input
61
- assign_address
62
- elsif button_two.read_input
63
- test_address
64
- end
65
- end
66
- @blink_m_start_address += 1
67
- end
68
-
69
- def assign_address
70
- @flag = true
71
- my_lcd.clearscr "setting to "
72
- my_lcd.print @blink_m_start_address
73
- delay 100
74
- BlinkM_setAddress @blink_m_start_address
75
- my_lcd.clearscr "done"
76
- control_it
77
- end
78
-
79
- def control_it
80
- delay 500
81
- my_lcd.clearscr "stopping script"
82
- BlinkM_stopScript @blink_m_start_address
83
- my_lcd.clearscr "stopping script.."
84
- delay 500
85
- my_lcd.clearscr "fade to purple.."
86
- BlinkM_fadeToRGB(@blink_m_start_address, 0xff,0x00,0xff)
87
- my_lcd.clearscr "fade to purple"
88
- delay 500
89
- BlinkM_fadeToRGB(@blink_m_start_address, 0xff,0x00,0xff)
90
- end
91
-
92
-
93
- def test_address
94
- my_lcd.clearscr
95
- my_lcd.setxy 0,0, "testing address"
96
- my_lcd.setxy 0,1
97
- my_lcd.print blink_m_check_address_message @blink_m_start_address
98
- delay 5000
99
- end
100
-
101
-
27
+ # @blink_m_start_address = 10
28
+ # @flag = false
29
+ # @addr1 = "10, byte"
30
+ # @addr2 = "11, byte"
31
+ # @addr3 = "12, byte"
32
+ #
33
+ # output_pin 19, :as => :wire, :device => :i2c, :enable => :true # reminder, true issues wire.begin
34
+ # input_pin 7, :as => :button_one, :device => :button
35
+ # input_pin 8, :as => :button_two, :device => :button
36
+ # input_pin 9, :as => :button_three, :device => :button
37
+ #
38
+ # output_pin 5, :as => :my_lcd, :device => :pa_lcd, :rate => 19200, :clear_screen => :true
39
+ #
40
+ # def setup
41
+ # delay 1000
42
+ # my_lcd.setxy 0,0, "bienvenue"
43
+ # delay 5000
44
+ # end
45
+ #
46
+ # def loop
47
+ #
48
+ # if @flag == false
49
+ # staging
50
+ # else
51
+ # test_address
52
+ # end
53
+ # delay 100
54
+ # end
55
+ #
56
+ # def staging
57
+ # my_lcd.setxy 0,0, "press button one to"
58
+ # my_lcd.setxy 0,1, "set address to "
59
+ # my_lcd.print @blink_m_start_address
60
+ # my_lcd.setxy 0,2, "or two for status"
61
+ # delay 60
62
+ # my_lcd.setxy 0,3, " "
63
+ # my_lcd.setxy 0,3
64
+ # 800.times do |i|
65
+ # return 0 if @flag == true
66
+ # my_lcd.print "." if i % 50 == 0
67
+ # delay 5
68
+ # if button_one.read_input
69
+ # assign_address
70
+ # elsif button_two.read_input
71
+ # test_address
72
+ # end
73
+ # end
74
+ # @blink_m_start_address += 1
75
+ # end
76
+ #
77
+ # def assign_address
78
+ # @flag = true
79
+ # my_lcd.clearscr "setting to "
80
+ # my_lcd.print @blink_m_start_address
81
+ # delay 100
82
+ # BlinkM_setAddress @blink_m_start_address
83
+ # my_lcd.clearscr "done"
84
+ # control_it
85
+ # end
86
+ #
87
+ # def control_it
88
+ # delay 500
89
+ # my_lcd.clearscr "stopping script"
90
+ # BlinkM_stopScript @blink_m_start_address
91
+ # my_lcd.clearscr "stopping script.."
92
+ # delay 500
93
+ # my_lcd.clearscr "fade to purple.."
94
+ # BlinkM_fadeToRGB(@blink_m_start_address, 0xff,0x00,0xff)
95
+ # my_lcd.clearscr "fade to purple"
96
+ # delay 500
97
+ # BlinkM_fadeToRGB(@blink_m_start_address, 0xff,0x00,0xff)
98
+ # end
99
+ #
100
+ #
101
+ # def test_address
102
+ # my_lcd.clearscr
103
+ # my_lcd.setxy 0,0, "testing address"
104
+ # my_lcd.setxy 0,1
105
+ # my_lcd.print blink_m_check_address_message @blink_m_start_address
106
+ # delay 5000
107
+ # end
108
+ #
109
+ #
102
110
 
103
111
 
104
112
  end
@@ -1,61 +1,70 @@
1
1
  class BlinkMMulti < ArduinoSketch
2
+
3
+ # IMPORTANT -- This is one for four examples that fails with Ruby 1.9 support (latest ruby2c and parsetree)
4
+ # the failing example is commented out and replaced with this hello world until I have a chance to resolve the issue -- jd
5
+ output_pin 13, :as => :led
6
+
7
+ def loop
8
+ blink led, 100
9
+ x = 4
10
+ end
2
11
 
3
12
  # demonstrate control of individual blinkms
4
13
  # this assumes the leds have been assigned addresses 10, 11, 12
5
14
  # which can be done with blink m address assignment
6
15
 
7
16
  # two ways to address the blinkms, array and individual variables
8
- @blink_addresses = [10,11,12]
9
- @addr_all = "0, byte"
10
- @addr1 = "10, byte"
11
- @addr2 = "11, byte"
12
- @addr3 = "12, byte"
13
-
14
- output_pin 19, :as => :wire, :device => :i2c, :enable => :true # reminder, true issues wire.begin
15
- input_pin 7, :as => :button_one, :device => :button
16
- input_pin 8, :as => :button_two, :device => :button
17
- input_pin 9, :as => :button_three, :device => :button
18
- input_pin 10, :as => :button_four, :device => :button
19
-
20
- # display the action on a 4x20 pa_lcd, yours may be 9200 instead of 19,200
21
-
22
- output_pin 5, :as => :my_lcd, :device => :pa_lcd, :rate => 19200, :clear_screen => :true
23
-
24
-
25
- def loop
26
- stop_and_fade(@addr1) if button_one.read_input
27
- stop_and_fade(@addr2) if button_two.read_input
28
- stop_and_fade(@addr3) if button_three.read_input
29
- dance if button_four.read_input
30
- end
31
-
32
- def stop_and_fade(addr)
33
- f = 1 + addr # hack to coerce addr to int
34
- my_lcd.clearscr
35
- my_lcd.setxy 0,0, "blinkm # "
36
- my_lcd.print addr
37
- delay 700
38
- BlinkM_stopScript addr
39
- my_lcd.setxy 0,1, "stopping script.."
40
- delay 700
41
- my_lcd.setxy 0,2, "fade to purple.."
42
- BlinkM_fadeToRGB(addr, 0xff,0x00,0xff)
43
- end
44
-
45
- def dance
46
- BlinkM_setFadeSpeed(@addr_all, 20) # 1-255, with 1 producing the slowest fade
47
- my_lcd.clearscr
48
- my_lcd.setxy 0,0, "Do the shimmy.."
49
- my_lcd.setxy 0,1
50
- @blink_addresses.each do |a|
51
- BlinkM_fadeToRGB(a, 1,166,138)
52
- delay 100
53
- end
54
- @blink_addresses.each do |a|
55
- BlinkM_fadeToRGB(a, 35,0,112)
56
- delay 100
57
- end
58
- end
17
+ # @blink_addresses = [10,11,12]
18
+ # @addr_all = "0, byte"
19
+ # @addr1 = "10, byte"
20
+ # @addr2 = "11, byte"
21
+ # @addr3 = "12, byte"
22
+ #
23
+ # output_pin 19, :as => :wire, :device => :i2c, :enable => :true # reminder, true issues wire.begin
24
+ # input_pin 7, :as => :button_one, :device => :button
25
+ # input_pin 8, :as => :button_two, :device => :button
26
+ # input_pin 9, :as => :button_three, :device => :button
27
+ # input_pin 10, :as => :button_four, :device => :button
28
+ #
29
+ # # display the action on a 4x20 pa_lcd, yours may be 9200 instead of 19,200
30
+ #
31
+ # output_pin 5, :as => :my_lcd, :device => :pa_lcd, :rate => 19200, :clear_screen => :true
32
+ #
33
+ #
34
+ # def loop
35
+ # stop_and_fade(@addr1) if button_one.read_input
36
+ # stop_and_fade(@addr2) if button_two.read_input
37
+ # stop_and_fade(@addr3) if button_three.read_input
38
+ # dance if button_four.read_input
39
+ # end
40
+ #
41
+ # def stop_and_fade(addr)
42
+ # f = 1 + addr # hack to coerce addr to int
43
+ # my_lcd.clearscr
44
+ # my_lcd.setxy 0,0, "blinkm # "
45
+ # my_lcd.print addr
46
+ # delay 700
47
+ # BlinkM_stopScript addr
48
+ # my_lcd.setxy 0,1, "stopping script.."
49
+ # delay 700
50
+ # my_lcd.setxy 0,2, "fade to purple.."
51
+ # BlinkM_fadeToRGB(addr, 0xff,0x00,0xff)
52
+ # end
53
+ #
54
+ # def dance
55
+ # BlinkM_setFadeSpeed(@addr_all, 20) # 1-255, with 1 producing the slowest fade
56
+ # my_lcd.clearscr
57
+ # my_lcd.setxy 0,0, "Do the shimmy.."
58
+ # my_lcd.setxy 0,1
59
+ # @blink_addresses.each do |a|
60
+ # BlinkM_fadeToRGB(a, 1,166,138)
61
+ # delay 100
62
+ # end
63
+ # @blink_addresses.each do |a|
64
+ # BlinkM_fadeToRGB(a, 35,0,112)
65
+ # delay 100
66
+ # end
67
+ # end
59
68
 
60
69
 
61
70
  end
@@ -1,23 +1,30 @@
1
1
  class FirstSound < ArduinoSketch
2
2
 
3
+ # IMPORTANT -- This is one for four examples that fails with Ruby 1.9 support (latest ruby2c and parsetree)
4
+ # the failing example is commented out and replaced with this hello world until I have a chance to resolve the issue -- jd
5
+ output_pin 13, :as => :led
3
6
 
7
+ def loop
8
+ blink led, 100
9
+ x = 4
10
+ end
4
11
 
5
- output_pin 11, :as => :myTone, :device => :freq_out, :frequency => 100 # frequency required
6
-
7
- def loop
8
- myTone.disable
9
- 1.upto(400) { |x| tone_out x } # run up the scale to 4000 Hz in 10 Hz steps
10
- 399.downto(1) { |x| tone_out x } # come back down in 10 Hz steps
11
- delay 2000
12
- end
13
-
14
- def tone_out(n)
15
- myTone.set_frequency 10*n
16
- myTone.enable
17
- delay 80
18
- myTone.disable
19
- delay 10
20
- end
12
+ # output_pin 11, :as => :myTone, :device => :freq_out, :frequency => 100 # frequency required
13
+ #
14
+ # def loop
15
+ # myTone.disable
16
+ # 1.upto(400) { |x| tone_out x } # run up the scale to 4000 Hz in 10 Hz steps
17
+ # 399.downto(1) { |x| tone_out x } # come back down in 10 Hz steps
18
+ # delay 2000
19
+ # end
20
+ #
21
+ # def tone_out(n)
22
+ # myTone.set_frequency 10*n
23
+ # myTone.enable
24
+ # delay 80
25
+ # myTone.disable
26
+ # delay 10
27
+ # end
21
28
 
22
29
 
23
30
  end
@@ -1,30 +1,37 @@
1
1
  class FrequencyGenerator < ArduinoSketch
2
-
2
+ # IMPORTANT -- This is one for four examples that fails with Ruby 1.9 support (latest ruby2c and parsetree)
3
+ # the failing example is commented out and replaced with this hello world until I have a chance to resolve the issue -- jd
4
+ output_pin 13, :as => :led
5
+
6
+ def loop
7
+ blink led, 100
8
+ x = 4
9
+ end
3
10
  # need explaination
4
11
 
5
- output_pin 11, :as => :myTone, :device => :freq_out, :frequency => 100
6
-
7
- def loop
8
- uh_oh 4
9
- end
10
-
11
- def uh_oh(n)
12
-
13
-
14
- n.times do
15
- myTone.enable
16
- myTone.set_frequency 1800
17
- delay 500
18
- myTone.disable
19
- delay 100
20
- myTone.enable
21
- myTone.set_frequency 1800
22
- delay 800
23
- myTone.enable
24
- end
25
- # hack to help translator guess that n is an int
26
- f = n + 0
27
- end
12
+ # output_pin 11, :as => :myTone, :device => :freq_out, :frequency => 100
13
+ #
14
+ # def loop
15
+ # uh_oh 4
16
+ # end
17
+ #
18
+ # def uh_oh(n)
19
+ #
20
+ #
21
+ # n.times do
22
+ # myTone.enable
23
+ # myTone.set_frequency 1800
24
+ # delay 500
25
+ # myTone.disable
26
+ # delay 100
27
+ # myTone.enable
28
+ # myTone.set_frequency 1800
29
+ # delay 800
30
+ # myTone.enable
31
+ # end
32
+ # # hack to help translator guess that n is an int
33
+ # f = n + 0
34
+ # end
28
35
 
29
36
 
30
37
  end
@@ -1,5 +1,14 @@
1
1
  class HelloSpectraSound < ArduinoSketch
2
2
 
3
+ # IMPORTANT -- This is one for four examples that fails with Ruby 1.9 support (latest ruby2c and parsetree)
4
+ # the failing example is commented out and replaced with this hello world until I have a chance to resolve the issue -- jd
5
+ output_pin 13, :as => :led
6
+
7
+ def loop
8
+ blink led, 100
9
+ x = 4
10
+ end
11
+
3
12
  # demonstrate capability to use soft pot as traditional pot
4
13
  # the last pot reading remains "locked" to the last touch point
5
14
  # similar same behavior as ipod
@@ -7,32 +16,32 @@ class HelloSpectraSound < ArduinoSketch
7
16
  # this sketch assumes a pa_lcd operating at 19200 and one
8
17
  # spectra symbol softpot connected to analog pin 3
9
18
  #
10
- @reading = int
11
- output_pin 14, :as => :my_lcd, :device => :pa_lcd, :rate => 9600, :clear_screen => :true
12
- output_pin 11, :as => :sound, :device => :freq_out, :frequency => 100, :enable => :true
13
- input_pin 3, :as => :sensor_one, :device => :spectra
14
-
15
-
16
- def setup
17
- delay 1000
18
- my_lcd.setxy 0,0, "spectra symbol"
19
- my_lcd.setxy 0,1, "soft pot sound"
20
- delay 3000
21
- my_lcd.clearscr
22
- end
23
-
24
- def loop
25
- my_lcd.setxy 0,1
26
- # since lcd's have issues clearing tens and hundreds digits when reading ones,
27
- # we use pad_int_to_str, which is a hack to display these cleanly
28
- # pad_int_to_str takes two arguments: an integer and the final string length
29
- #
30
- # my_lcd.print pad_int_to_str analogRead(sensor_one), 5
31
- @reading = sensor_one.soft_lock
32
- sound.set_frequency @reading * 10
33
- my_lcd.print pad_int_to_str @reading, 3
34
- delay 30
35
- end
19
+ # @reading = int
20
+ # output_pin 14, :as => :my_lcd, :device => :pa_lcd, :rate => 9600, :clear_screen => :true
21
+ # output_pin 11, :as => :sound, :device => :freq_out, :frequency => 100, :enable => :true
22
+ # input_pin 3, :as => :sensor_one, :device => :spectra
23
+ #
24
+ #
25
+ # def setup
26
+ # delay 1000
27
+ # my_lcd.setxy 0,0, "spectra symbol"
28
+ # my_lcd.setxy 0,1, "soft pot sound"
29
+ # delay 3000
30
+ # my_lcd.clearscr
31
+ # end
32
+ #
33
+ # def loop
34
+ # my_lcd.setxy 0,1
35
+ # # since lcd's have issues clearing tens and hundreds digits when reading ones,
36
+ # # we use pad_int_to_str, which is a hack to display these cleanly
37
+ # # pad_int_to_str takes two arguments: an integer and the final string length
38
+ # #
39
+ # # my_lcd.print pad_int_to_str analogRead(sensor_one), 5
40
+ # @reading = sensor_one.soft_lock
41
+ # sound.set_frequency @reading * 10
42
+ # my_lcd.print pad_int_to_str @reading, 3
43
+ # delay 30
44
+ # end
36
45
 
37
46
 
38
47
  end
@@ -1,9 +1,9 @@
1
1
  class DarwinInstaller
2
2
  def self.install!
3
- puts "Downloading arduino-0012 for Mac from Arduino.cc"
4
- File.open("/Applications/arduino-0012.zip", "w") do |file|
3
+ puts "Downloading arduino-0015 for Mac from Arduino.cc"
4
+ File.open("/Applications/arduino-0015.zip", "w") do |file|
5
5
  pbar = nil
6
- file << open("http://www.arduino.cc/files/arduino-0012-mac.zip",
6
+ file << open("http://arduino.googlecode.com/files/arduino-0015-mac.zip",
7
7
  :content_length_proc => lambda {|t|
8
8
  if t && 0 < t
9
9
  pbar = ProgressBar.new(" Progress", t)
@@ -16,8 +16,8 @@ class DarwinInstaller
16
16
  pbar.finish
17
17
  end
18
18
  puts "Unzipping..."
19
- `cd /Applications; unzip arduino-0012.zip`
20
- `rm /Applications/arduino-0012.zip`
21
- puts "installed Arduino here: /Applications/arduino-0012"
19
+ `cd /Applications; unzip arduino-0015.zip`
20
+ `rm /Applications/arduino-0015.zip`
21
+ puts "installed Arduino here: /Applications/arduino-0015"
22
22
  end
23
23
  end
@@ -59,6 +59,9 @@
59
59
  # upload your program to the Arduino board.
60
60
  #
61
61
  # $Id$
62
+ #
63
+ #
64
+ #
62
65
 
63
66
  PORT = <%= params['serial_port'] %>
64
67
  TARGET = <%= params['target'] %>
@@ -70,11 +73,11 @@ $(ARDUINO)/wiring_analog.c $(ARDUINO)/wiring_digital.c \
70
73
  $(ARDUINO)/wiring_pulse.c $(ARDUINO)/wiring_serial.c \
71
74
  $(ARDUINO)/wiring_shift.c $(ARDUINO)/WInterrupts.c <%= params['twi_c'] %>
72
75
  CXXSRC = $(ARDUINO)/HardwareSerial.cpp $(SOFTWARE_SERIAL)/SoftwareSerial.cpp $(ARDUINO)/Print.cpp<%= params['libraries'].collect{|l| " $(LIBRARY_ROOT)/#{ l }/#{l }.cpp"}.join('') %>
73
- MCU = <%= params['mcu'] %>
76
+ MCU = <%= params['build.mcu'] %>
74
77
  <% if params['asm_files'] %>ASRC = <%= params['asm_files'].join(' ') %><% end %>
75
- F_CPU = 16000000
78
+ F_CPU = <%= params['build.f_cpu'].chomp("L") %>
76
79
  FORMAT = ihex
77
- UPLOAD_RATE = 19200
80
+ UPLOAD_RATE = <%= params['upload.speed']%>
78
81
  BIN_DIR = <%= params['arduino_root'] %>/hardware/tools/avr/bin
79
82
 
80
83
  # Name of this Makefile (used for "make depend").
@@ -113,7 +116,7 @@ LDFLAGS = -lm
113
116
 
114
117
 
115
118
  # Programming support using avrdude. Settings and variables.
116
- AVRDUDE_PROGRAMMER = stk500
119
+ AVRDUDE_PROGRAMMER = <%= params['upload.protocol'] %>
117
120
  AVRDUDE_PORT = $(PORT)
118
121
  AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
119
122
  AVRDUDE_FLAGS = -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) \
@@ -7,6 +7,8 @@ class Makefile
7
7
  # build the sketch Makefile for the given template based on the values in its software and hardware config files
8
8
  def compose_for_sketch(build_dir)
9
9
  params = hardware_params.merge software_params
10
+ board_config = board_configuration(@software_params['arduino_root'], @hardware_params['mcu'])
11
+ params = params.merge board_config
10
12
  params['target'] = build_dir.split("/").last
11
13
 
12
14
  params['libraries_root'] = "#{File.expand_path(RAD_ROOT)}/vendor/libraries"
@@ -33,6 +35,18 @@ class Makefile
33
35
  return @software_params if @software_params
34
36
  return @software_params = YAML.load_file( "#{RAD_ROOT}/config/software.yml" )
35
37
  end
38
+
39
+ ## match the mcu with the proper board configuration from the arduino board.txt file
40
+ def board_configuration(arduino_root, board_name)
41
+ board_configuration = {}
42
+ File.open("#{arduino_root}/hardware/boards.txt", "r") do |infile|
43
+ infile.each_line do |line|
44
+ next unless line.chomp =~ /^#{board_name}\.([^=]*)=(.*)$/
45
+ board_configuration[$1] = $2
46
+ end
47
+ end
48
+ board_configuration
49
+ end
36
50
 
37
51
  end
38
52
  end
@@ -91,34 +91,34 @@ class LinuxInstaller
91
91
  end
92
92
 
93
93
  def self.check_or_install_arduino
94
- if File.exist?("/usr/local/arduino-0012")
95
- puts "arduino software previously installed at /usr/local/arduino-0012 !"
94
+ if File.exist?("/usr/local/arduino-0015")
95
+ puts "arduino software previously installed at /usr/local/arduino-0015 !"
96
96
  else
97
97
  puts "installing arduino software..."
98
- %x{cd /usr/local/; wget http://arduino.cc/files/arduino-0012-linux.tgz}
99
- %x{tar -C /usr/local -xzf /usr/local/arduino-0012-linux.tgz}
98
+ %x{cd /usr/local/; wget http://arduino.googlecode.com/files/arduino-0015-linux.tgz}
99
+ %x{tar -C /usr/local -xzf /usr/local/arduino-0015-linux.tgz}
100
100
 
101
- %x{ln -s /usr/local/arduino-0012/arduino ~/Desktop/arduino}
101
+ %x{ln -s /usr/local/arduino-0015/arduino ~/Desktop/arduino}
102
102
 
103
103
  # gotta patch it so it can run from command line or anywhere
104
- arduino_file = File.open("/usr/local/arduino-0012/arduino") {|f| f.read}
104
+ arduino_file = File.open("/usr/local/arduino-0015/arduino") {|f| f.read}
105
105
  new_doc = arduino_file.split("\n")
106
- new_doc[1] = "cd /usr/local/arduino-0012"
107
- File.open("/usr/local/arduino-0012/arduino", "w") {|f| f.puts new_doc }
106
+ new_doc[1] = "cd /usr/local/arduino-0015"
107
+ File.open("/usr/local/arduino-0015/arduino", "w") {|f| f.puts new_doc }
108
108
 
109
- %x{mkdir -p /usr/local/arduino-0012/hardware/tools/avr/bin}
109
+ %x{mkdir -p /usr/local/arduino-0015/hardware/tools/avr/bin}
110
110
  # there is a difference from what the makefile expects to where it is
111
- %x{ln -s /usr/bin/avr-gcc /usr/local/arduino-0012/hardware/tools/avr/bin/avr-gcc}
112
- %x{ln -s /usr/bin/avr-g++ /usr/local/arduino-0012/hardware/tools/avr/bin/avr-g++}
113
- %x{ln -s /usr/bin/avr-ar /usr/local/arduino-0012/hardware/tools/avr/bin/avr-ar}
114
- %x{ln -s /usr/bin/avr-objcopy /usr/local/arduino-0012/hardware/tools/avr/bin/avr-objcopy}
115
- %x{ln -s /usr/local/arduino-0012/hardware/tools/avrdude /usr/local/arduino-0012/hardware/tools/avr/bin/avrdude}
116
- %x{ln -s /usr/local/arduino-0012/hardware/tools/avrdude.conf /usr/local/arduino-0012/hardware/tools/avr/etc/avrdude.conf}
111
+ %x{ln -s /usr/bin/avr-gcc /usr/local/arduino-0015/hardware/tools/avr/bin/avr-gcc}
112
+ %x{ln -s /usr/bin/avr-g++ /usr/local/arduino-0015/hardware/tools/avr/bin/avr-g++}
113
+ %x{ln -s /usr/bin/avr-ar /usr/local/arduino-0015/hardware/tools/avr/bin/avr-ar}
114
+ %x{ln -s /usr/bin/avr-objcopy /usr/local/arduino-0015/hardware/tools/avr/bin/avr-objcopy}
115
+ %x{ln -s /usr/local/arduino-0015/hardware/tools/avrdude /usr/local/arduino-0015/hardware/tools/avr/bin/avrdude}
116
+ %x{ln -s /usr/local/arduino-0015/hardware/tools/avrdude.conf /usr/local/arduino-0015/hardware/tools/avr/etc/avrdude.conf}
117
117
 
118
118
 
119
119
  puts
120
120
  puts "************************************************************************"
121
- puts "** please add /usr/local/arduino-0012 to your path! **"
121
+ puts "** please add /usr/local/arduino-0015 to your path! **"
122
122
  puts "** you will also need to run sudo update-alternatives --config java **"
123
123
  puts "** to choose java-1.50-sun as the default java **"
124
124
  puts "************************************************************************"
data/lib/rad/version.rb CHANGED
@@ -2,7 +2,7 @@ module Rad #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 3
5
- TINY = 1
5
+ TINY = 5
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: madrona-rad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Borenstein
8
- - "plugins+: JD Barnhart"
8
+ - JD Barnhart
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
@@ -46,6 +46,19 @@ dependencies:
46
46
  - !ruby/object:Gem::Version
47
47
  version: 3.0.2
48
48
  version:
49
+ - !ruby/object:Gem::Dependency
50
+ name: ParseTree
51
+ type: :runtime
52
+ version_requirement:
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ~>
56
+ - !ruby/object:Gem::Version
57
+ version: "3.0"
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 3.0.4
61
+ version:
49
62
  description: "Ruby Arduino Development: a framework for programming the Arduino physcial computing platform using Ruby"
50
63
  email: jd@jdbarnhart.com
51
64
  executables:
@@ -228,6 +241,6 @@ rubyforge_project: rad
228
241
  rubygems_version: 1.3.5
229
242
  signing_key:
230
243
  specification_version: 2
231
- summary: "RAD: Ruby Arduino Development - 0.3.5 -- 1.9 Ready"
244
+ summary: "RAD: Ruby Arduino Development - 0.3.6 -- 1.9 Ready"
232
245
  test_files: []
233
246