diff --git a/software/src/led_test.py b/software/src/led_test.py deleted file mode 100644 index 0674460..0000000 --- a/software/src/led_test.py +++ /dev/null @@ -1,58 +0,0 @@ -# SPDX-License-Identifier: MIT -# Copyright (c) 2024 Matthias Blankertz - -# Run with mpremote.py run src/led_test.py - -from machine import Pin -from math import pi, sin, pow -from micropython import const -from rp2_neopixel import NeoPixel -from time import sleep, ticks_ms -import asyncio - -pin = Pin.board.GP16 -leds = const(10) -brightness = 0.5 - -np = NeoPixel(pin, leds) - -# test fill and write - -print("LEDs should now turn red") -np.fill((255, 0, 0)) -np.write() -sleep(1) - -print("LEDs should now turn green") -np.fill((0, 255, 0)) -np.write() -sleep(1) - -print("LEDs should now turn blue") -np.fill((0, 0, 255)) -np.write() -sleep(1) - - -# test async -def gamma(value, X=2.2): - return min(max(int(brightness * pow(value / 255.0, X) * 255.0 + 0.5), 0), 255) - - -async def rainbow(np, period=10): - count = 0.0 - while True: - for i in range(leds): - ofs = (count + i) % leds - np[i] = (gamma((sin(ofs / leds * 2 * pi) + 1) * 127), - gamma((sin(ofs / leds * 2 * pi + 2/3*pi) + 1) * 127), - gamma((sin(ofs / leds * 2 * pi + 4/3*pi) + 1) * 127)) - count += 0.2 - before = ticks_ms() - await np.async_write() - now = ticks_ms() - if before + 20 > now: - await asyncio.sleep_ms(20 - (now - before)) - -print("LEDs should now start rainbowing") -asyncio.run(rainbow(np)) diff --git a/software/src/mfrc522_test.py b/software/src/mfrc522_test.py deleted file mode 100644 index 2144183..0000000 --- a/software/src/mfrc522_test.py +++ /dev/null @@ -1,73 +0,0 @@ -from mfrc522 import MFRC522 -import asyncio -import time - -delay_sum = 0 -delay_count = 0 -max_delay = 0 - - -async def latency_test(): - global delay_sum - global delay_count - global max_delay - global min_delay - min_delay = 0xffffffff - await asyncio.sleep_ms(1) - while True: - for _ in range(2000): - before = time.ticks_us() - await asyncio.sleep(0) - after = time.ticks_us() - delay = after - before - delay_sum += delay - delay_count += 1 - if delay > max_delay: - max_delay = delay - if delay < min_delay: - min_delay = delay - await asyncio.sleep_ms(1) - print(f"delay (min / max / avg) [µs]: ({min_delay} / {max_delay} / {delay/delay_sum})") - - -def uid_to_string(uid: list): - return '0x' + ''.join(f'{i:02x}' for i in uid) - - -async def get_tag_uid(reader: MFRC522, poll_interval_ms: int = 50) -> list: - ''' - The maximum measured delay with poll_interval_ms=50 and a reader with tocard_retries=5 is - 15.9 ms: - delay (min / max / avg) [µs]: (360 / 15945 / 1.892923e-06) - - The maximum measured delay dropped to 11.6 ms by setting tocard_retries=1: - delay (min / max / avg) [µs]: (368 / 11696 / 6.204211e-06) - ''' - while True: - reader.init() - - # For now we omit the tag type - (stat, _) = reader.request(reader.REQIDL) - if stat == reader.OK: - (stat, uid) = reader.SelectTagSN() - if stat == reader.OK: - print(f"uid={uid_to_string(uid)}") - - await asyncio.sleep_ms(poll_interval_ms) - - -def main(): - reader = MFRC522(spi_id=1, sck=10, miso=12, mosi=11, cs=13, rst=9, tocard_retries=1) - - print("") - print("Please place card on reader") - print("") - - asyncio.create_task(get_tag_uid(reader)) - asyncio.create_task(latency_test()) - - asyncio.get_event_loop().run_forever() - - -if __name__ == "__main__": - main() diff --git a/software/src/test.py b/software/src/test.py deleted file mode 100644 index 7b09b82..0000000 --- a/software/src/test.py +++ /dev/null @@ -1,113 +0,0 @@ -# SPDX-License-Identifier: MIT -# Copyright (c) 2024-2025 Matthias Blankertz - -import aiorepl -import asyncio -import machine -import micropython -import os -import time -from machine import Pin -from math import pi, sin, pow -from micropython import const - -# Own modules -from audiocore import Audiocore -from mp3player import MP3Player -from rp2_neopixel import NeoPixel -from rp2_sd import SDCard - -micropython.alloc_emergency_exception_buf(100) - -leds = const(10) -brightness = 0.5 - - -def gamma(value, X=2.2): - return min(max(int(brightness * pow(value / 255.0, X) * 255.0 + 0.5), 0), 255) - - -async def rainbow(np, period=10): - count = 0.0 - while True: - for i in range(leds): - ofs = (count + i) % leds - np[i] = (gamma((sin(ofs / leds * 2 * pi) + 1) * 127), - gamma((sin(ofs / leds * 2 * pi + 2/3*pi) + 1) * 127), - gamma((sin(ofs / leds * 2 * pi + 4/3*pi) + 1) * 127)) - count += 0.2 - before = time.ticks_ms() - await np.async_write() - now = time.ticks_ms() - if before + 20 > now: - await asyncio.sleep_ms(20 - (now - before)) - - -# Set 8 mA drive strength and fast slew rate -machine.mem32[0x4001c004 + 6*4] = 0x67 -machine.mem32[0x4001c004 + 7*4] = 0x67 -machine.mem32[0x4001c004 + 8*4] = 0x67 - - -def list_sd(): - try: - sd = SDCard(mosi=Pin(3), miso=Pin(4), sck=Pin(2), ss=Pin(5), baudrate=15000000) - except OSError: - for i in range(leds): - np[i] = (255, 0, 0) - np.write() - return - try: - os.mount(sd, '/sd') - print(os.listdir(b'/sd')) - except OSError as ex: - print(f"{ex}") - - -delay_sum = 0 -delay_count = 0 -max_delay = 0 - - -async def latency_test(): - global delay_sum - global delay_count - global max_delay - await asyncio.sleep_ms(1) - while True: - for _ in range(2000): - before = time.ticks_us() - await asyncio.sleep(0) - after = time.ticks_us() - delay = after - before - delay_sum += delay - delay_count += 1 - if delay > max_delay: - max_delay = delay - await asyncio.sleep_ms(1) - print(f"Max delay {max_delay} us, average {delay/delay_sum} us") - -pin = Pin.board.GP16 -np = NeoPixel(pin, leds) - -# Test SD card -list_sd() - -# Test NeoPixel -asyncio.create_task(rainbow(np)) - -# Test audio -audioctx = Audiocore(Pin(8), Pin(6)) - -player = MP3Player(audioctx) - -# high prio for proc 1 -machine.mem32[0x40030000 + 0x00] = 0x10 - -testfiles = [b'/sd/' + name for name in os.listdir(b'/sd') if name.endswith(b'mp3')] -player.set_playlist(testfiles) -asyncio.create_task(player.task()) - - -asyncio.create_task(aiorepl.task({'player': player})) -asyncio.get_event_loop().run_forever()