<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -8,16 +8,7 @@ class Arduino
   def initialize(tty_path)
     @tty_path = tty_path
     logger.info &quot;Arduino Init: #{@tty_path}&quot;
-  end
-  
-  def send_message(message_type, *args)
     connect!
-    send(message_type, *args)
-    sleep(1)
-  rescue =&gt; e
-    logger.error e.message
-  ensure
-    disconnect!
   end
   
   def demo_mode
@@ -33,12 +24,18 @@ class Arduino
   end
   
   def display_graph(graph, msg)
-    value = (msg.to_f / 100.0) * 254.0
-    write(3, &quot;#{graph}#{value.to_i}&quot;)
+    min, max = case graph
+    when '1' then [1, 170]
+    else [0, 254]
+    end
+      
+    value = (((msg.to_f / 100.0) * max) + min).to_i
+    value = value.to_s.rjust(3, '0');
+    write(3, &quot;#{graph}#{value}&quot;)
   end
   
   def clear_graph(graph)
-    write(4, &quot;#{graph}000&quot;)
+    write(4, graph)
   end
   
   def connect!
@@ -52,7 +49,7 @@ class Arduino
   end
   
   def write(m_type, m_body = &quot;&quot;)
-    m_type = (m_type &lt; 10 ? &quot;0#{m_type}&quot; : m_type.to_s)
+    m_type = m_type.to_s.rjust(2, '0')
     
     msg = &quot;[#{m_type}#{m_body}]&quot;
     logger.info &quot;Sending: #{msg}&quot;</diff>
      <filename>arduino.rb</filename>
    </modified>
    <modified>
      <diff>@@ -52,8 +52,10 @@ def write_setup(setup, chosen_path)
   return setup
 end
 
-setup = load_setup_from_yaml
-arduino = setup ? Arduino.new(setup['serial_path']) : false
+if setup = load_setup_from_yaml
+  arduino = Arduino.new(setup['serial_path'])
+end
+  
 
 loop do
   choose do |menu|
@@ -62,34 +64,38 @@ loop do
     menu.prompt = &quot;What would you like to do: &quot;
     
     if arduino     
-      menu.choice(green(&quot;Demo Mode&quot;), &quot;Runs a simple demo&quot;) { arduino.send_message(:demo_mode) }
+      menu.choice(green(&quot;Demo Mode&quot;), &quot;Runs a simple demo&quot;) { arduino.demo_mode }
       
       menu.choice(green(&quot;Display Digits&quot;)) do
         msg = ask &quot;Message: &quot;
-        arduino.send_message(:display_digits, msg)
+        arduino.display_digits(msg)
       end
       
-      menu.choice(green(&quot;Clear Digits&quot;)) { arduino.send_message(:clear_digits) }
+      menu.choice(green(&quot;Clear Digits&quot;)) { arduino.clear_digits }
       
       menu.choice(green(&quot;Display Graph&quot;)) do
         graph = ask &quot;Graph #: &quot;
         value = ask &quot;Value (0-100): &quot;
-        arduino.send_message(:display_graph, graph, value)
+        arduino.display_graph(graph, value)
       end
       
       menu.choice(green(&quot;Clear Graph&quot;)) do
         graph = ask &quot;Graph #: &quot;
-        arduino.send_message(:clear_graph, graph)
+        arduino.clear_graph(graph)
       end
     end
     
     menu.choice(magenta(&quot;Setup&quot;)) do
       say &quot;\n\n&quot;
       setup = write_setup(setup, serial_port_menu)
+      arduino.disconnect! if arduino
       arduino = Arduino.new(setup['serial_path'])
     end
     
-    menu.choice(red(&quot;Quit&quot;)) { exit }
+    menu.choice(red(&quot;Quit&quot;)) do
+      arduino.disconnect! if arduino
+      exit
+    end
   end
   
   say &quot;\n\n&quot;</diff>
      <filename>steam.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>c702ebdff7e575314e9ef53ba2851e5e35741da0</id>
    </parent>
  </parents>
  <author>
    <name>Andrew Bloom</name>
    <email>andrew@andrewkbloom.com</email>
  </author>
  <url>http://github.com/abloom/arduino_messaging/commit/9eec7ac3c2697a6995d7514b6b2d7eb9f0b28aed</url>
  <id>9eec7ac3c2697a6995d7514b6b2d7eb9f0b28aed</id>
  <committed-date>2009-05-20T19:48:35-07:00</committed-date>
  <authored-date>2009-05-20T19:48:35-07:00</authored-date>
  <message>fixed ruby client!</message>
  <tree>a6a33e92490122099d9c8cf4e623e39e38fb9ef8</tree>
  <committer>
    <name>Andrew Bloom</name>
    <email>andrew@andrewkbloom.com</email>
  </committer>
</commit>
