summaryrefslogtreecommitdiff
path: root/tests/circuitpython-manual
diff options
context:
space:
mode:
authorDavePutz <dwputz@gmail.com>2021-03-02 23:03:58 -0600
committerGitHub <noreply@github.com>2021-03-02 23:03:58 -0600
commitafa508cb47a601f68f8c969400d349d60b80f6d5 (patch)
tree1ea57d299b555864ed436d4b59f1fefd64c655fb /tests/circuitpython-manual
parenteeb89a97b4a8fa25fb38e4a5d5db78c0c3df9b15 (diff)
parent4167778bbce552c6e578a74e22db922c9cfb458e (diff)
Merge pull request #42 from adafruit/main
Update from adafruit main
Diffstat (limited to 'tests/circuitpython-manual')
-rw-r--r--tests/circuitpython-manual/audiobusio/i2s_sample_loop.py36
-rw-r--r--tests/circuitpython-manual/audiobusio/pdmin_rms.py44
-rw-r--r--tests/circuitpython-manual/busio/uart_echo.py18
3 files changed, 98 insertions, 0 deletions
diff --git a/tests/circuitpython-manual/audiobusio/i2s_sample_loop.py b/tests/circuitpython-manual/audiobusio/i2s_sample_loop.py
new file mode 100644
index 000000000..c0ee5de31
--- /dev/null
+++ b/tests/circuitpython-manual/audiobusio/i2s_sample_loop.py
@@ -0,0 +1,36 @@
+import audiocore
+import audiobusio
+import board
+import digitalio
+import array
+import time
+import math
+import rp2pio
+import adafruit_pioasm
+
+time.sleep(10)
+
+trigger = digitalio.DigitalInOut(board.D4)
+trigger.switch_to_output(True)
+
+# Generate one period of sine wav.
+length = 8000 // 440
+
+# signed 16 bit
+s16 = array.array("h", [0] * length)
+for i in range(length):
+ s16[i] = int(math.sin(math.pi * 2 * i / length) * (2 ** 15))
+ print(s16[i])
+
+sample = audiocore.RawSample(s16, sample_rate=8000)
+
+dac = audiobusio.I2SOut(bit_clock=board.D10,
+ word_select=board.D11, data=board.D12)
+
+trigger.value = False
+dac.play(sample, loop=True)
+time.sleep(1)
+dac.stop()
+trigger.value = True
+
+print("done")
diff --git a/tests/circuitpython-manual/audiobusio/pdmin_rms.py b/tests/circuitpython-manual/audiobusio/pdmin_rms.py
new file mode 100644
index 000000000..8d1595752
--- /dev/null
+++ b/tests/circuitpython-manual/audiobusio/pdmin_rms.py
@@ -0,0 +1,44 @@
+import audiobusio
+import board
+import digitalio
+import array
+import time
+import math
+
+trigger = digitalio.DigitalInOut(board.D4)
+trigger.switch_to_output(True)
+
+def mean(values):
+ return sum(values) / len(values)
+
+
+def normalized_rms(values):
+ minbuf = int(mean(values))
+ samples_sum = sum(
+ float(sample - minbuf) * (sample - minbuf)
+ for sample in values
+ )
+
+ return math.sqrt(samples_sum / len(values))
+
+# signed 16 bit
+s16 = array.array("H", [0] * 10000)
+
+pdm = audiobusio.PDMIn(clock_pin=board.D11, data_pin=board.D12, sample_rate=24000, bit_depth=16)
+
+print("starting read")
+trigger.value = False
+count = pdm.record(s16, len(s16))
+trigger.value = True
+print("read done")
+print("recorded {} samples".format(count))
+for v in s16[:count]:
+ print(v)
+
+
+magnitude = normalized_rms(s16)
+print("magnitude", magnitude)
+
+print("count", count)
+
+print("done")
diff --git a/tests/circuitpython-manual/busio/uart_echo.py b/tests/circuitpython-manual/busio/uart_echo.py
new file mode 100644
index 000000000..f55d4db9e
--- /dev/null
+++ b/tests/circuitpython-manual/busio/uart_echo.py
@@ -0,0 +1,18 @@
+import busio
+import board
+import time
+
+i = 0
+
+u = busio.UART(tx=board.TX, rx=board.RX)
+
+while True:
+ u.write(str(i).encode("utf-8"))
+ time.sleep(0.1)
+ print(i, u.in_waiting) # should be the number of digits
+ time.sleep(0.1)
+ print(i, u.in_waiting) # should be the number of digits
+ r = u.read(64 + 10)
+ print(i, u.in_waiting) # should be 0
+ print(len(r), r)
+ i += 1