After testing and debugging the sketch on an Arduino UNO, I modified it to run on an ATtiny84.
#include // LCD Display Driver for 16x2 LCD with shift register LiquidCrystal595 lcd( 2, 5, 4); // AtTiny84 (Data, Latch, Clock) - pin order from left to right on 595LCD is GND, +5, Clock, Latch, Data. int pd=1; // Photodiode to digital pin 2 int oc=0; // Pin that goes to optocoupler int senRead=3; // Readings from sensor to Analog Pin 3 int limit=850; // Threshold to trigger relais if an object is detected int pot=6;´ void setup() { lcd.begin(16,2); // lcd.setCursor(2,0); // lcd.print("ATtiny84 IR -"); // lcd.setCursor(1,1); // lcd.print("Distance Sensor"); // delay(3000); // lcd.clear(); // pinMode(pd,OUTPUT); // pinMode(oc,OUTPUT); // digitalWrite(pd,HIGH); // Supply 5 volts to photodiode digitalWrite(oc,LOW); // Set the Output in OFF mode (initial condition) //Serial.begin(9600); // Setting serial monitor at a default baund rate of 9600 } void loop() { int val=analogRead(senRead); //variable to store values from the photodiode limit = analogRead(pot); lcd.setCursor(0,0); lcd.print("Distance:"); lcd.setCursor(10,0); lcd.print(val,1); // prints the values from the sensor in serial monitor lcd.setCursor(14,0); lcd.print("AU"); lcd.setCursor(1,1); lcd.print("Threshold: "); // lcd.print(limit); if(val <= limit) // If obstacle is nearer than the Threshold range { digitalWrite(oc,HIGH); // Output will be in ON state lcd.setCursor(1,1); lcd.print("Object detected!"); delay(5000); lcd.clear(); } else if(val > limit) // If obstacle is not in threshold range { digitalWrite(oc,LOW); // Output will be in OFF state delay(50); } }