updat:e
This commit is contained in:
parent
aca1ea12cd
commit
159c3f48b5
10
config.yml
10
config.yml
|
@ -1,2 +1,8 @@
|
|||
frequency: 20.0 # Hz
|
||||
sample_rate: 100 # Samples per second
|
||||
frequency: 1.0 # Hz. Default: 1.0
|
||||
sample_rate: 100 # Samples per sleep time. Default: 100
|
||||
sleep_time: 0.1 # Time to wait between taking samples in seconds. Default: 0.1
|
||||
|
||||
# Minimum possible value of Sine Wave. Disabled by default. Uncomment line to limit min value
|
||||
#min_value: -3
|
||||
# Maxmum possible value of Sine Wave. Disabled by default. Uncomment line to limit max value
|
||||
#max_value: 3
|
||||
|
|
33
generator.py
33
generator.py
|
@ -1,29 +1,40 @@
|
|||
import numpy as np
|
||||
import time
|
||||
import yaml
|
||||
from decimal import Decimal, getcontext
|
||||
import math
|
||||
|
||||
def generate_continuous_sine_wave(freq, sample_rate):
|
||||
def generate_continuous_sine_wave(freq, sample_rate, sleep_time, min_value=None, max_value=None):
|
||||
"""
|
||||
Continuously generates sine wave values and outputs them to the terminal.
|
||||
Continuously generates sine wave values and outputs them to stdout.
|
||||
|
||||
:param freq: Frequency of the sine wave in Hertz.
|
||||
:param sample_rate: Sample rate in samples per second.
|
||||
:param sleep_time: Time to wait between taking samples in seconds.
|
||||
:param min_value: Minimum value for the sine wave (optional).
|
||||
:param max_value: Maximum value for the sine wave (optional).
|
||||
"""
|
||||
t = 0
|
||||
dt = 1 / sample_rate
|
||||
getcontext().prec = 28
|
||||
t = Decimal(0)
|
||||
dt = Decimal(1) / Decimal(sample_rate)
|
||||
while True:
|
||||
y = np.sin(2 * np.pi * freq * t)
|
||||
y = Decimal(math.sin(float(2 * math.pi * freq * float(t))))
|
||||
if min_value is not None:
|
||||
y = max(min_value, y)
|
||||
if max_value is not None:
|
||||
y = min(max_value, y)
|
||||
print(y)
|
||||
t += dt
|
||||
time.sleep(dt)
|
||||
time.sleep(float(sleep_time))
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Load parameters from config.yml
|
||||
with open("config.yml", "r") as config_file:
|
||||
config = yaml.safe_load(config_file)
|
||||
|
||||
# Extract parameters or use default values
|
||||
FREQUENCY = config.get("frequency", 1) # Hz
|
||||
SAMPLE_RATE = config.get("sample_rate", 100) # Samples per second
|
||||
FREQUENCY = config.get("frequency", 20.0)
|
||||
SAMPLE_RATE = config.get("sample_rate", 100)
|
||||
SLEEP_TIME = config.get("sleep_time", 0.1)
|
||||
MIN_VALUE = config.get("min_value")
|
||||
MAX_VALUE = config.get("max_value")
|
||||
|
||||
generate_continuous_sine_wave(FREQUENCY, SAMPLE_RATE)
|
||||
generate_continuous_sine_wave(FREQUENCY, SAMPLE_RATE, SLEEP_TIME, MIN_VALUE, MAX_VALUE)
|
||||
|
|
Loading…
Reference in New Issue
Block a user