Created
March 17, 2016 09:45
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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