#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2 // Pin data DS18B20 terhubung ke pin 2 Arduino
#define STEP_PIN 9
#define DIR_PIN 10
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C untuk LCD biasanya 0x27 atau 0x3F
const float tempThreshold = 25.0; // Ambang batas suhu dalam derajat Celsius
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.backlight();
pinMode(STEP_PIN, OUTPUT);
pinMode(DIR_PIN, OUTPUT);
digitalWrite(DIR_PIN, HIGH); // Set initial direction
sensors.begin(); // Inisialisasi sensor suhu
lcd.setCursor(0, 0);
lcd.print("Temp:");
}
void loop() {
sensors.requestTemperatures(); // Meminta suhu dari sensor
float temperatureC = sensors.getTempCByIndex(0); // Dapatkan suhu dalam derajat Celsius
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.println(" °C");
lcd.setCursor(6, 0);
lcd.print(temperatureC);
lcd.print(" C");
if (temperatureC > tempThreshold) {
digitalWrite(DIR_PIN, HIGH); // Atur arah putaran motor
for (int i = 0; i < 200; i++) { // Putar motor sejumlah langkah untuk satu putaran
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(800); // Sesuaikan delay untuk kecepatan motor yang diinginkan
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(800);
}
}
delay(1000); // Jeda 1 detik antara pembacaan suhu
}