Skip to content

Instantly share code, notes, and snippets.

@JorenSix
Created March 17, 2016 09:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JorenSix/76aa87c471b3414d58b7 to your computer and use it in GitHub Desktop.
Save JorenSix/76aa87c471b3414d58b7 to your computer and use it in GitHub Desktop.
Ruby driver for an 8 Channel Relay Module USB type USB-RLY08 by Devantech. The driver needs the serialport gem installed. You will probably need to change the port name to the correct name.
require 'rubygems'
require 'serialport'
class RelayDriver
def initialize
#params for serial port
port_str = "/dev/tty.usbmodem00024841" #may be different for you
baud_rate = 19200
data_bits = 8
parity = SerialPort::NONE
@serial_port = SerialPort.new(port_str, baud_rate,8,1,parity)
@serial_port.read_timeout = 100
end
#relay number 1->8
def close_relay(relay_number)
command = 110 + relay_number
@serial_port.putc(command)
end
#relay number 1->8
def open_relay(relay_number)
command = 100 + relay_number
@serial_port.putc(command)
end
#closes all relais
def close_all_relais
close_relay 0
end
def get_relay_states
command = 91
@serial_port.putc(command)
state = @serial_port.getbyte
if state.nil?
puts "Error reading state: timeout"
else
state_array=Array.new
(0..7).each do |i|
state_array << (0 != ((1<<i) & state))
end
state_array
end
end
def set_relay_states(state)
command = 92
@serial_port.putc(command)
@serial_port.putc(state)
end
#opens all relais
def open_all_relais
open_relay 0
end
def close
@serial_port.close
end
end
dr = RelayDriver.new
dr.open_all_relais
dr.get_relay_states
sleep 0.1
dr.close_all_relais
dr.get_relay_states
sleep 0.1
(1..8).each do |i|
dr.open_relay i
dr.get_relay_states
sleep 0.1
dr.close_relay i
end
dr.open_relay 1
dr.open_relay 4
puts dr.get_relay_states.join(",")
sleep 0.1
dr.close_all_relais
puts dr.get_relay_states.join(",")
sleep 0.1
dr.open_relay 1
dr.open_relay 4
puts dr.get_relay_states.join(",")
sleep 0.1
dr.open_relay 1
dr.open_relay 4
puts dr.get_relay_states.join(",")
sleep 0.1
dr.close_all_relais
puts dr.get_relay_states.join(",")
sleep 0.1
dr.close
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment