import board
import analogio
+sine_wave = [
+ 0,
+ 31,
+ 59,
+ 81,
+ 95,
+ 100,
+ 95,
+ 81,
+ 59,
+ 31,
+ 0,
+ -31,
+ -59,
+ -81,
+ -95,
+ -100,
+ -95,
+ -81,
+ -59,
+ -31,
+]
+
def test_ax_input_rand_int():
assert board.board_id == "GENERIC_AGNOSTIC_BOARD"
pin_random = analogio.AnalogIn(board.Ax_INPUT_RAND_INT)
+
assert isinstance(pin_random.value, int)
+
pin_random.deinit()
+
+def test_ax_input_fixed_int_pi():
+ assert board.board_id == "GENERIC_AGNOSTIC_BOARD"
+ pin_pi = analogio.AnalogIn(board.Ax_INPUT_FIXED_INT_PI)
+
+ assert pin_pi.value == 31415
+
+ pin_pi.deinit()
+
+def test_ax_input_sine_wave():
+ assert board.board_id == "GENERIC_AGNOSTIC_BOARD"
+ pin_sine_wave = analogio.AnalogIn(board.Ax_OUTPUT_WAVE_SINE)
+
+ # Run through the sine wave once
+ for i in range(len(sine_wave)):
+ assert pin_sine_wave.value == sine_wave[i]
+
+ # Run through the sine wave again to ensure it loops back correctly
+ for i in range(len(sine_wave)):
+ assert pin_sine_wave.value == sine_wave[i]
+
+ pin_sine_wave.deinit()
"""generic_agnostic_board pin interface"""
import random
+# Values for sine wave output
+# (data points = 20, amplitude=100, frequency=1)
+sine_wave = [
+ 0,
+ 31,
+ 59,
+ 81,
+ 95,
+ 100,
+ 95,
+ 81,
+ 59,
+ 31,
+ 0,
+ -31,
+ -59,
+ -81,
+ -95,
+ -100,
+ -95,
+ -81,
+ -59,
+ -31,
+]
+
class Pin:
"""A basic Pin class for use with generic_agnostic_board"""
"""Returns the first five digits of Pi, 31415"""
return 31415
+ def return_sine_wave(self):
+ """Returns the next value in the sine wave"""
+ if self._wave_idx is None:
+ self._wave_idx = 0
+ else:
+ self._wave_idx += 1
+ if self._wave_idx >= len(sine_wave):
+ self._wave_idx = 0
+ return sine_wave[self._wave_idx]
+
def __init__(self, pin_id=None):
self.id = pin_id
self._mode = None
self._pull = None
self.previous_value = False
self.current_value = None
+ self._wave_idx = None
# mapping of pin definition names to expected behavior
self.pin_behavior = {
6: self.return_true, # NEOPIXEL
7: self.return_random_int, # Ax_INPUT_RAND_INT
8: self.return_fixed_int_pi, # Ax_INPUT_FIXED_INT_PI
- 9: self.return_true, # Ax_OUTPUT_WAVE_SINE
+ 9: self.return_sine_wave, # Ax_OUTPUT_WAVE_SINE
10: self.return_true, # Ax_OUTPUT_WAVE_SAWTOOTH
11: self.return_toggle, # Dx_INPUT_TOGGLE
# Add other mappings as needed