[SOLVED] LCD (1602, I2C) on ATtiny841

That should be ISP, not SPI... I know can't use both (SDA and SCL pins are shared), but the programmer does use those two pins as well, no way around that. However if the ArduinoISP sets the pins to INPUT when finished, there should be no problem.

My I2C test sketch, works on Arduino & NodeMCU:

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>  // F Malpartida's NewLiquidCrystal library

#define I2C_ADDR    0x27  // Define I2C Address for controller
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
#define BACKLIGHT_PIN 3

#define  LED_OFF  0
#define  LED_ON  1
LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);

void setup()
{
  lcd.begin (16, 2); // initialize the lcd
  // Switch on the backlight
  lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
  lcd.setBacklight(LED_OFF);
}

void loop()
{

  // Reset the display
  lcd.clear();
  lcd.setBacklight(LOW);
  delay(1000);
  lcd.home();

  // Print on the LCD
  lcd.backlight();
  lcd.setBacklight(HIGH);
  lcd.setCursor(0, 0);
  lcd.print("City Hydroponics");
  delay(8000);
}

Fails with these error messages; all multiple definition errors:

Arduino: 1.8.5 (Linux), Board: "ATtiny441/841 (No bootloader), ATtiny841, Disabled, 12 MHz (external), EEPROM retained, B.O.D. Enabled (1.8v), B.O.D. Disabled, B.O.D. Disabled"

libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `ass_i2c_delay_half'
libraries/Wire/Wire.cpp.o:/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `ass_i2c_wait_scl_high'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `i2c_init()'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `i2c_start(unsigned char)'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `ass_i2c_write'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `i2c_rep_start(unsigned char)'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `i2c_start_wait(unsigned char)'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `ass_i2c_stop'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
libraries/NewLiquidCrystal/SI2CIO.cpp.o: In function `ass_i2c_delay_half':
/home/wouter/Arduino/libraries/NewLiquidCrystal/SoftI2CMaster.h:196: multiple definition of `i2c_read(bool)'
libraries/Wire/Wire.cpp.o:/home/wouter/.arduino15/packages/ATTinyCore/hardware/avr/1.1.5/libraries/Wire/src/SoftWire.h:101: first defined here
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board ATtiny441/841 (No bootloader).

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Compiling with the Optiboot option makes no difference.