atduskgreg-rad 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. data/History.txt +104 -0
  2. data/License.txt +282 -0
  3. data/Manifest.txt +142 -0
  4. data/README.rdoc +55 -0
  5. data/Rakefile +142 -0
  6. data/bin/hello_world_test/Makefile +436 -0
  7. data/bin/hello_world_test/hello_world.cpp +23 -0
  8. data/bin/rad +302 -0
  9. data/lib/examples/add_hysteresis.rb +13 -0
  10. data/lib/examples/basic_blink.rb +10 -0
  11. data/lib/examples/blink_m_address_assignment.rb +104 -0
  12. data/lib/examples/blink_m_hello.rb +14 -0
  13. data/lib/examples/blink_m_multi.rb +61 -0
  14. data/lib/examples/blink_with_serial.rb +16 -0
  15. data/lib/examples/configure_pa_lcd_boot.rb +91 -0
  16. data/lib/examples/debounce_methods.rb +49 -0
  17. data/lib/examples/external_variable_fu.rb +26 -0
  18. data/lib/examples/external_variables.rb +32 -0
  19. data/lib/examples/first_sound.rb +23 -0
  20. data/lib/examples/frequency_generator.rb +30 -0
  21. data/lib/examples/hello_array.rb +48 -0
  22. data/lib/examples/hello_array2.rb +79 -0
  23. data/lib/examples/hello_array_eeprom.rb +59 -0
  24. data/lib/examples/hello_clock.rb +84 -0
  25. data/lib/examples/hello_eeprom.rb +51 -0
  26. data/lib/examples/hello_eeprom_lcdpa.rb +81 -0
  27. data/lib/examples/hello_format_print.rb +94 -0
  28. data/lib/examples/hello_lcd_charset.rb +75 -0
  29. data/lib/examples/hello_pa_lcd.rb +59 -0
  30. data/lib/examples/hello_servos.rb +88 -0
  31. data/lib/examples/hello_spectra_sound.rb +38 -0
  32. data/lib/examples/hello_world.rb +11 -0
  33. data/lib/examples/hello_xbee.rb +12 -0
  34. data/lib/examples/hysteresis_duel.rb +39 -0
  35. data/lib/examples/i2c_with_clock_chip.rb +124 -0
  36. data/lib/examples/midi_beat_box.rb +86 -0
  37. data/lib/examples/midi_scales.rb +94 -0
  38. data/lib/examples/motor_knob.rb +30 -0
  39. data/lib/examples/servo_buttons.rb +23 -0
  40. data/lib/examples/servo_calibrate_continuous.rb +92 -0
  41. data/lib/examples/servo_throttle.rb +40 -0
  42. data/lib/examples/software_serial.rb +10 -0
  43. data/lib/examples/sparkfun_lcd.rb +48 -0
  44. data/lib/examples/spectra_soft_pot.rb +34 -0
  45. data/lib/examples/times_method.rb +8 -0
  46. data/lib/examples/toggle.rb +10 -0
  47. data/lib/examples/twitter.rb +57 -0
  48. data/lib/examples/two_wire.rb +14 -0
  49. data/lib/libraries/AFSoftSerial/AFSoftSerial.cpp +321 -0
  50. data/lib/libraries/AFSoftSerial/AFSoftSerial.h +61 -0
  51. data/lib/libraries/AFSoftSerial/keywords.txt +18 -0
  52. data/lib/libraries/AF_XPort/AF_XPort.cpp +166 -0
  53. data/lib/libraries/AF_XPort/AF_XPort.h +48 -0
  54. data/lib/libraries/DS1307/DS1307.cpp +162 -0
  55. data/lib/libraries/DS1307/DS1307.h +66 -0
  56. data/lib/libraries/DS1307/keywords.txt +18 -0
  57. data/lib/libraries/FrequencyTimer2/FrequencyTimer2.cpp +144 -0
  58. data/lib/libraries/FrequencyTimer2/FrequencyTimer2.h +42 -0
  59. data/lib/libraries/FrequencyTimer2/keywords.txt +22 -0
  60. data/lib/libraries/I2CEEPROM/I2CEEPROM.cpp +120 -0
  61. data/lib/libraries/I2CEEPROM/I2CEEPROM.h +70 -0
  62. data/lib/libraries/I2CEEPROM/keywords.txt +21 -0
  63. data/lib/libraries/LoopTimer/LoopTimer.cpp +35 -0
  64. data/lib/libraries/LoopTimer/LoopTimer.h +34 -0
  65. data/lib/libraries/LoopTimer/keywords.txt +27 -0
  66. data/lib/libraries/OneWire/OneWire.cpp +194 -0
  67. data/lib/libraries/OneWire/OneWire.h +63 -0
  68. data/lib/libraries/OneWire/keywords.txt +35 -0
  69. data/lib/libraries/OneWire/readme.txt +13 -0
  70. data/lib/libraries/SWSerLCDpa/SWSerLCDpa.cpp +296 -0
  71. data/lib/libraries/SWSerLCDpa/SWSerLCDpa.h +69 -0
  72. data/lib/libraries/SWSerLCDsf/SWSerLCDsf.cpp +311 -0
  73. data/lib/libraries/SWSerLCDsf/SWSerLCDsf.h +67 -0
  74. data/lib/libraries/Servo/Servo.cpp +192 -0
  75. data/lib/libraries/Servo/Servo.h +61 -0
  76. data/lib/libraries/Stepper/Stepper.cpp +220 -0
  77. data/lib/libraries/Stepper/Stepper.h +86 -0
  78. data/lib/libraries/Stepper/keywords.txt +28 -0
  79. data/lib/libraries/Wire/Wire.cpp +262 -0
  80. data/lib/libraries/Wire/Wire.h +67 -0
  81. data/lib/libraries/Wire/keywords.txt +31 -0
  82. data/lib/libraries/Wire/twi.h +57 -0
  83. data/lib/libraries/Wire/utility/twi.c +449 -0
  84. data/lib/libraries/Wire/utility/twi.h +57 -0
  85. data/lib/plugins/bitwise_ops.rb +54 -0
  86. data/lib/plugins/blink.rb +25 -0
  87. data/lib/plugins/blink_m.rb +356 -0
  88. data/lib/plugins/debounce.rb +138 -0
  89. data/lib/plugins/debug_output_to_lcd.rb +71 -0
  90. data/lib/plugins/hysteresis.rb +52 -0
  91. data/lib/plugins/input_output_state.rb +84 -0
  92. data/lib/plugins/lcd_padding.rb +58 -0
  93. data/lib/plugins/mem_test.rb +37 -0
  94. data/lib/plugins/midi.rb +60 -0
  95. data/lib/plugins/parallax_ping.rb +50 -0
  96. data/lib/plugins/servo_pulse.rb +31 -0
  97. data/lib/plugins/servo_setup.rb +86 -0
  98. data/lib/plugins/smoother.rb +54 -0
  99. data/lib/plugins/spark_fun_serial_lcd.rb +100 -0
  100. data/lib/plugins/spectra_symbol.rb +79 -0
  101. data/lib/plugins/twitter_connect.rb +145 -0
  102. data/lib/rad.rb +5 -0
  103. data/lib/rad/README.rdoc +5 -0
  104. data/lib/rad/arduino_plugin.rb +246 -0
  105. data/lib/rad/arduino_sketch.rb +627 -0
  106. data/lib/rad/generators/makefile/makefile.erb +243 -0
  107. data/lib/rad/generators/makefile/makefile.rb +38 -0
  108. data/lib/rad/hardware_library.rb +813 -0
  109. data/lib/rad/init.rb +14 -0
  110. data/lib/rad/progressbar.rb +236 -0
  111. data/lib/rad/rad_processor.rb +128 -0
  112. data/lib/rad/rad_rewriter.rb +94 -0
  113. data/lib/rad/rad_type_checker.rb +26 -0
  114. data/lib/rad/sim/arduino_sketch.rb +57 -0
  115. data/lib/rad/sketch_compiler.rb +47 -0
  116. data/lib/rad/tasks/build_and_make.rake +210 -0
  117. data/lib/rad/tasks/rad.rb +2 -0
  118. data/lib/rad/todo.txt +13 -0
  119. data/lib/rad/variable_processing.rb +153 -0
  120. data/lib/rad/version.rb +9 -0
  121. data/scripts/txt2html +67 -0
  122. data/setup.rb +1585 -0
  123. data/spec/examples/hello_world.rb +11 -0
  124. data/spec/examples/serial_motor.rb +12 -0
  125. data/spec/models/arduino_sketch_spec.rb +82 -0
  126. data/spec/models/sketch_compiler_spec.rb +96 -0
  127. data/spec/models/spec_helper.rb +2 -0
  128. data/spec/sim/hello_world_spec.rb +42 -0
  129. data/spec/spec.opts +1 -0
  130. data/test/test_array_processing.rb +179 -0
  131. data/test/test_plugin_loading.rb +151 -0
  132. data/test/test_translation_post_processing.rb +185 -0
  133. data/test/test_variable_processing.rb +238 -0
  134. data/website/examples/assembler_test.rb.html +73 -0
  135. data/website/examples/gps_reader.rb.html +39 -0
  136. data/website/examples/hello_world.rb.html +38 -0
  137. data/website/examples/serial_motor.rb.html +41 -0
  138. data/website/index.html +178 -0
  139. data/website/index.txt +64 -0
  140. data/website/javascripts/rounded_corners_lite.inc.js +285 -0
  141. data/website/stylesheets/screen.css +169 -0
  142. data/website/template.rhtml +48 -0
  143. metadata +217 -0
@@ -0,0 +1,14 @@
1
+ class BlinkMHello < ArduinoSketch
2
+
3
+ # just a scaffolding for blink_m_demo
4
+
5
+ output_pin 19, :as => :wire, :device => :i2c, :enable => :true
6
+
7
+ def loop
8
+
9
+ x = 4
10
+
11
+ end
12
+
13
+
14
+ end
@@ -0,0 +1,61 @@
1
+ class BlinkMMulti < ArduinoSketch
2
+
3
+ # demonstrate control of individual blinkms
4
+ # this assumes the leds have been assigned addresses 10, 11, 12
5
+ # which can be done with blink m address assignment
6
+
7
+ # 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
59
+
60
+
61
+ end
@@ -0,0 +1,16 @@
1
+ class BlinkWithSerial < ArduinoSketch
2
+
3
+ # hello world (uncomment to run)
4
+ @i = "0, long"
5
+
6
+ output_pin 13, :as => :led
7
+
8
+ serial_begin
9
+
10
+ def loop
11
+ @i += 1
12
+ serial_println @i
13
+ blink led, 100
14
+ end
15
+
16
+ end
@@ -0,0 +1,91 @@
1
+ class ConfigurePaLcdBoot < ArduinoSketch
2
+
3
+ ## important!
4
+ ## most pa_lcd rates are set to 9200, but there are some newer at 19200
5
+ ## if you have a 19200, uncomment the end of line 38
6
+
7
+ ## purpose:
8
+ ## change cursor to none
9
+ ## and add custom boot screen
10
+ ##
11
+ ## jd's preferred setup for pa_lcd
12
+ ##
13
+ ## assumes 4 x 20 pa_lcd
14
+ ##
15
+ ## no blinking cursor press button 1
16
+ ## configure custom start up screen - press button 2
17
+ ## configure lcd to use custom startup screen - press button 3
18
+ ##
19
+ ## press buttons one, two and three
20
+ ## or season to taste
21
+ ##
22
+ ## refernce
23
+ ## K107 LCD Controller Board Manual
24
+ ## page 11 for cursors
25
+ ## page 13 for custom boot
26
+ ## http://wulfden.org/downloads/manuals/K107manual.pdf
27
+ ##
28
+ ##
29
+
30
+ ## set pins to your setup
31
+
32
+
33
+ input_pin 8, :as => :button_one, :device => :button
34
+ input_pin 9, :as => :button_two, :device => :button
35
+ input_pin 10, :as => :button_three, :device => :button
36
+
37
+ ## note, most of these controllers are set to 9200
38
+ output_pin 14, :as => :my_lcd, :device => :pa_lcd #, :rate => 19200
39
+
40
+
41
+ def loop
42
+ set_cursor if button_one.read_input
43
+ set_custom_screen if button_two.read_input
44
+ change_boot_to_custom if button_three.read_input
45
+ end
46
+
47
+ ## assumes 4 x 20 screen
48
+ ## maintain 20 characters after ?Cn
49
+ ## wny delays? the controller needs them to give it
50
+ ## enough time to write 20 bytes to internl EEPROM
51
+ def set_custom_screen
52
+ my_lcd.clearscr
53
+ my_lcd.print "?C0 RAD & Arduino "
54
+ delay 400
55
+ my_lcd.print "?C1 Development "
56
+ delay 400
57
+ my_lcd.print "?C2 "
58
+ delay 400
59
+ my_lcd.print "?C3 v0.3.0 "
60
+ end
61
+
62
+
63
+ ## ?c0 for no cursor
64
+ ## ?c2 for non blinking cursor
65
+ ## ?c3 for blinking cursor
66
+ def set_cursor
67
+ my_lcd.clearscr
68
+ my_lcd.print "Changing to "
69
+ my_lcd.setxy 0,1
70
+ my_lcd.print "no cursor. "
71
+ my_lcd.setxy 0,3
72
+ my_lcd.print "Reboot to view... "
73
+
74
+ my_lcd.print("?c0")
75
+ end
76
+
77
+ ## "?S0 for blank screen
78
+ ## ?S1 for configuration settings
79
+ ## ?S2 for custom text screen
80
+ def change_boot_to_custom
81
+ my_lcd.clearscr
82
+ my_lcd.print "Changing to "
83
+ my_lcd.setxy 0,1
84
+ my_lcd.print "custom boot screen. "
85
+ my_lcd.setxy 0,3
86
+ my_lcd.print "Reboot to view... "
87
+ my_lcd.print("?S2")
88
+ end
89
+
90
+
91
+ end
@@ -0,0 +1,49 @@
1
+ class DebounceMethods < ArduinoSketch
2
+
3
+ output_pin 13, :as => :led
4
+ input_pin 6, :as => :button_one, :device => :button # can also :adjust => 300
5
+ input_pin 7, :as => :button_two, :device => :button
6
+ input_pin 8, :as => :button_three, :device => :button
7
+ input_pin 9, :as => :button_four, :device => :button
8
+ input_pin 10, :as => :button_five, :device => :button
9
+
10
+ # depressing and releasing button_one, button_two or button_four do the same thing
11
+ # with a slightly different syntax and number of blinks
12
+ # button_three simply toggles the led with the read_and_toggle method
13
+ # button_five does it with a twist
14
+
15
+ def loop
16
+ blink_twice if read_input button_one
17
+ blink_three_times if read_input button_two
18
+ button_three.read_and_toggle led #
19
+ blink_three_times_basic if read_input button_four
20
+ blink_with_a_twist if read_input button_five
21
+ end
22
+
23
+ def blink_twice
24
+ 2.times do |i|
25
+ led.blink 200 + i
26
+ end
27
+ end
28
+
29
+ def blink_three_times
30
+ 3.times { led.blink 200 }
31
+ end
32
+
33
+ # no blink helper
34
+ def blink_three_times_basic
35
+ 4.times do
36
+ led.digitalWrite HIGH
37
+ delay 200
38
+ led.digitalWrite LOW
39
+ delay 200
40
+ end
41
+ end
42
+
43
+ def blink_with_a_twist
44
+ 20.times do |i|
45
+ led.blink i * 10
46
+ end
47
+ end
48
+
49
+ end
@@ -0,0 +1,26 @@
1
+ class ExternalVariableFu < ArduinoSketch
2
+
3
+ @one = int
4
+ @two = long
5
+ @three = unsigned
6
+ @four = short
7
+ @five = byte
8
+ @six = 1
9
+ @seven = 1.2
10
+ @eight = "0x00"
11
+ @nine = "arduino"
12
+ @ten = true
13
+ @eleven = false
14
+ @twelve = "1, long"
15
+ @thirteen = "1, unsigned"
16
+ @fourteen = "1, byte"
17
+ @fifteen = HIGH
18
+ @sixteen = LOW
19
+ @seventeen = ON
20
+ @eighteen = OFF
21
+
22
+ def loop
23
+ delay @six
24
+ end
25
+
26
+ end
@@ -0,0 +1,32 @@
1
+ class ExternalVariables < ArduinoSketch
2
+
3
+ define "KOOL 10"
4
+ define "TRUE 1"
5
+ define "COMMENT true"
6
+ define "DS1307_CTRL 7"
7
+ define "DS1308_CTRL 7"
8
+ array "char buffer[32];"
9
+ array "char bufferz[32];"
10
+
11
+
12
+ @foo = 1
13
+ @bidda = "badda"
14
+ @boom = "1, int"
15
+ @rad = "1.00"
16
+
17
+ def loop
18
+ delay 1
19
+ @foo = 2
20
+ @foo = KOOL
21
+ end
22
+
23
+ def setup # special one time only method
24
+ delay 100
25
+ delay 100
26
+ @foo = 10
27
+ 5.times { delay 200 }
28
+
29
+ end
30
+
31
+
32
+ end
@@ -0,0 +1,23 @@
1
+ class FirstSound < ArduinoSketch
2
+
3
+
4
+
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
21
+
22
+
23
+ end
@@ -0,0 +1,30 @@
1
+ class FrequencyGenerator < ArduinoSketch
2
+
3
+ # need explaination
4
+
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
28
+
29
+
30
+ end
@@ -0,0 +1,48 @@
1
+ class HelloArray < ArduinoSketch
2
+
3
+ # still working this out...
4
+ # for example, new instance style array declaration naming
5
+ # is at odds with original style array naming
6
+
7
+ # for simple integer, string, float, and boolean arrays
8
+ @toppings = [1,2,3]
9
+ @names = ["ciero", "bianca", "antica"]
10
+
11
+ # when we just need to declare an array, or need more control, such as specific type requirements
12
+ array "int ingredients[10]"
13
+ array "int pizzas[] = {1,2,3,4}"
14
+
15
+ output_pin 5, :as => :my_lcd, :device => :pa_lcd, :rate => 19200, :clear_screen => :true
16
+
17
+
18
+ def loop
19
+
20
+ my_lcd.clearscr "toppings: "
21
+ delay 500
22
+
23
+ @toppings.each do |a|
24
+ my_lcd.print a
25
+ my_lcd.print " "
26
+ delay 500
27
+ end
28
+
29
+ my_lcd.setxy 0,1, "pizzas: "
30
+
31
+ pizzas.each do |p|
32
+ my_lcd.print p
33
+ my_lcd.print " "
34
+ delay 500
35
+ end
36
+
37
+ my_lcd.setxy 0,2, "names: "
38
+
39
+ @names.each do |p|
40
+ my_lcd.print p
41
+ my_lcd.print " "
42
+ delay 500
43
+ end
44
+
45
+
46
+ end
47
+
48
+ end
@@ -0,0 +1,79 @@
1
+ class HelloArray2 < ArduinoSketch
2
+
3
+ # ----------------------------------------------------------------------
4
+ # Checking out various array operations
5
+ #
6
+ # JD Barnhart - Seattle, WA July 2008
7
+ # Brian Riley - Underhill Center, VT, USA July 2008
8
+ # <brianbr@wulfden.org>
9
+ #
10
+ # ----------------------------------------------------------------------
11
+
12
+ # still working this out...
13
+ # for example, new instance style array declaration naming
14
+ # is at odds with original style array naming
15
+
16
+ define "THROWAWAY 0"
17
+
18
+ # for simple integer, string, float, and boolean arrays
19
+ @toppings = [1,2,3]
20
+ @names = ["ciero", "bianca", "zeus", "athena", "apollo"]
21
+
22
+ # when we just need to declare an array, or need more control, such as specific type requirements
23
+ array "int ingredients[10]"
24
+ array "int pizzas[] = {1,2,3,4}"
25
+ array "byte buffer[20] = {'A', 'B', 'Z', 'C', 'Y', 'D', 'W', 'E', '%', 'H', '*', '!', ')', '=', 'P', '-', '+', 'R', 'I', 'K'}"
26
+
27
+ output_pin 14, :as => :my_lcd, :device => :pa_lcd, :rate => 19200, :clear_screen => :true
28
+
29
+
30
+ def setup
31
+
32
+ my_lcd.clearscr "toppings: "
33
+ delay 500
34
+
35
+ @toppings.each do |a|
36
+ my_lcd.print a
37
+ my_lcd.print " "
38
+ delay 500
39
+ end
40
+
41
+ my_lcd.setxy 0,1, "pizzas: "
42
+
43
+ pizzas.each do |p|
44
+ my_lcd.print p
45
+ my_lcd.print " "
46
+ delay 500
47
+ end
48
+
49
+ my_lcd.setxy 0,2, "names: "
50
+
51
+ @names.each do |p|
52
+ my_lcd.print p
53
+ my_lcd.print " "
54
+ delay 500
55
+ end
56
+
57
+ delay 3000
58
+
59
+ my_lcd.clearline 1, @names[2]
60
+ my_lcd.print " [ "
61
+ my_lcd.print pizzas[1]
62
+ my_lcd.print " ]"
63
+
64
+ delay 2000
65
+
66
+ my_lcd.clearscr "Array Load?n"
67
+ 1.upto(20) do |x|
68
+ # buffer[x] = 64 + x # we cannot set array elements yet except to initialize in declaration
69
+ my_lcd.print buffer[x-1]
70
+ my_lcd.print " "
71
+ end
72
+
73
+ end
74
+
75
+ def loop
76
+ x = THROWAWAY
77
+ end
78
+
79
+ end