#include <LiquidCrystal_I2C.h> // include the liabrary fir the LCD screen
#include <Servo.h> // Include the servo library
#include <IRremote.h> // Include IRRemote library
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address is 0x27, 16 colums, 2 rows
int trigPin = 3;
int echoPin = 2;
int receiver_pin = 7;
int btn_value = 0;
IRrecv receiver(receiver_pin);
Servo myServo;
int servoPin = 6; //
int servoValue = 0; //
int servoAngle = 0;
void setup() {
receiver.enableIRIn();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
myServo.attach(servoPin); // Attach the servo motor setup
lcd.init(); // intializing the lcd screen
lcd.backlight(); // turn on the backlight
Serial.begin(9600);
}
void loop() {
if (receiver.decode()){
translateIR();
receiver.resume();
}
}
int translateIR()
{
btn_value = receiver.decodedIRData.command;
Serial.println(btn_value);
//if statement that ensures angle doesn't go out of bounds
if (servoAngle == 195) {
servoAngle=180;
}//end if statement
//if statement that ensures angle doesn't go out of bounds
if (servoAngle == -15) {
servoAngle = 0;
} //end if statement
{
if(btn_value == 224){
servoAngle = servoAngle - 15;
myServo.write(servoAngle);
delay(10);
}
if(btn_value == 144){
servoAngle = servoAngle + 15;
myServo.write(servoAngle);
delay(10);
}
}
int duration = pulseIn(echoPin, HIGH);
int centiMeters = duration/58;
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
if (centiMeters < 50) {
lcd.setCursor (0, 0);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 0);
lcd.print("you're close! ");
lcd.setCursor(0, 1);
lcd.print(centiMeters);
lcd.print(" cm away");
delay(1000);
}
else if (centiMeters > 100){
lcd.setCursor (0, 0);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 0);
lcd.print("More than 1m ");
lcd.setCursor(0, 1);
lcd.print(centiMeters);
lcd.print(" cm away");
delay(1000);
}
else {
lcd.setCursor (0, 0);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 0);
lcd.print("Medium distance ");
lcd.setCursor(0, 1);
lcd.print(centiMeters);
lcd.print(" cm away");
delay(1000);
}
}