123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- def gpio(pin, mode='r', value=0,default=-1):
- pmap = {
- b'A0' : 0,
- b'D3' : 0,
- b'D10' : 1,
- b'LED' : 2, #inverted
- b'D4' : 2,
- b'D9' : 3,
- b'D2' : 4,
- b'D1' : 5,
- #6
- b'SD0' : 7,
- b'SD1' : 8,
- b'SD2' : 9,
- b'SDD2' : 9,
- b'SDD3' : 10,
- b'SD3' : 10,
- b'CMD' : 11,
- b'SDCMD' : 11,
- b'D6' : 12,
- b'HMISO' : 12,
- b'D7' : 13,
- b'HMOSI' : 13,
- b'D5' : 14,
- b'HCLK' : 14,
- b'D8' : 15,
- b'HCS' : 15,
- b'D0' : 16,
- }
- if isinstance(pin,str):
- pin = pin.upper()
- thepin = pmap.get( bytes(pin,'utf-8'), default)
- else:
- thepin = int(pin)
- if not thepin in use.GPIO:
- import machine
- if 'w' in mode:
- instance = machine.Pin(thepin,mode=machine.Pin.OUT,value=value)
- if 's' in mode:
- pdb('211:servo')
- if 'p' in mode:
- pdb('213:pwm')
- elif 'r' in mode:
- instance = machine.Pin(thepin,mode=machine.Pin.IN)
- else:
- pdb('27: miss pin (%S)%s mode' % (thepin, pin) )
- raise ValueError("invalid pin mode r/w != '%s'" % mode)
- use.GPIO[thepin] = instance
- return use.GPIO.get(thepin)
|