#include <Servo.h>
// Define servo objects
Servo DinoMotion;
Servo HeadMotion;
// Define pins for ultrasonic sensor
const int trigPin = 9;
const int echoPin = 10;
// Define pins for LDRs
const int HeadLDR = A0;
const int MouthLDR = A1;
// Define pins for LEDs
const int EyeLED1 = 2;
const int EyeLED2 = 3;
const int MouthLED = 4;
void setup() {
// Attach servos to respective pins
DinoMotion.attach(5);
HeadMotion.attach(6);
// Initialize ultrasonic sensor
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Initialize LDRs
pinMode(HeadLDR, INPUT);
pinMode(MouthLDR, INPUT);
// Initialize LEDs
pinMode(EyeLED1, OUTPUT);
pinMode(EyeLED2, OUTPUT);
pinMode(MouthLED, OUTPUT);
}
void loop() {
// Read ultrasonic sensor
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration * 0.034) / 2;
// Control DinoMotion servo based on ultrasonic sensor
if (distance < 10) { // Object is too close
DinoMotion.write(180); // Rotate servo one way
} else if (distance > 20) { // Object is too far
DinoMotion.write(0); // Rotate servo the other way
}
// Read LDR values
int lightValueHead = analogRead(HeadLDR);
int lightValueMouth = analogRead(MouthLDR);
// Control HeadMotion servo based on light on HeadLDR
if (lightValueHead > 500) { // Light is shining
HeadMotion.write(180); // Rotate servo one way
digitalWrite(EyeLED1, HIGH); // Turn on EyeLED 1
digitalWrite(EyeLED2, HIGH); // Turn on EyeLED 2
} else {
HeadMotion.write(0); // Rotate servo the other way
digitalWrite(EyeLED1, LOW); // Turn off EyeLED 1
digitalWrite(EyeLED2, LOW); // Turn off EyeLED 2
}
// Control MouthLED based on light on MouthLDR
if (lightValueMouth > 500) { // Light is shining
digitalWrite(MouthLED, LOW); // Turn off MouthLED
} else {
digitalWrite(MouthLED, HIGH); // Turn on MouthLED
}
delay(100); // Adjust delay as needed
}