"""generic_agnostic_board pin interface"""
import random
-# Values for sine wave output
+# Values for sine wave analog output
# (data points = 20, amplitude=100, frequency=1)
sine_wave = [
0,
-31,
]
+# Values for a square wave analog output
+# (data points = 20, amplitude=100)
+square_wave_int = [
+ 100,
+ -100,
+ 100,
+ -100,
+ 100,
+ -100,
+ 100,
+ -100,
+ 100,
+ -100,
+ 100,
+ -100,
+ 100,
+ -100,
+ 100,
+ -100,
+ 100,
+ -100,
+ 100,
+ -100
+]
class Pin:
"""A basic Pin class for use with generic_agnostic_board"""
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
+ self._wave_idx = (self._wave_idx + 1) % len(sine_wave)
return sine_wave[self._wave_idx]
+ def return_square_wave(self):
+ """Returns the next value in the square wave"""
+ if self._wave_idx is None:
+ self._wave_idx = 0
+ else:
+ self._wave_idx = (self._wave_idx + 1) % len(square_wave_int)
+ return square_wave_int[self._wave_idx]
+
def __init__(self, pin_id=None):
self.id = pin_id
self._mode = None
2: self.return_true, # Dx_INPUT_TRUE_PULL_UP
3: self.return_true, # Dx_INPUT_TRUE_PULL_DOWN
4: self.return_true, # Dx_OUTPUT
- 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_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
+ 10: self.return_square_wave, # Ax_OUTPUT_WAVE_SAWTOOTH
+ 11: self.return_toggle # Dx_INPUT_TOGGLE
}
def init(self, mode=IN, pull=None):