
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal

# Parameters
frequency = 1  # 1 Hz
amplitude = 3  # 3 V
samples_per_period = 100  # 100 samples per point
time_duration = 3  # Duration to display the square wave in seconds

# Generate time axis
t = np.linspace(0, time_duration, samples_per_period * time_duration, endpoint=False)

# Generate square wave
square_wave = amplitude * signal.square(2 * np.pi * frequency * t)

# Plot square wave
plt.figure(figsize=(8, 4))
plt.plot(t, square_wave)
plt.title('Square Wave: 1 Hz, 3 V Amplitude')
plt.xlabel('Time [s]')
plt.ylabel('Amplitude [V]')
plt.grid(True)
plt.ylim([-amplitude-0.5, amplitude+0.5])
plt.show()