PaulRB:
As I said, reading the schematic, 5V is not used/relevant, only 3.3V. The schematic seems to imply that all 8 ground pins are connected together on the module's pcb, but it's not 100% clear. The GND pins on the pi connector are not shown connected to the ground symbols used elsewhere in the schematic. But I think the fact that they are all labelled "GND" may imply that they are. After all, one of them must be, or the module could not work at all, even with a pi!
Suggest you post one or more photos of the circuit, well lit and focused, so we can see where all connections join. Also post the code you tried. Please read the forum guide so you know how to include those things correctly in your post.
The grounds are all connected! I tried them with the buttons.
PaulRB:
Try running the i2c scanner sketch to check that the display is detected on the i2c bus, and at what address.
Hmmm there is no device found
Is there a way to confirm the code can detect something, by putting something to the i2c ports?
I used the i2c scanner example from the wire class.
// --------------------------------------
// i2c_scanner
//
// Version 1
// This program (or code that looks like it)
// can be found in many places.
// For example on the Arduino.cc forum.
// The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
// Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26 2013
// V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
// by Arduino.cc user Krodal.
// Changes by louarnold removed.
// Scanning addresses changed from 0...127 to 1...119,
// according to the i2c scanner by Nick Gammon
// https://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
// As version 4, but address scans now to 127.
// A sensor seems to use address 120.
// Version 6, November 27, 2015.
// Added waiting for the Leonardo serial communication.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
void loop() {
int nDevices = 0;
Serial.println("Scanning...");
for (byte address = 1; address < 127; ++address) {
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
byte error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
if (address < 16) {
Serial.print("0");
}
Serial.print(address, HEX);
Serial.println(" !");
++nDevices;
} else if (error == 4) {
Serial.print("Unknown error at address 0x");
if (address < 16) {
Serial.print("0");
}
Serial.println(address, HEX);
}
}
if (nDevices == 0) {
Serial.println("No I2C devices found\n");
} else {
Serial.println("done\n");
}
delay(5000); // Wait 5 seconds for next scan
}
Here is the wiring for the hat (2 different 3.3v connections)