I’ve used I2C LCD displays plenty of times on more standard hardware but I think the LyraT board already uses I2C for audio. I’m trying to use the I2C pins on the board in the Arduino IDE (I will be using Phil Schatzmann’s awesome audio libraries) but am getting nothing.
The I2C display boards I have (both 16x2) are a DFRobot I2C LCD Module and a DFRobot Gravity LCD 1602 module, both (obviously) 4 wire.
From Googling it looks like the issue is that the board is already using the I2C interface, so using the default Wire is no good. I don’t have the technical knowledge though to get around this.
It is do-able apparently at low level using the Espressif IDE but I’d far rather use the Arduino IDE!
I2C is designed to support multiple users; that's why there are addresses. Messages for one device are ignored by all others. If you can't get any scanner to work, then you have a significant issue, and you need to resolve that first.
Don't confuse I2C with I2S.
I2S is a totally different bus for audio.
I didn't look what the board is actually using for audio, but I2S would make more sense than I2C.
Leo..
Yep, that’s why I’m asking if anyone has managed to get a display working with the LyraT over I2C !
The Espressif hardware ref says that the onboard Audio Codec Chip (an ES8388) is connected to both the I2S and I2C interface.
An I2C header is provided on the board though, the ESP32 pin defs are: SCL is GPIO23 and SDA is GPIO18.
I think I may have to set the pin definitions (as above) somewhere in an LCD library (I think this may be TwoWire?)… as I say, my main purpose was to avoid ‘re-inventing the wheel’ by asking if anyone else had done this.
It’s nice having all the stuff on one board but I might have to revert to the ESP32 and a VS1053 [yawn].
Yep, that is the crux of the issue - why aren’t I2C scanners working? As per post #3.
I understand perfectly well about I2C addresses and their purpose.
The LyraT is fairly unusual in having other chips and lots of functionality on the board. Maybe the Arduino coded scanners can’t handle what Espressif code is doing at a low level.