The Fruit Jam makes it easy to output DVI signal out of the built-in port with the Adafruit DVI HSTX library.
Note:
This page demonstrates basic usage of a single piece of hardware on the Fruit Jam. The device can be picky about the order that things are initialized when using multiple of the peripherals. If you're doing something involving the display, DAC, WiFi, or USB ports we recommend to start from the factory demo Arduino code and remove anything you don't need, rather than starting from these basic individual examples.
Library Installation
You can install the Adafruit DVI HSTX library for Arduino using the Library Manager in the Arduino IDE.
Click the Tools -> Manage Libraries ... menu item, search for Adafruit DVI HSTX and select the Adafruit DVI HSTX library
If asked about dependencies for any of the libraries, click "Install all".
If the "Dependencies" window does not come up, then you already have the dependencies installed.
If the dependencies are already installed, you must make sure you update them through the Arduino Library Manager before loading the example!
// 16-bit Adafruit_GFX-compatible framebuffer for RP2350 HSTX
#include <Adafruit_dvhstx.h>
#if defined(ADAFRUIT_FEATHER_RP2350_HSTX)
DVHSTXPinout pinConfig = ADAFRUIT_FEATHER_RP2350_CFG;
#elif defined(ADAFRUIT_METRO_RP2350)
DVHSTXPinout pinConfig = ADAFRUIT_METRO_RP2350_CFG;
#elif defined(ARDUINO_ADAFRUIT_FRUITJAM_RP2350)
DVHSTXPinout pinConfig = ADAFRUIT_FRUIT_JAM_CFG;
#elif (defined(ARDUINO_RASPBERRY_PI_PICO_2) || defined(ARDUINO_RASPBERRY_PI_PICO_2W))
DVHSTXPinout pinConfig = ADAFRUIT_HSTXDVIBELL_CFG;
#else
// If your board definition has PIN_CKP and related defines,
// DVHSTX_PINOUT_DEFAULT is available
DVHSTXPinout pinConfig = DVHSTX_PINOUT_DEFAULT;
#endif
DVHSTX16 display(pinConfig, DVHSTX_RESOLUTION_320x240);
// If you get the message "error: 'DVHSTX_PINOUT_DEFAULTx' was not declared"
// then you need to give the pins numbers explicitly, like the example below.
// The order is: {CKP, D0P, D1P, D2P} DVHSTX16 display({12, 14, 16, 18},
// DVHSTX_RESOLUTION_320x240);
void setup() {
Serial.begin(115200);
// while(!Serial);
if (!display.begin()) { // Blink LED if insufficient RAM
pinMode(LED_BUILTIN, OUTPUT);
for (;;)
digitalWrite(LED_BUILTIN, (millis() / 500) & 1);
}
Serial.println("display initialized");
}
void loop() {
// Draw random lines
display.drawLine(random(display.width()), random(display.height()),
random(display.width()), random(display.height()),
random(65536));
sleep_ms(1);
}
Page last edited August 06, 2025
Text editor powered by tinymce.