3 Channel Simulated Oscilloscope Python

A modern, multi-channel simulated oscilloscope application built with Python. This project provides a graphical user interface (GUI) for generating and visualizing various waveforms while displaying real-time signal measurements. It’s a perfect tool for students, hobbyists, or anyone needing a simple yet powerful way to explore signal theory without physical hardware.

The application leverages the customtkinter library for a sleek, dark-themed interface and uses matplotlib for dynamic, oscilloscope-style plotting.

Features

  • Multi-Channel Support: Simulate and plot up to three independent signal channels simultaneously.
  • Diverse Waveform Generation: Create signals using a variety of waveform types:
    • Sine Wave
    • Square Wave (with adjustable duty cycle)
    • Sawtooth Wave
    • Triangle Wave
    • White Noise
  • Real-Time Signal Analysis: Get live measurements for each selected channel, including:
    • Frequency (Hz)
    • Peak-to-Peak Voltage ()
    • RMS Voltage ()
    • Maximum Voltage ()
    • Minimum Voltage ()
    • Duty Cycle (for square waves)
  • Customizable Controls: Adjust key parameters like signal frequency, amplitude, vertical offset, and phase for each channel. You can also configure the oscilloscope’s time and voltage divisions.
  • Data Export: Save the generated signal data from all channels to a CSV file for further analysis.
  • Intuitive GUI: A clean and responsive user interface designed with customtkinter for a modern look and feel.


Package you need:
Make sure you have Python 3.x installed. The following packages are required to run the application:

  • customtkinter
  • matplotlib
  • numpy
  • scipy

How to use:

  • Add Channels: Click the “Add Channel” button to create a new signal tab.
  • Configure Signals: Select a channel tab and use the controls to choose a waveform type and set its parameters (frequency, amplitude, etc.).
  • Start Simulation: Click “Start Oscilloscope” to begin plotting the live signals.
  • Analyze Data: Select a channel tab to view its real-time measurements in the “Measurements” section.
  • Export Data: Click “Save to CSV” to export the current data from all active channels to a file.

Code