import matplotlib.pyplot as plt # DSP sample rate sample_rate = 100000 # samples per second # Pulse timing on_time = 300e-6 # 300 microseconds off_time = 300e-6 # 300 microseconds # Convert time into samples on_samples = int(on_time * sample_rate) off_samples = int(off_time * sample_rate) # Create boolean waveform buffer bool_array = ( [True] * on_samples + [False] * off_samples ) # Repeat the pulse several times bool_array = bool_array * 5 # Convert boolean samples into voltage samples time = [] voltage = [] for sample, bit in enumerate(bool_array): t = sample / sample_rate if bit: v = 1.0 else: v = 0.0 time.append(t) voltage.append(v) # Display like an oscilloscope plt.figure(figsize=(10,4)) plt.step(time, voltage, where="post") plt.xlabel("Time (seconds)") plt.ylabel("Voltage (V)") plt.title("300us ON / 300us OFF DSP Pulse Wave") plt.grid(True) plt.ylim(-0.2, 1.2) plt.show()