Example #1
0
def test_gpio_setup():
    chassis = Chassis()
    for pin in chassis.get_stepper_pins():
        assert GPIO.gpio_function(pin) == GPIO.OUT
    for pin in chassis.get_sensor_pins():
        assert GPIO.gpio_function(pin) == GPIO.IN
    chassis.cleanup()
Example #2
0
def main():
	print("Executing Program")
	counter = 0 #counter variable for progression in bit counter 
	sleep(1)
	func = GPIO.gpio_function(31)
	print(func)
	func2 = GPIO.gpio_function(33)
	print(func2)
	
	while(True):
		#if decrement button is pressed
		if GPIO.event_detected(31):  #listen for event(button press) on port 31
			counter = counter-1
			if counter == -1:
				counter=7    #implement wrap around if it gets to 0
			print(sequenceList[counter])
			GPIO.output(outputList, sequenceList[counter])    #display counter value on LED's
			sleep(.1)
			print("Decrement button is working")	
			
		#if increment button is pressed
		if GPIO.event_detected(29):   #listen for event(button press) on port 29
			counter = counter+1
			if counter == 8:
				counter=0   #implement wrap around if it gets to 7
			print(sequenceList[counter])
			GPIO.output(outputList, sequenceList[counter])    #display counter value on LED's
			sleep(.1)
			print("Increment button is working")
		sleep(1)
Example #3
0
 def __exit__(self, exc_type, exc_val, exc_tb):
     self.logger.info('GPIO channel function status:\nData pin [{0}]: {1}\nClock pin [{2}]: {3}'
                      .format(self.data_pin, GPIO_FUNCS[GPIO.gpio_function(self.data_pin)],
                              self.sck_pin, GPIO_FUNCS[GPIO.gpio_function(self.sck_pin)]))
     GPIO.cleanup()
     if exc_type is not None:
         self.logger.error('Exception in with block: {0}\n{1}\n{2}'.format(exc_type, exc_val, exc_tb))
         return False
Example #4
0
 def __exit__(self, exc_type, exc_val, exc_tb):
     self.logger.info('GPIO channel function status:\nData pin [{0}]: {1}\nClock pin [{2}]: {3}'
                      .format(self.data_pin, GPIO_FUNCS[GPIO.gpio_function(self.data_pin)],
                              self.sck_pin, GPIO_FUNCS[GPIO.gpio_function(self.sck_pin)]))
     GPIO.cleanup()
     if exc_type is not None:
         self.logger.error('Exception in with block: {0}\n{1}\n{2}'.format(exc_type, exc_val, exc_tb))
         return False
Example #5
0
def setup_pins():
    GPIO.setup(pin_0_data_to_pet, GPIO.OUT, initial=GPIO.LOW) # DATA to PET (init. val. shouldn't matter).
    GPIO.setup(pin_1_read_ack_from_pet, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # READ ACK from PET.
    GPIO.setup(pin_2_wrt_rdy_to_pet, GPIO.OUT, initial=GPIO.HIGH) # WRITE READY to PET.

    print('Pin 0 / ' + str(pin_0_data_to_pet) + ' (DATA to PET): ' + str(GPIO.gpio_function(pin_0_data_to_pet)))
    print('Pin 1 / ' + str(pin_1_read_ack_from_pet) + ' (READ ACK from PET): ' + str(GPIO.gpio_function(pin_1_read_ack_from_pet)))
    print('Pin 2 / ' + str(pin_2_wrt_rdy_to_pet) + ' (WRITE READY to PET): ' + str(GPIO.gpio_function(pin_2_wrt_rdy_to_pet)))
Example #6
0
 def test_cleanall(self):
     GPIO.setup(LOOP_OUT, GPIO.OUT)
     GPIO.setup(LED_PIN, GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
     GPIO.cleanup()
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN)
 def test_cleanall(self):
     GPIO.setup(LOOP_OUT, GPIO.OUT)
     GPIO.setup(LED_PIN, GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
     GPIO.cleanup()
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN)
Example #8
0
 def main(self, args):
     warnings.showwarning = self.showwarning
     warnings.filterwarnings('ignore', category=CompoundPiStaleSequence)
     warnings.filterwarnings('ignore', category=CompoundPiStaleClientTime)
     pidfile = daemon.runner.make_pidlockfile(args.pidfile, 5)
     if daemon.runner.is_pidfile_stale(pidfile):
         pidfile.break_lock()
     address = socket.getaddrinfo(
         args.bind, args.port, 0, socket.SOCK_DGRAM)[0][-1]
     logging.info('Listening on %s:%d', address[0], address[1])
     self.server = CompoundPiUDPServer(address, CameraRequestHandler)
     # Test GPIO before entering the daemon context (GPIO access usually
     # requires root privileges for access to /dev/mem - better to bomb out
     # earlier than later)
     GPIO.setmode(GPIO.BCM)
     GPIO.gpio_function(5)
     # Ensure the server's socket, any log file, and stderr are preserved
     # (if not forking)
     files_preserve = [self.server.socket]
     for handler in logging.getLogger().handlers:
         if isinstance(handler, logging.FileHandler):
             files_preserve.append(handler.stream)
     logging.info('Entering daemon context')
     with daemon.DaemonContext(
             # The following odd construct is to ensure detachment only
             # where sensible (see default setting of detach_process)
             detach_process=None if args.daemon else False,
             stderr=None if args.daemon else sys.stderr,
             uid=args.user, gid=args.group,
             files_preserve=files_preserve,
             pidfile=pidfile,
             signal_map={
                 signal.SIGTERM: self.terminate,
                 signal.SIGINT:  self.interrupt,
                 }
             ):
         # seed the random number generator from the system clock
         random.seed()
         logging.info('Initializing camera')
         self.server.seqno = 0
         self.server.client_address = None
         self.server.client_timestamp = None
         self.server.responders = {}
         self.server.images = []
         self.server.camera = picamera.PiCamera()
         try:
             logging.info('Starting server thread')
             thread = threading.Thread(target=self.server.serve_forever)
             thread.start()
             while thread.is_alive():
                 thread.join(1)
             logging.info('Server thread ended')
         finally:
             logging.info('Closing camera')
             self.server.camera.close()
     logging.info('Exiting daemon context')
def test_gpio_function():
    GPIO_DEVEL.Reset()
    GPIO.setmode(GPIO.BCM)

    assert GPIO.gpio_function(16) == 16

    GPIO_DEVEL.Reset()
    GPIO.setmode(GPIO.BOARD)
    
    assert GPIO.gpio_function(16) == 11
    def runTest(self):
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(LED_PIN_BCM, GPIO.IN)
        self.assertEqual(GPIO.gpio_function(LED_PIN_BCM), GPIO.IN)
        GPIO.setup(LED_PIN_BCM, GPIO.OUT)
        self.assertEqual(GPIO.gpio_function(LED_PIN_BCM), GPIO.OUT)

        GPIO.setmode(GPIO.BOARD)
        GPIO.setup(LED_PIN, GPIO.IN)
        self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN)
        GPIO.setup(LED_PIN, GPIO.OUT)
        self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
Example #11
0
    def runTest(self):
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(LED_PIN_BCM, GPIO.IN)
        self.assertEqual(GPIO.gpio_function(LED_PIN_BCM), GPIO.IN)
        GPIO.setup(LED_PIN_BCM, GPIO.OUT)
        self.assertEqual(GPIO.gpio_function(LED_PIN_BCM), GPIO.OUT)

        GPIO.setmode(GPIO.BOARD)
        GPIO.setup(LED_PIN, GPIO.IN)
        self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN)
        GPIO.setup(LED_PIN, GPIO.OUT)
        self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
Example #12
0
 def privileged_setup(self, args):
     # Bind to the socket before entering daemon context in case the port
     # requested is privileged
     address = socket.getaddrinfo(args.bind, args.port, 0,
                                  socket.SOCK_DGRAM)[0][-1]
     logging.info('Listening on %s:%d', address[0], address[1])
     self.server = CompoundPiUDPServer(address, CompoundPiServerProtocol)
     # Test GPIO before entering the daemon context (GPIO access usually
     # requires root privileges for access to /dev/mem - better to bomb out
     # earlier than later)
     GPIO.setmode(GPIO.BCM)
     GPIO.gpio_function(5)
Example #13
0
	def __del__( self ):
		"""
		----------------------------------------------------------------------
		Destructs this ultrasonic sensor, closing any open GPIO pins
		----------------------------------------------------------------------
		"""
		GPIO.setmode( GPIO.BCM )
		
		if( GPIO.gpio_function( self._trigger_pin ) != GPIO.UNKNOWN ):
			GPIO.cleanup( self._trigger_pin )
		if( GPIO.gpio_function( self._echo_pin ) != GPIO.UNKNOWN ):
			GPIO.cleanup( self._echo_pin )
Example #14
0
 def privileged_setup(self, args):
     # Bind to the socket before entering daemon context in case the port
     # requested is privileged
     address = socket.getaddrinfo(
         args.bind, args.port, 0, socket.SOCK_DGRAM)[0][-1]
     logging.info('Listening on %s:%d', address[0], address[1])
     self.server = CompoundPiUDPServer(address, CompoundPiServerProtocol)
     # Test GPIO before entering the daemon context (GPIO access usually
     # requires root privileges for access to /dev/mem - better to bomb out
     # earlier than later)
     GPIO.setmode(GPIO.BCM)
     GPIO.gpio_function(5)
Example #15
0
 def __exit__(self, exc_type, exc_val, exc_tb):
     self.logger.info('GPIO channel function status:\n'
                      'Clock pin [{0}]: {1}\n'
                      'MOSI pin [{2}]: {3}\n'
                      'MISO pin [{4}]: {5}\n'
                      'CS pin [{6}]: {7}'
                      .format(self._sck_pin, GPIO_FUNCS[GPIO.gpio_function(self._sck_pin)],
                              self._mosi_pin, GPIO_FUNCS[GPIO.gpio_function(self._mosi_pin)],
                              self._miso_pin, GPIO_FUNCS[GPIO.gpio_function(self._miso_pin)],
                              self._cs_pin, GPIO_FUNCS[GPIO.gpio_function(self._cs_pin)]))
     GPIO.cleanup()
     if exc_type is not None:
         self.logger.error('Exception in with block: {0}\n{1}\n{2}'.format(exc_type, exc_val, exc_tb))
         return False
Example #16
0
 def test_cleanone(self):
     GPIO.setup(LOOP_OUT, GPIO.OUT)
     GPIO.setup(LED_PIN, GPIO.OUT)
     GPIO.setup(SWITCH_PIN, GPIO.IN)
     GPIO.setup(LOOP_IN, GPIO.IN)
     GPIO.add_event_detect(SWITCH_PIN, GPIO.FALLING)
     GPIO.add_event_detect(LOOP_IN, GPIO.RISING)
     time.sleep(0.2)  # wait for udev to set permissions
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(SWITCH_PIN), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LOOP_IN), GPIO.IN)
     self.assertTrue(
         os.path.exists('/sys/class/gpio/gpio%s' % SWITCH_PIN_BCM))
     self.assertTrue(os.path.exists('/sys/class/gpio/gpio%s' % LOOP_IN_BCM))
     GPIO.cleanup(SWITCH_PIN)
     time.sleep(0.2)  # wait for udev to set permissions
     self.assertFalse(
         os.path.exists('/sys/class/gpio/gpio%s' % SWITCH_PIN_BCM))
     self.assertTrue(os.path.exists('/sys/class/gpio/gpio%s' % LOOP_IN_BCM))
     GPIO.cleanup(LOOP_IN)
     time.sleep(0.2)  # wait for udev to set permissions
     self.assertFalse(
         os.path.exists('/sys/class/gpio/gpio%s' % SWITCH_PIN_BCM))
     self.assertFalse(os.path.exists('/sys/class/gpio/gpio%s' %
                                     LOOP_IN_BCM))
     GPIO.cleanup(LOOP_OUT)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
     GPIO.cleanup(LED_PIN)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN)
	def __init__(self, input_a, input_b, start_speed = 100.0, speed_change = 10.0, start_direction = 0):
		#if speed_change < 0.0 or speed_change > 100.0:
			#raise ValueError("Speed change must be between 0.0 and 100.0")
		GPIO.setmode(GPIO.BOARD)
		self._input_a_original = GPIO.gpio_function(input_a)
		self._input_b_original = GPIO.gpio_function(input_b)
		self._input_a = input_a
		self._input_b = input_b
		GPIO.setup(self._input_a, GPIO.OUT)
		GPIO.setup(self._input_b, GPIO.OUT)
		self._direction = start_direction
		self._pwm = None
		self._pwm_duty_cycle = 100.0 - start_speed
		self._pwm_duty_cycle_step = speed_change
		self._status = L9110MotorController.STATUS_STOPPED
Example #18
0
def index(request):
    context = {}
    mode = _handle_mode(request)
    context["mode"] = MODE_TO_STR[mode]
    if mode == io.BCM:
        MAX_PINS = 26
    else:
        MAX_PINS = 40
    pin_states = []
    for i in range(1, MAX_PINS+1):
        try:
            m = io.gpio_function(i)
            if m <= 1:
                io.setup(i, m)
                s = io.input(i)
            else:
                s = 'NA'
            pin_states.append(dict(number=i,
                                    type=LOOKUP[m],
                                    state=s,
                                    is_input=s==io.IN,
                                    is_serial=s not in [io.IN,io.OUT],
                                    min=0,
                                    max=100,
                                    value=0))
        except ValueError:
            logging.debug("Bad pin {}".format(i))
    context["pin_states"] = pin_states
    return render(request, 'pinner.html', context)
Example #19
0
def test_gpio_function():
    GPIO.setmode(GPIO.BCM)
    for chan in range(54):
        try:
            f = GPIO.gpio_function(chan)
            if f == GPIO.IN:
                func = 'INPUT'
            elif f == GPIO.OUT:
                func = 'OUTPUT'
            elif f == GPIO.SERIAL:
                func = 'SERIAL'
            elif f == GPIO.I2C:
                func = 'I2C'
            elif f == GPIO.SPI:
                func = 'SPI'
            elif f == GPIO.PWM:
                func = 'PWM'        
            elif f == GPIO.UNKNOWN:
                func = 'UNKNOWN'
            else:
                func = 'ERROR'
            print('GPIO %s func=%s'%(chan,func))
        except ValueError: # ignore unused channels
            pass
    GPIO.setmode(GPIO.BOARD)
Example #20
0
 def on_api_command(self, command, data):
     try:
         selected_power = int(data.get("power"))
         selected_pin = int(data.get("pin"))
         GPIO.setmode(GPIO.BOARD)
         # first check pins not in use already
         usage = GPIO.gpio_function(selected_pin)
         self._logger.debug("usage on pin %s is %s" % (selected_pin, usage))
         # 1 = input
         if usage is not 1:
             # 555 is not http specific so I chose it
             return "", 555
         # before read don't let the pin float
         if selected_power is 0:
             GPIO.setup(selected_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
         else:
             GPIO.setup(selected_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
         pin_value = GPIO.input(selected_pin)
         # reset input to pull down after read
         GPIO.cleanup(selected_pin)
         triggered_bool = pin_value is selected_power
         return flask.jsonify(triggered=triggered_bool)
     except ValueError:
         # ValueError occurs when reading from power or ground pins
         return "", 556
Example #21
0
 def readIOState(self, pins):
     states = {}
     for pin in pins:
         states['pin' + str(pin)] = \
             {'function': self.pins_functions[GPIO.gpio_function(pin)],
              'value': GPIO.input(pin), 'pin': pin}
     return states
Example #22
0
def mode(environ, response, parameter = None):

	pin_modes = {
		1: "GPIO.IN", 
		0: "GPIO.OUT", 
		41: "GPIO.SPI", 
		42: "GPIO.I2C", 
		43: "GPIO.HARD_PWM", 
		40: "GPIO.SERIAL", 
		-1: "GPIO.UNKNOWN"
	}
	
	status = "200 OK"
	
	header = [
		("Content-Type", "application/json"),
		("Cache-Control", "no-store, no-cache, must-revalidate"),
		("Expires", "0")
	]
	
	try:
	
		result = pin_modes[ GPIO.gpio_function(int(parameter[0])) ]
	
	except Exception as e:

		status = "400 Bad Request"

		result = str(e)

	response(status, header)

	return [json.dumps(result).encode()]
Example #23
0
 def __init__(self,pinlist):
     self._pins = pinlist
     for p in pinlist:
         if GPIO.gpio_function(p)==GPIO.OUT:
             GPIO.setup(p,GPIO.OUT)
         else:
             GPIO.setup(p,GPIO.OUT,initial=GPIO.LOW)
Example #24
0
 def inner(pins, *args, **kwargs):
     if pins is None:
         raise NoSuchPinException
     for pin in pins:
         if GPIO.gpio_function(pin) != GPIO.OUT:
             raise InvalidIOMode
     return func(pins, *args, **kwargs)
Example #25
0
 def pincheck(self):
     bRet = True
     dummy = gpio.gpio_function(self.PinIn1)
     if dummy not in [-1,1]: 
         self.Log = ('PinIn1: %s!') % pin_use[dummy]
         bRet = False
     dummy = gpio.gpio_function(self.PinIn2)
     if dummy not in [-1,1]: 
        self.Log = ('PinIn2: %s!') % pin_use[dummy]
        bRet = False
     if self.PinEnable > 0:
         dummy = gpio.gpio_function(self.PinEnable)
         if dummy not in [-1,1]: 
             self.Log = ('PinEnable: %s!') % pin_use[dummy]
             bRet = False
     return bRet
Example #26
0
def test_gpio_function():
    GPIO.setmode(GPIO.BCM)
    for chan in range(54):
        try:
            f = GPIO.gpio_function(chan)
            if f == GPIO.IN:
                func = 'INPUT'
            elif f == GPIO.OUT:
                func = 'OUTPUT'
            elif f == GPIO.SERIAL:
                func = 'SERIAL'
            elif f == GPIO.I2C:
                func = 'I2C'
            elif f == GPIO.SPI:
                func = 'SPI'
            elif f == GPIO.PWM:
                func = 'PWM'
            elif f == GPIO.UNKNOWN:
                func = 'UNKNOWN'
            else:
                func = 'ERROR'
            print('GPIO %s func=%s' % (chan, func))
        except ValueError:  # ignore unused channels
            pass
    GPIO.setmode(GPIO.BOARD)
Example #27
0
def DataFile():
    pinNum = []
    mode = []
    voltage = []
    for i in range(32):
        pinNum.append(i)
        thisMode = GPIO.gpio_function(i)
        if thisMode == 1:
            mode.append("IN")
            GPIO.setup(i, GPIO.IN)
            voltage.append(GPIO.input(i))
        elif thisMode == 0:
            mode.append("OUT")
            GPIO.setup(i, GPIO.OUT)
            voltage.append(GPIO.input(i))
        else:
            mode.append("ALT[#]")
            voltage.append(-1)

    file = open("data.txt", "w")
    simplejson.dump(pinNum, file)
    file.write("\n")
    simplejson.dump(mode, file)
    file.write("\n")
    simplejson.dump(voltage, file)
    file.write("\n")
    file.close()
    total = []
    for i in range(32):
        total.append("Pin " + str(i) + ",type " + mode[i] + ", voltage " +
                     str(voltage[i]) + "\n")
    showinfo("All data", total)
Example #28
0
def checkPin(pinNumber):
    cPin = pinList[pinNumber]
    cPin.type.value = pinTypeKey[boardType[pinNumber]]
    if cPin.type.value == 'GPIO':
        cPin.usage.value = portUse[GPIO.gpio_function(pinNumber)]
        cPin.voltage.value = voltageDict[voltage(pinNumber)]
        cPin.bcm.value = bcmDict[pinNumber]
    def on_settings_save(self, data):
        if "pin" in data and "gpio_mode" in data:

            mode_to_save = int(data.get("gpio_mode"))
            pin_to_save = int(data.get("pin"))

            if pin_to_save is not None:
                # check if pin is not power/ground pin or out of range but allow -1
                if pin_to_save is not self.pin_num_disabled:
                    try:
                        # BOARD
                        if mode_to_save is 10:
                            # before saving check if pin not used by others
                            usage = GPIO.gpio_function(pin_to_save)
                            self._logger.debug("usage on pin %s is %s" %
                                               (pin_to_save, usage))
                            if usage is not 1:
                                self._logger.info(
                                    "You are trying to save pin %s which is already used by others"
                                    % (pin_to_save))
                                self._plugin_manager.send_plugin_message(
                                    self._identifier,
                                    dict(
                                        type="error",
                                        autoClose=True,
                                        msg=
                                        "Settings not saved, you are trying to save pin which is already used by others"
                                    ))
                                return

                        # BCM
                        elif mode_to_save is 11:
                            if pin_to_save > 27:
                                self._logger.info(
                                    "You are trying to save pin %s which is out of range"
                                    % (pin_to_save))
                                self._plugin_manager.send_plugin_message(
                                    self._identifier,
                                    dict(
                                        type="error",
                                        autoClose=True,
                                        msg=
                                        "Settings not saved, you are trying to save pin which is out of range"
                                    ))

                    except ValueError:
                        self._logger.info(
                            "You are trying to save pin %s which is ground/power pin or out of range"
                            % (pin_to_save))
                        self._plugin_manager.send_plugin_message(
                            self._identifier,
                            dict(
                                type="error",
                                autoClose=True,
                                msg=
                                "Settings not saved, you are trying to save pin which is ground/power pin or out of range"
                            ))
                        return
        octoprint.plugin.SettingsPlugin.on_settings_save(self, data)
Example #30
0
 def registerHandler(self, icallback):
     print("icallback")
     print(icallback)
     print(self.pinNum)
     print("Self")
     print(self)
     self.inputcallback = icallback
     print(GPIO.gpio_function(self.pinNum))
Example #31
0
def init():
    """Prepare the GPIO pins by setting the mode they will be referenced
    and running cleanup"""
    gpio.setmode(REFMODE)
    for i in PINS:
	if gpio.gpio_function(i) == gpio.OUT:
	    gpio.cleanup()
	    break
Example #32
0
 def setupPin(self, pin, force=False):
     func = GPIO.gpio_function(pin)
     
     if func != 0 and force != True:
         raise PinInUseError(pin, func)
     else:
         GPIO.setup(pin, GPIO.IN)
     return 0
Example #33
0
def init():
    """Prepare the GPIO pins by setting the mode they will be referenced
    and running cleanup"""
    gpio.setmode(REFMODE)
    for i in PINS:
	if gpio.gpio_function(i) == gpio.OUT:
	    gpio.cleanup()
	    break
Example #34
0
 def _pin_direction(self, pin):
     pin = self.__pin_to_int(pin)
     function = GPIO.gpio_function(pin)
     if function == GPIO.IN:
         return ahio.Direction.Input
     elif function == GPIO.OUT or function == GPIO.PWM:
         return ahio.Direction.Output
     else:
         return None
Example #35
0
File: main.py Project: pifopi/drone
def PWM_Fun (pin, duty_cycle) :

	GPIO.setmode (GPIO.BOARD)
	frequence = 50
	GPIO.setup (pin, GPIO.OUT)
	state = GPIO.gpio_function (pin)
	print ("On est dans l'etat {0} pour la pin {1} avec un duty cycle de {2} !".format (state, pin, duty_cycle))
	pwm = GPIO.PWM (pin, frequence)
	pwm.start (duty_cycle)
	return pwm
Example #36
0
def getPinFunctionName(pin):
    functions = {GPIO.IN:'Input',
                 GPIO.OUT:'Output',
                 GPIO.I2C:'I2C',
                 GPIO.SPI:'SPI',
                 GPIO.HARD_PWM:'HARD_PWM',
                 GPIO.SERIAL:'Serial',
                 GPIO.UNKNOWN:'Unknown'}
                 
    return functions[GPIO.gpio_function(pin)]
Example #37
0
 def getPinFunctionName(self):
     pin = self.pin
     functions = {pi.IN:'Input',
                  pi.OUT:'Output',
                  pi.I2C:'I2C',
                  pi.SPI:'SPI',
                  pi.HARD_PWM:'HARD_PWM',
                  pi.SERIAL:'Serial',
                  pi.UNKNOWN:'Unknown'}                     
     return functions[pi.gpio_function(pin)]
Example #38
0
	def rpi_gpio_chk_function(self):
		retstr = ''
		pin=10
		func = GPIO.gpio_function(pin)
		if func == GPIO.SPI:
			retstr += 'SPI '
			pin=2
		func = GPIO.gpio_function(pin)
		if func == GPIO.I2C:
			retstr += 'I2C '
		pin=14
		func = GPIO.gpio_function(pin)
		if func == GPIO.SERIAL:
			retstr += 'Serial '
		pin=18
		func = GPIO.gpio_function(pin)
		if func == GPIO.HARD_PWM:
			retstr += 'PWM '
		return(retstr)
Example #39
0
 def getPinFunctionName(self):
     pin = self.pin
     functions = {pi.IN:'Input',
                  pi.OUT:'Output',
                  pi.I2C:'I2C',
                  pi.SPI:'SPI',
                  pi.HARD_PWM:'HARD_PWM',
                  pi.SERIAL:'Serial',
                  pi.UNKNOWN:'Unknown'}                     
     return functions[pi.gpio_function(pin)]
Example #40
0
 def gpio_function_name_from_pin(self,gpio):
  typestr = "Unknown"
  try:
   pinnum = int(gpio)
   if pinnum>0:
    typeint = GPIO.gpio_function(pinnum)
    typestr = self.gpio_function_name(typeint)
  except Exception as e:
   typestr = "Unknown"
  return typestr
Example #41
0
def gpio_is_in_use(gpio):
    """
    check if GPIO is in use
    """
    gpio_used = gpio.gpio_function(gpio)
    
    if gpio_used == -1:
        return False
    else:
        return True
 def __init__(self,
              input_a,
              input_b,
              start_speed=100.0,
              speed_change=10.0,
              start_direction=0):
     #if speed_change < 0.0 or speed_change > 100.0:
     #raise ValueError("Speed change must be between 0.0 and 100.0")
     GPIO.setmode(GPIO.BOARD)
     self._input_a_original = GPIO.gpio_function(input_a)
     self._input_b_original = GPIO.gpio_function(input_b)
     self._input_a = input_a
     self._input_b = input_b
     GPIO.setup(self._input_a, GPIO.OUT)
     GPIO.setup(self._input_b, GPIO.OUT)
     self._direction = start_direction
     self._pwm = None
     self._pwm_duty_cycle = 100.0 - start_speed
     self._pwm_duty_cycle_step = speed_change
     self._status = L9110MotorController.STATUS_STOPPED
Example #43
0
    def __init__(self, firstPin, lastPin):
        self.pins = []
        for p in range(firstPin, lastPin + 1):
            func = ""
            try:
                func = GPIO.gpio_function(p)
            except ValueError:
                func = -2
            self.pins.append(PinIO(p, func, False))

        print("RPi constructor")
Example #44
0
		def status(self):  
			port_list = {0:"GPIO.OUT", 1:"GPIO.IN",40:"GPIO.SERIAL",41:"GPIO.SPI",42:"GPIO.I2C",43:"GPIO.HARD_PWM", -1:"GPIO.UNKNOWN"}  
			# loop through the list of ports/pins querying and displaying the status of each  
			nothing = "Pin type not available in port_list"
			port_used = GPIO.gpio_function(self.pin)
			for k,v in port_list.items():
				if port_used == k:
					return v  
				else:
					logging.info(" Status Unknown ")
					return "none" 
Example #45
0
    def getgpiomode(self, pin, text=False):
        if not self._init:
            return 10

        if not pin in self._gpioavailable:
            return 5

        tmp = GPIO.gpio_function(pin)
        if text:
            return self._gpiostate[tmp]
        return tmp
Example #46
0
def getPinFunctionName(pin):
    # Unused
    functions = {GPIO.IN:'Input',
                 GPIO.OUT:'Output',
                 GPIO.I2C:'I2C',
                 GPIO.SPI:'SPI',
                 GPIO.HARD_PWM:'HARD_PWM',
                 GPIO.SERIAL:'Serial',
                 GPIO.UNKNOWN:'Unknown'}

    return functions[GPIO.gpio_function(pin)]
Example #47
0
	def getgpiomode(self,pin,text=False):
                if not self._init:
                        return 10

                if not pin in self._gpioavailable:
                        return 5

		tmp=GPIO.gpio_function(pin)
		if text:
			return self._gpiostate[tmp]
		return tmp
Example #48
0
def test_gpio_function():
    for chan in range(54):
        f = GPIO.gpio_function(chan)
        if f == GPIO.IN:
            func = 'INPUT'
        elif f == GPIO.OUT:
            func = 'OUTPUT'
        elif f == GPIO.ALT0:
            func = 'ALT0'
        else:
            func = 'UNKNOWN'
        print('chan=%s func=%s' % (chan, func))
def test_gpio_function():
    for chan in range(54):
        f = GPIO.gpio_function(chan)
        if f == GPIO.IN:
            func = 'INPUT'
        elif f == GPIO.OUT:
            func = 'OUTPUT'
        elif f == GPIO.ALT0:
            func = 'ALT0'
        else:
            func = 'UNKNOWN'
        print('chan=%s func=%s'%(chan,func))
Example #50
0
def setGpioInput(pin_number, pull_up_down, call_back_func, bounce_time):
    if (pin_number not in Pi_Non_GPIO_Pin_List) and pin_number<=30:
        setting = GPIO.gpio_function(pin_number)
        #if setting==GPIO.IN:
        #    return    
        GPIO.setup(pin_number, GPIO.IN, pull_up_down)
        GPIO.add_event_detect(pin_number, GPIO.BOTH)
        #if pull_up_down==GPIO.PUD_UP: 
        #    GPIO.add_event_detect(pin_number, GPIO.FALLING)
        #elif pull_up_down==GPIO.PUD_DOWN:
        #    GPIO.add_event_detect(pin_number, GPIO.RISING)
        #if call_back_func in vars():
        GPIO.add_event_callback(pin_number, call_back_func, bounce_time)
Example #51
0
 def test_cleanlist(self):
     GPIO.setup(LOOP_OUT, GPIO.OUT)
     GPIO.setup(LED_PIN, GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
     GPIO.cleanup([LOOP_OUT])
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
     GPIO.cleanup([LED_PIN])
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN)
     GPIO.setup(LOOP_OUT, GPIO.OUT)
     GPIO.setup(LED_PIN, GPIO.OUT)
     GPIO.cleanup([LOOP_OUT,LED_PIN])
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN)
Example #52
0
def gpio_status(pin):
    status = "on"
    direction = GPIO.gpio_function(pin)

    if (direction == GPIO.IN):
        status = "off"
    elif (direction == GPIO.OUT):
        GPIO.setup(pin, GPIO.OUT)
        if (GPIO.input(pin) == GPIO.HIGH):
            status = "off"
    else:
        return "Unknown GPIO" + str(pin) + " function: " + str(direction)

    return "GPIO" + str(pin) + ": " + status
def diag():
  print("Revision:", GPIO.RPI_INFO['REVISION'])
  print("Version:", GPIO.VERSION)

  print('Board mode', nrmodes[GPIO.getmode()])
  GPIO.setmode(GPIO.BCM)
  print('Board mode', nrmodes[GPIO.getmode()])

  for i in range(2,28):
    pm = pinmodes[GPIO.gpio_function(i)]
    if pm == 'IN':
      GPIO.setup(i, GPIO.IN)
      print('Pin {:2d} {:4s} {} {}'.format(i, pm, GPIO.input(i), tctl[i]))
    else:
      print('Pin {:2d} {:6s} {}'.format(i, pm, tctl[i]))
Example #54
0
def piGpioCommandCallback(handler):

    command_string_list = commandStringSplit(handler.data)
    
    if len(command_string_list)<4 or (not 'pi' in command_string_list):
        return
    
    if 'io' in command_string_list:
        pin_number = int(command_string_list[2])
        if 'out' in command_string_list and '1' in command_string_list:
            print pin_number
            setGpioOutput(pin_number, GPIO.HIGH)
            return handler.data
            
        elif 'out' in command_string_list and '0' in command_string_list:
            print pin_number
            setGpioOutput(pin_number, GPIO.LOW)
            return handler.data
            
        #elif 'in' in command_string_list:
            #setGpioInput(pin_number, GPIO.PUD_UP, gpioInputCallback, 10)
            #return handler.data
        #elif 'Input:PullDown' in command_string_list:
            #setGpioInput(pin_number, GPIO.PUD_DOWN, gpioInputCallback, 10)
        elif 'req' in command_string_list:
            setting = GPIO.gpio_function(pin_number)
            if setting==GPIO.IN:
                return (handler.data+'in')
            else:
                return (handler.data+'out')
        elif 'set' in command_string_list and 'In' in command_string_list:
            setGpioInput(pin_number, GPIO.PUD_UP, gpioInputCallback, 10)
            return handler.data	
        elif 'set' in command_string_list and 'Out' in command_string_list:
            print "set pin to output"
            GPIO.remove_event_detect(pin_number)
            GPIO.setup(pin_number, GPIO.OUT)
            return handler.data	
        elif 'level' in command_string_list:
            if GPIO.input(pin_number)==1:
                msgOut = 'pi.io.level.1.' + str(pin_number)
            else:
                msgOut = 'pi.io.level.0.' + str(pin_number)
            sendToTcpServer(msgOut)
            return ''

      
    return 'error'          
Example #55
0
def reset_pin(_M, _time):
    import RPi.GPIO as GPIO
    from models import session
    from models import Device
    from models import Module
    from models import Event_Log
    from time import sleep
    from sys import stdout
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)
    if GPIO.gpio_function(_M.gpio) == 0:
        switch_on(_M)
        sleep(_time)
        switch_off(_M)
    else:
        print 'ERROR! This pin is set as a input'
Example #56
0
def switch_off(_M):
    import RPi.GPIO as GPIO
    from models import session
    from models import Device
    from models import Module
    from models import Event_Log
    from time import sleep
    from sys import stdout
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)
    if GPIO.gpio_function(_M.gpio) == 0:
        GPIO.setup(_M.gpio, GPIO.OUT, initial=GPIO.HIGH)
        GPIO.output(_M.gpio, GPIO.LOW)
        _M.status = False
        session.commit()
    else:
        print 'ERROR! This pin is set as a input'
Example #57
0
 def test_cleantuple(self):
     GPIO.setup(LOOP_OUT, GPIO.OUT)
     GPIO.setup(LED_PIN, GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.OUT)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
     GPIO.cleanup((LOOP_OUT,))
     GPIO.setmode(GPIO.BOARD)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.OUT)
     GPIO.cleanup((LED_PIN,))
     GPIO.setmode(GPIO.BOARD)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN)
     GPIO.setup(LOOP_OUT, GPIO.OUT)
     GPIO.setup(LED_PIN, GPIO.OUT)
     GPIO.cleanup((LOOP_OUT,LED_PIN))
     GPIO.setmode(GPIO.BOARD)
     self.assertEqual(GPIO.gpio_function(LOOP_OUT), GPIO.IN)
     self.assertEqual(GPIO.gpio_function(LED_PIN), GPIO.IN)
Example #58
0
def main(args=None):
  cli = argparse.ArgumentParser()
  cli.add_argument(
    '-s', '--status',
    dest='exitcode', default=False, action='store_true',
    help='use the exit status to indicate pin state (with no output)')
  cli.add_argument(
    metavar='PIN',
    dest='pin', type=int,
    help='the GPIO pin number to read from or write to')
  cli.add_argument(
    metavar='STATE', nargs='?',
    dest='state', default=None, type=boolstr,
    help='if specified, the boolean state to write to PIN')
  options = cli.parse_args(args)

  # todo: figure out how to leave the state of a pin permanent...
  # (then i can re-enable the ".cleanup")
  GPIO.setwarnings(False)

  GPIO.setmode(GPIO.BCM)
  curfunc = GPIO.gpio_function(options.pin)

  try:

    if options.state is None:
      GPIO.setup(options.pin, curfunc)
      if options.exitcode:
        return GPIO.input(options.pin)
      print 'function:',function_map.get(curfunc, '[invalid]')
      print 'state:',GPIO.input(options.pin)
      return 0

    GPIO.setup(options.pin, GPIO.OUT)
    GPIO.output(options.pin, options.state)
    return 0

  finally:
    pass
Example #59
0
    def state(self):
        state = {}
        mode = {}
        mode_strs = {
            GPIO.IN: "input",
            GPIO.OUT: "output",
            GPIO.SPI: "SPI",
            GPIO.I2C: "I2C",
            GPIO.HARD_PWM: "hard PWM",
            GPIO.SERIAL: "serial",
            GPIO.UNKNOWN: "unknown"
        }
        pin = 1
        try:
            while pin < 100:
                state[pin] = GPIO.input(pin)
                mode[pin] = mode_strs[GPIO.gpio_function(pin)]
                pin += 1
        except Exception as e:
            print(e)

        return ok_msg({ 'state': state, 'mode': mode })
Example #60
0
def _handle_mode(request):
    """
    given a request, look for mode= in the query args and set the current mode to that if needed

    update the mode
    add a message to the request
    return the MODES
    """
    strmode = request.GET.get('mode', "")
    old_mode = io.getmode()
    if not strmode:
        mode = old_mode
    else:
        mode = MODES[strmode.lower()]
    if old_mode != mode:
        io.setup(3, io.gpio_function(3))  # THIS IS A HACK TO GET CLEANUP TO WORK
        io.cleanup()
        try:
            io.setmode(mode)
            messages.warning(request, "New io mode: {}.  All pins reset".format(MODE_TO_STR[mode]))
        except ValueError:
            messages.error(request, "Could not switch to new io mode: {}".format(MODE_TO_STR[mode]))
            mode = old_mode
    return mode