class Artoo::Adaptors::IO::DigitalPin
Constants
- GPIO_DIRECTION_READ
- GPIO_DIRECTION_WRITE
- GPIO_PATH
- HIGH
- LOW
Attributes
mode[R]
pin_file[R]
pin_num[R]
status[R]
Public Class Methods
new(pin_num, mode)
click to toggle source
# File lib/artoo/adaptors/io/digital_pin.rb, line 13 def initialize(pin_num, mode) @pin_num = pin_num File.open("#{ GPIO_PATH }/export", "w") { |f| f.write("#{ pin_num }") } File.close # Sets the pin for read or write set_mode(mode) end
Public Instance Methods
close()
click to toggle source
Unexports the pin in GPIO to leave it free
# File lib/artoo/adaptors/io/digital_pin.rb, line 86 def close off! if @mode == 'w' File.open("#{ GPIO_PATH }/unexport", "w") { |f| f.write("#{pin_num}") } File.close @pin_file.close end
digital_read()
click to toggle source
Reads digitally from the specified pin on initialize
# File lib/artoo/adaptors/io/digital_pin.rb, line 42 def digital_read set_mode('r') unless @mode == 'r' @pin_file.read end
digital_write(value)
click to toggle source
Writes to the specified pin Digitally accepts values :high or :low, 1 or 0, “1” or “0”
# File lib/artoo/adaptors/io/digital_pin.rb, line 24 def digital_write(value) set_mode('w') unless @mode == 'w' if value.is_a? Symbol value = (value == :high) ? 1 : 0 end value = value.to_i raise StandardError unless ([HIGH, LOW].include? value) @status = (value == 1) ? 'high' : 'low' @pin_file.write(value) @pin_file.flush end
off!()
click to toggle source
Sets digital write for the pin to LOW
# File lib/artoo/adaptors/io/digital_pin.rb, line 81 def off! digital_write(:off) end
off?()
click to toggle source
# File lib/artoo/adaptors/io/digital_pin.rb, line 71 def off? !self.on? end
on!()
click to toggle source
Sets digital write for the pin to HIGH
# File lib/artoo/adaptors/io/digital_pin.rb, line 76 def on! digital_write(:high) end
on?()
click to toggle source
# File lib/artoo/adaptors/io/digital_pin.rb, line 67 def on? (@status == 'high') ? true : false end
set_mode(mode)
click to toggle source
Sets the pin in GPIO for read or write.
# File lib/artoo/adaptors/io/digital_pin.rb, line 49 def set_mode(mode) @mode = mode if mode == 'w' set_pin(mode: 'w', direction: GPIO_DIRECTION_WRITE) elsif mode =='r' set_pin(mode: 'r', direction: GPIO_DIRECTION_READ) end end
set_pin(settings)
click to toggle source
# File lib/artoo/adaptors/io/digital_pin.rb, line 59 def set_pin(settings) mode = settings[:mode] direction = settings[:direction] File.open("#{ GPIO_PATH }/gpio#{ pin_num }/direction", "w") { |f| f.write(direction) } File.close @pin_file = File.open("#{ GPIO_PATH }/gpio#{ pin_num }/value", mode) end