- Configurable ADC speed for sampling rates from 10KHz to 300KHz (on UNO)
- Auto grid on time base from 2ms to 50us (on UNO)
- Vmax calibration and 3.3-5V detection using internal reference
- 0V auto trigger
- Display minimum-maximum voltage of captured signal
- Square waveforms are displayed properly
- Auto voltmeter mode when input is steady
The screenshots below are on a two-color display (yellow/blue).
Voltmeter mode is automatically switched on with a steady voltage signal (when it would be represented by a flat line).
Requires one of the boards below and a Monochrome 0.96" 128x64 OLED graphic display (SSD1306 driver, I2C).
All boards build from this branch (master); the old teensy and feather_m0
branches are historical and no longer needed.
| Board | Build target | Notes |
|---|---|---|
| Arduino UNO R3 / ATmega328 | arduino:avr:uno / uno |
tuned ADC driver, 10-300KHz sampling |
| Teensy 3.1/3.2 | teensy:avr:teensy31 / teensy31 |
tuned ADC driver (pedvide ADC), fastest |
| Teensy LC | teensy:avr:teensyLC / teensylc |
tuned ADC driver (pedvide ADC) |
| Adafruit Feather M0 | adafruit:samd:adafruit_feather_m0 |
portable ADC, no EEPROM (mode not saved), button on D6 |
| ESP32 | esp32dev (PlatformIO) |
experimental: compiles, untested on hardware, portable ADC |
- OLED VCC - 3.3V
- OLED GND - GND
- OLED SCL - A5 or SCL (Teensy SCL0 pin 19)
- OLED SDA - A4 or SDA (Teensy SDA0 pin 18)
- PROBE WIRE - A1 (defined in tiny_scope.ino) (Teensy pin 15)
- BUTTON - D7 button to GND (D6 on Feather M0)
- A1 to 5V should display 5.00 V
- A1 to GND should display 0.00 V
- A1 to D9 (Teensy pin 9) should display a square wave (PWM) with >2ms period and >0.5ms pulse
- A1 to D5 should display a square wave (PWM) with >1ms period and >0.2ms pulse
- Momentary (<0.5s) push on D7 switch cycles through available sampling speeds
- Long >0.5s push on D7 freezes display.
Without hardware, make sim-test boots the UNO firmware on an emulated
ATmega328P (simavr) and checks the boot/capture pipeline against a baseline.
UNO R3 and Teensy 3.1 (with upside-down display mode).
- Arduino board:
- Arduino UNO R3, Arduino Pro Mini, Arduino Pro Trinket or Other Arduino Atmega328 board, or
- Teensy, Adafruit Feather M0, or an ESP32 board (experimental)
- 0.96" OLED display with SSD1306 and I2C mode (SPI mode is also supported by the Adafruit library but wiring is different). Many stores sell these and in different colors.
- USB cable, few jumper wires
With arduino-cli (downloaded automatically into .arduino/):
make setup # one-time: arduino-cli, board indexes, libraries
make all # default TARGET=arduino:avr:uno
make all TARGET=teensy:avr:teensy31
make all TARGET=adafruit:samd:adafruit_feather_m0
With PlatformIO:
pio run # all boards: uno, teensy31, teensylc, adafruit_feather_m0, esp32dev
pio run -e uno # just one
Or use the Arduino IDE with the Library Manager (below), or open the repo in VS Code and "Reopen in Container" for a ready-made build environment.
Installed automatically by make setup and PlatformIO; in the Arduino IDE use
Library Manager:
- Adafruit SSD1306 (with its Adafruit GFX / BusIO dependencies)
- Teensy boards: the ADC library ships with Teensyduino






