Skip to content

Commit 00934d8

Browse files
authored
Merge pull request #1824 from kattni/i2s-template
Add I2S pin script, fix cap-touch script
2 parents 6d19471 + b678678 commit 00934d8

5 files changed

Lines changed: 80 additions & 7 deletions

File tree

CircuitPython_Templates/audio_find_pins/code.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def get_unique_pins():
3131
"DOTSTAR_DATA",
3232
"APA102_SCK",
3333
"APA102_MOSI",
34-
"L",
34+
"LED",
3535
"SWITCH",
3636
"BUTTON",
3737
]

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():

CircuitPython_Templates/i2c_find_pins/code.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,27 @@ def is_hardware_i2c(scl, sda):
1616

1717

1818
def get_unique_pins():
19-
exclude = ['NEOPIXEL', 'APA102_MOSI', 'APA102_SCK']
20-
pins = [pin for pin in [
21-
getattr(board, p) for p in dir(board) if p not in exclude]
22-
if isinstance(pin, Pin)]
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+
"LED",
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+
]
2340
unique = []
2441
for p in pins:
2542
if p not in unique:
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+
"LED",
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)