I²C is designed to operate over short distances, typically on the same board.
Attempting to use over long distances is unlikely to succeed.
The application to UART is rather less clear.
The RS232 specification uses ±15V bipolar and is supposed to work over 1000', although this was very conservative. No modern systems actually implement this; ±12V was common ...
I think you just read two or four bytes from the sensor depending on which type of sensor you have.
Your pressure sensor provides 2 byte readings.
To test use pigpio as follows.
sudo pigpiod # start the pigpio daemon
pigs i2co 1 0x78 0 # get handle to I2C bus 1 device 0x78
The i2co should return 0 as the handle (0 being the first handle).
Then to get a ...
No, the ADC isn't broken. It can measure any value on unconnected channels, including a value which depends on the signal on neighboring connected channels.
If you want to create a slow "amplitude" signal from a faster signal, you need an envelope detector. That's how AM radios used to work.
Thanks to everyone's comments I've come to a solution. All comes down to not letting the wires float (as suggested by @Dougie). Connecting the wires in a breadboard does not guarantee that they be actually connected, so I soldered them, and that stabilized the address of the MCP23008 on the I2C bus.
I used I2C sensors on appx. 3M cable (with ESP8266) in my weather station for few months without any problem, that was normal sensor data cable, no twisted wires etc. With Cat 6 successs should be higher. It is reliable and based on your cable lenght connection speed will be affected, not signal. If possible, try using smaller pullup resistors on SDA and SCL ...