Add a capacitor between the reset pins of the displays and ground, and a resistor from reset to 3.3V. The values are not critical, 0.1µF and 10kΩ work fine.
You do need some way to reset the displays, without it, it won't work.
Alternatively, you could use an IO pin from the Teensy to reset the displays, but this just "wastes" a pin.
Map "Control Surface" as a Mackie Control Universal unit in your DAW.
constexpr uint8_t SCREEN_WIDTH = 128;
constexpr uint8_t SCREEN_HEIGHT = 64;
constexpr int8_t OLED_DC = 17;
constexpr int8_t OLED_reset = -1;
constexpr int8_t OLED_CS_L = 10;
constexpr int8_t OLED_CS_R = 18;
Adafruit_SSD1306 ssd1306Display_L = {
SCREEN_WIDTH, SCREEN_HEIGHT, &SPI, OLED_DC,
OLED_reset, OLED_CS_L, SPI_Frequency,
};
Adafruit_SSD1306 ssd1306Display_R = {
SCREEN_WIDTH, SCREEN_HEIGHT, &SPI, OLED_DC,
OLED_reset, OLED_CS_R, SPI_Frequency,
};
public:
MySSD1306_DisplayInterface(Adafruit_SSD1306 &display)
#if defined(ADAFRUIT_SSD1306_HAS_SETBUFFER) && ADAFRUIT_SSD1306_HAS_SETBUFFER
disp.setBuffer(buffer);
#endif
if (!disp.begin())
}
void drawBackground()
override { disp.drawLine(1, 8, 126, 8, WHITE); }
#if defined(ADAFRUIT_SSD1306_HAS_SETBUFFER) && ADAFRUIT_SSD1306_HAS_SETBUFFER
static uint8_t buffer[(SCREEN_WIDTH * SCREEN_HEIGHT + 7) / 8];
#endif
} display_L = ssd1306Display_L, display_R = ssd1306Display_R;
#if defined(ADAFRUIT_SSD1306_HAS_SETBUFFER) && ADAFRUIT_SSD1306_HAS_SETBUFFER
uint8_t MySSD1306_DisplayInterface::buffer[];
#endif
};
};
};
};
{bank, 1},
{bank, 2},
{bank, 3},
{bank, 4},
};
{display_L, lcd, bank, 1, {0, 40}, 1, WHITE},
{display_L, lcd, bank, 2, {64, 40}, 1, WHITE},
{display_R, lcd, bank, 3, {0, 40}, 1, WHITE},
{display_R, lcd, bank, 4, {64, 40}, 1, WHITE},
};
display_L, timedisplay, {0, 0}, 1, WHITE,
};
};
};
};
};
display_L, rudeSolo,
XBM::solo_7, {36 + 64, 0}, WHITE};
};
{display_L, vu[0], {32 + 11, 60}, 16, 3, 1, WHITE},
{display_L, vu[1], {32 + 11 + 64, 60}, 16, 3, 1, WHITE},
{display_R, vu[2], {32 + 11, 60}, 16, 3, 1, WHITE},
{display_R, vu[3], {32 + 11 + 64, 60}, 16, 3, 1, WHITE},
};
{display_L, vpot[0], {0, 10}, 14, 12, WHITE},
{display_L, vpot[1], {64, 10}, 14, 12, WHITE},
{display_R, vpot[2], {0, 10}, 14, 12, WHITE},
{display_R, vpot[3], {64, 10}, 14, 12, WHITE},
};
{display_L, bank, 1, {0, 50}, 2, WHITE},
{display_L, bank, 2, {64, 50}, 2, WHITE},
{display_R, bank, 3, {0, 50}, 2, WHITE},
{display_R, bank, 4, {64, 50}, 2, WHITE},
};
void setup() {
SPI.setMOSI(7);
}
void loop() {
}