Skip to content

Commit dfd784c

Browse files
committed
Add I2S pin script, fix cap-touch script
1 parent 6d19471 commit dfd784c

3 files changed

Lines changed: 58 additions & 2 deletions

File tree

CircuitPython_Templates/cap_touch_pin_script/.circuitpython.skip

Lines changed: 0 additions & 1 deletion
This file was deleted.

CircuitPython_Templates/cap_touch_pin_script/code.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def is_touch_capable(pin_name):
1717
else:
1818
return False # Otherwise, the pins are invalid.
1919
except TypeError: # Error returned when checking a non-pin object in dir(board).
20-
pass # Passes over non-pin objects in dir(board).
20+
return False # Invalid if non-pin objects in dir(board).
2121

2222

2323
def get_pin_names():
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
"""
2+
CircuitPython I2S Pin Combination Identification Script
3+
"""
4+
import board
5+
import audiobusio
6+
from microcontroller import Pin
7+
8+
9+
def is_hardware_i2s(bit_clock, word_select, data):
10+
try:
11+
p = audiobusio.I2SOut(bit_clock, word_select, data)
12+
p.deinit()
13+
return True
14+
except ValueError:
15+
return False
16+
17+
18+
def get_unique_pins():
19+
exclude = [
20+
getattr(board, p)
21+
for p in [
22+
# This is not an exhaustive list of unexposed pins. Your results
23+
# may include other pins that you cannot easily connect to.
24+
"NEOPIXEL",
25+
"DOTSTAR_CLOCK",
26+
"DOTSTAR_DATA",
27+
"APA102_SCK",
28+
"APA102_MOSI",
29+
"L",
30+
"SWITCH",
31+
"BUTTON",
32+
]
33+
if p in dir(board)
34+
]
35+
pins = [
36+
pin
37+
for pin in [getattr(board, p) for p in dir(board)]
38+
if isinstance(pin, Pin) and pin not in exclude
39+
]
40+
unique = []
41+
for p in pins:
42+
if p not in unique:
43+
unique.append(p)
44+
return unique
45+
46+
47+
for bit_clock_pin in get_unique_pins():
48+
for word_select_pin in get_unique_pins():
49+
for data_pin in get_unique_pins():
50+
if bit_clock_pin is word_select_pin or bit_clock_pin is data_pin or word_select_pin \
51+
is data_pin:
52+
continue
53+
if is_hardware_i2s(bit_clock_pin, word_select_pin, data_pin):
54+
print("Bit clock pin:", bit_clock_pin, "\t Word select pin:", word_select_pin,
55+
"\t Data pin:", data_pin)
56+
else:
57+
pass

0 commit comments

Comments
 (0)