#include <Servo.h>
const int tempPin = A0; // Pin sensor suhu LM35
const int motorPin = 9; // Pin PWM untuk motor kipas
const int servoPin = 10; // Pin untuk motor servo
const int motorDir1 = 2; // Pin arah motor driver 1
const int motorDir2 = 3; // Pin arah motor driver 2
Servo myservo; // Objek servo
void setup() {
pinMode(tempPin, INPUT);
pinMode(motorPin, OUTPUT);
pinMode(motorDir1, OUTPUT);
pinMode(motorDir2, OUTPUT);
myservo.attach(servoPin);
myservo.write(90); // Mulai dari posisi tengah
Serial.begin(9600);
}
void loop() {
int tempValue = analogRead(tempPin);
float voltage = tempValue * (5.0 / 1023.0);
float temperature = voltage * 100; // LM35 memberikan 10mV per derajat Celcius
int pwmSpeed = map(temperature, 20, 40, 0, 255);
pwmSpeed = constrain(pwmSpeed, 0, 255);
analogWrite(motorPin, pwmSpeed);
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" C, ");
Serial.print("PWM Speed: ");
Serial.println(pwmSpeed);
if (temperature > 30) {
digitalWrite(motorDir1, HIGH);
digitalWrite(motorDir2, LOW);
} else {
digitalWrite(motorDir1, LOW);
digitalWrite(motorDir2, HIGH);
}
for (int pos = 0; pos <= 180; pos += 1) {
myservo.write(pos);
delay(15);
}
for (int pos = 180; pos >= 0; pos -= 1) {
myservo.write(pos);
delay(15);
}
delay(1000);
}