class Interface(Model): def __init__(self, serial_number): self._phidget = InterfaceKit() self._serial_number = serial_number self._is_initialized = False def initialize(self): if not self._is_initialized: self._phidget.openPhidget(serial = self._serial_number) self._phidget.waitForAttach(ATTACH_TIMEOUT) self._phidget.setRatiometric(False) #note the default is True! self._is_initialized = True def identify(self): if not self._is_initialized: self.initialize() name = self._phidget.getDeviceName() serial_number = self._phidget.getSerialNum() return "%s, Serial Number: %d" % (name, serial_number) def read_sensor(self, index): """ reads the raw value from the sensor at 'index' returns integer in range [0,4095] """ if not self._is_initialized: self.initialize() return self._phidget.getSensorRawValue(index) def read_all_sensors(self): """ reads all the sensors raw values, indices 0-7 returns list of 8 integers in range [0,4095] """ if not self._is_initialized: self.initialize() values = [] for i in range(8): values.append(self.read_sensor(i)) return values def read_digital_input(self,index): """ reads the digital input at 'index' returns True if grounded, False if open (pulled-up to 5V) """ if not self._is_initialized: self.initialize() return self._phidget.getInputState(index) def write_digital_output(self,index,state): if not self._is_initialized: self.initialize() return self._phidget.setOutputState(index,state) def shutdown(self): if not self._is_initialized: self.initialize() self._phidget.closePhidget() self._is_initialized = False def __del__(self): self.shutdown()
kit.waitForAttach(2000) s = dict() s['sens'] = np.zeros((1, 2)) s['start_time'] = time.time() sec_of_dat = 600 f_s = 60 err_ind = [] for i in range(sec_of_dat * f_s): s['tic'] = time.time() sensdat = np.zeros((1, 2)) try: sensdat[0, 0] = kit.getSensorValue(0) / 1000. sensdat[0, 1] = kit.getSensorValue(1) / 1000. except: print time.time() - s['start_time'], i print kit.isAttached() err_ind.extend([i]) try: print kit.getSensorRawValue(2), kit.getSensorValue(2) except: print 'novalue' s['sens'] = np.vstack((s['sens'], sensdat)) left_over_time = np.max([0, 1000 / 60. - (time.time() - s['tic'])]) time.sleep(left_over_time / 1000.) kit.closePhidget() plt.plot(np.array(err_ind) / float(f_s))
for i in range(interfaceKitHUB.getSensorCount()): try: #intval = interfaceKitHUB.getSensorValue(i) #if 0 reading, don't try and convert #if not intval: # continue if i >= 6: #Sonar sensor range 0cm - 645cm #Plugged into analog input 6 & 7 for N (forward) and S (reverse) #turn on the sonar sensor via digital output 'i' interfaceKitHUB.setOutputState(i,True) #intval = interfaceKitHUB.getSensorValue(i) #sleep(0.1) # Wait for sonar to activate intval = interfaceKitHUB.getSensorRawValue(i) #Read sonar print intval, i distance_mm = (intval / 4.095 ) * 12.96 #convert raw value to mm #Check that value is within permissable range if distance_mm > 6450.0: distance_mm = -1 #turn off the sonar sensor via digital output 'i' interfaceKitHUB.setOutputState(i,False) sleep(0.4) #save value into array #message.append(distance_mm) else: #IR range 20cm - 150cm (2.5V - 0.4V) #Read seonsor value intval = interfaceKitHUB.getSensorRawValue(i)
for i in range(interfaceKitHUB.getSensorCount()): try: #intval = interfaceKitHUB.getSensorValue(i) #if 0 reading, don't try and convert #if not intval: # continue if i >= 6: #Sonar sensor range 0cm - 645cm #Plugged into analog input 6 & 7 for N (forward) and S (reverse) #for j in range(6,7): interfaceKitHUB.setOutputState(i,True) #intval = interfaceKitHUB.getSensorValue(i) sleep(0.1) intval = interfaceKitHUB.getSensorRawValue(i) print intval, i distance_mm = (intval / 4.095 ) * 12.96 if distance_mm > 6450.0: distance_mm = -1 interfaceKitHUB.setOutputState(i,False) sleep(0.4) message.append(distance_mm) else: #IR range 20cm - 150cm (2.5V - 0.4V) intval = interfaceKitHUB.getSensorRawValue(i) print intval distance_mm = (9462/((intval / 4.095) - 16.92)) * 10 #Not a reliable mesaurement below 200mm (20cm) or above 1500 (150cm) if (distance_mm < 200.0) or (distance_mm > 1500.0): distance_mm = -1
s = dict() s['sens'] = np.zeros((1,2)) s['start_time'] = time.time() sec_of_dat = 600 f_s = 60 err_ind = [] for i in range(sec_of_dat*f_s): s['tic'] = time.time() sensdat = np.zeros((1,2)) try: sensdat[0,0] = kit.getSensorValue(0)/1000. sensdat[0,1] = kit.getSensorValue(1)/1000. except: print time.time() - s['start_time'], i print kit.isAttached() err_ind.extend([i]) try: print kit.getSensorRawValue(2), kit.getSensorValue(2) except: print 'novalue' s['sens'] = np.vstack((s['sens'], sensdat)) left_over_time = np.max([0, 1000/60. - (time.time() - s['tic'])]) time.sleep(left_over_time/1000.) kit.closePhidget() plt.plot(np.array(err_ind)/float(f_s))
kit.waitForAttach(2000) s = dict() s['sens'] = np.zeros((1, 2)) s['start_time'] = time.time() sec_of_dat = 600 f_s = 60 err_ind = [] for i in range(sec_of_dat * f_s): s['tic'] = time.time() sensdat = np.zeros((1, 2)) try: sensdat[0, 0] = kit.getSensorValue(0) / 1000. sensdat[0, 1] = kit.getSensorValue(1) / 1000. except: print(time.time() - s['start_time'], i) print(kit.isAttached()) err_ind.extend([i]) try: print(kit.getSensorRawValue(2), kit.getSensorValue(2)) except: print('novalue') s['sens'] = np.vstack((s['sens'], sensdat)) left_over_time = np.max([0, 1000 / 60. - (time.time() - s['tic'])]) time.sleep(left_over_time / 1000.) kit.closePhidget() plt.plot(np.array(err_ind) / float(f_s))