Class: Tlaloc::Adapter::Ospi::Controller

Inherits:
Object
  • Object
show all
Defined in:
lib/tlaloc/adapter/ospi/controller.rb

Constant Summary collapse

CLOCK_PIN =

wiring pi pin numbers

7
DATA_PIN =
2
PIN_SR_NOE =
0
LATCH_PIN =
3
NUMBER_OF_STATIONS =
8

Instance Method Summary collapse

Constructor Details

#initialize(io = nil) ⇒ Controller

Returns a new instance of Controller.



14
15
16
17
18
19
20
21
22
23
# File 'lib/tlaloc/adapter/ospi/controller.rb', line 14

def initialize(io = nil)
  @stations = [0] * 8
  @io = io || WiringPi::GPIO.new do |gpio|
    # Set the pinmode of pin 0 for output
    gpio.pin_mode(CLOCK_PIN, 1)
    gpio.pin_mode(DATA_PIN, 1)
    gpio.pin_mode(PIN_SR_NOE, 1)
    gpio.pin_mode(LATCH_PIN, 1)
  end
end

Instance Method Details

#close(station_number) ⇒ Object



29
30
31
# File 'lib/tlaloc/adapter/ospi/controller.rb', line 29

def close(station_number)
  set_station station_number, 0
end

#close_allObject



33
34
35
36
# File 'lib/tlaloc/adapter/ospi/controller.rb', line 33

def close_all()
  @stations = [0] * 8
  send_array @stations
end

#open(station_number) ⇒ Object



25
26
27
# File 'lib/tlaloc/adapter/ospi/controller.rb', line 25

def open(station_number)
  set_station station_number, 1
end

#send_array(array) ⇒ Object



44
45
46
47
48
# File 'lib/tlaloc/adapter/ospi/controller.rb', line 44

def send_array(array)
  @io.digital_write(LATCH_PIN, 0)
  @io.shift_out(DATA_PIN, CLOCK_PIN, 0, array.join.to_i(2))
  @io.digital_write(LATCH_PIN, 1)
end

#set_station(station_number, status) ⇒ Object



38
39
40
41
42
# File 'lib/tlaloc/adapter/ospi/controller.rb', line 38

def set_station(station_number, status)
  station_index = station_number - 1
  @stations[station_index] = status
  send_array @stations
end