2 """A basic Pin class for use with Binho Nova."""
14 def __init__(self, pin_id=None):
16 from binhoHostAdapter import binhoHostAdapter
17 from binhoHostAdapter import binhoUtilities
19 utilities = binhoUtilities.binhoUtilities()
20 devices = utilities.listAvailableDevices()
23 Pin._nova = binhoHostAdapter.binhoHostAdapter(devices[0])
24 # check if pin is valid
26 raise ValueError("Invalid pin {}.".format(pin_id))
30 def init(self, mode=IN, pull=None):
32 raise RuntimeError("Can not init a None type pin.")
33 # Nova does't have configurable internal pulls for
35 raise ValueError("Internal pull up/down not currently supported.")
36 Pin._nova.setIOpinMode(self.id, mode)
38 def value(self, val=None):
40 raise RuntimeError("Can not access a None type pin.")
43 return int(Pin._nova.getIOpinValue(self.id).split('VALUE ')[1])
45 elif val in (self.LOW, self.HIGH):
46 Pin._nova.setIOpinValue(self.id, val)
48 raise RuntimeError("Invalid value for pin")
50 # create pin instances for each pin
60 # No PWM support on IO3
63 pwmOuts = ( ((1, 0), PWM0), ((1, 1), PWM1), ((1, 2), PWM2), ((1, 4), PWM4) )