Using an Arduino Uno and currently have a seeedstudio CAN-BUS Shield v1.2 and SD card module hooked up. The CAN shield and SD share the SPI bus on pins 11, 12, and 13, with CAN SS on pin 9 and SD SS on pin 10. Both initialize successfully. I also am using the Serial/UART interface to communicate between the arduino and PC. Many of my other digital pins are being utilized.
I now have a need to add a basic 16x2 LCD screen. I'm thinking my only option is to add an I2C screen. Update rate for the LCD screen is unimportant. Would my setup work?
SPI - CAN and SD
SS pins - CAN = 9, SD = 10
Serial/UART - PC <-> Arduino
I2C - 16x2 LCD
Welcome back to the forum. You may want to keep this on the same thread. In LCD character matrices, there are a few common flavors that use different busses. M6800 bus, the one used by the official LiquidCrystal library likely requires too many pins. You are already using SPI for both CAN and SD, so a character matrix using SPI would only require 1 SS pin, as long as it didn't bottleneck the bus. SPI are less common, but adafruit.com makes a backpack as well as libraries. I2C could also work as long as you aren't using pins A4 and A5.
Awesome, thanks.
Yeah I'm worried that the LCD will have some sort of bottleneck effect on SPI if I add that as a third device.
Seems like I2C may be the best option in my situation.