Mittwoch, 20. Juni 2012

Arduino und Ruby verbinden

Heute mal ein Tech-Basteleintrag. Die letzten Tage habe ich mit meinem Arduino aus der Fritzing-Box ein wenig rumgespielt. Neben dem Nachbauen der Schaltungen aus dem Video-Tutorial fand ich es persönlich interessant, eine Verbindung zwischen dem Arduino und einem lokalen Ruby-Script herzustellen. Diese ersten Schritten sollen die Basis für die Entwicklung eines Twitter-Statusbots sein, der abhängig von digitalen/analogen Messwerten entsprechende Nachrichten absetzt.

Das hier gezeigte erste Testsetup:

  • Simuliert von Seiten des Arduinos als Aktio das eventabhängige Absetzen eines Status via Serial.println (statt eines Messwerts ist hier einfach nur ein zeitabhängiger Trigger verbaut).
  • Auf Seiten des Rubyscripts als Reaktio eine einfache Quittierung über puts.


Arduino-Script:

void setup() {                
  Serial.begin(9600);  
}

void loop() {

  Serial.println("a");
  delay(5000);
  Serial.println("b");
  delay(5000);
  
}

Ruby-Script

#simplest ruby program to read from arduino serial, 
#using the SerialPort gem
#(http://rubygems.org/gems/serialport)

require "rubygems"
require "serialport"

#params for serial port
port_str = "/dev/tty.usbmodem411"  #may be different for you
baud_rate = 9600
data_bits = 8
stop_bits = 1
parity = SerialPort::NONE

sp = SerialPort.new(port_str, baud_rate, data_bits, stop_bits, parity)

#just read forever
while true do
  
  sp_string = sp.gets
  puts sp_string
  if sp_string.to_s =~ /a/ then
    puts "A empfangen"
  elsif sp_string.to_s =~ /b/ then
    puts "B empfangen"
  end

end

sp.close                       #see note 1

Keine Kommentare:

Kommentar veröffentlichen