Ferhat aslan
Decapat
- Katılım
- 28 Mart 2022
- Mesajlar
- 10
Daha fazla
- Cinsiyet
- Erkek
C:
#include <Stepper.h>
#include <DHT.h>
#include <LiquidCrystal.h>
const int stepsPerRevolution = 2048;
#define MOTOR_PIN_1 8
#define MOTOR_PIN_2 9
#define MOTOR_PIN_3 10
#define MOTOR_PIN_4 11
// Adım motoru nesnesi oluştur
Stepper stepper(512, MOTOR_PIN_1, MOTOR_PIN_3, MOTOR_PIN_2, MOTOR_PIN_4);
#define DHTPIN 6
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(13, 12, 5, 4, 3, 2);
const int incubationPeriod = 21;
const float temperatureThreshold = 37.5;
const int heaterPin = 7;
void setup() {
lcd.begin(16, 2);
lcd.print("Kulucka Makinasi");
lcd.setCursor(0, 1);
lcd.print(" Baslatiliyor");
delay(5000);
lcd.clear();
dht.begin();
pinMode(heaterPin, OUTPUT);
stepper.setSpeed(20);
}
void loop() {
temperatureControl();
incubatorControl();
}
void incubatorControl() {
for(int i=1;i<=incubationPeriod;i++){
// Sağa dönme
stepper.step(512); // 512 adım = çeyrek tur
delay(1000); // 4 saat bekle
// Sola dönme
stepper.step(-512); // -512 adım = çeyrek tur (ters yönde)
delay(1000); // 4 saat bekle
}
}
void temperatureControl() {
for(int i=1;i<=incubationPeriod;i++){
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
lcd.setCursor(0, 1);
lcd.print(temperatureThreshold);
lcd.print("C ");
lcd.print(temperature);
lcd.print("C");
lcd.setCursor(0, 0);
lcd.print("56.00% ");
lcd.print(humidity);
lcd.print("%");
delay(5000);
lcd.clear();
unsigned long remainingDays = calculateRemainingDays();
lcd.setCursor(0, 0);
lcd.print("Kalan Gun:");
lcd.print(remainingDays);
lcd.print(" gun");
delay(5000);
lcd.clear();
controlHeater(temperature);
delay(1000);}
}
unsigned long calculateRemainingDays() {
unsigned long elapsedTime = millis() / 1000;
unsigned long remainingTime = (incubationPeriod * 100) - elapsedTime;
unsigned long remainingDays = remainingTime / 100;
return (remainingDays > 0) ? remainingDays : 0;
}
void controlHeater(float temperature) {
if (temperature < temperatureThreshold) {
digitalWrite(heaterPin, HIGH);
} else {
digitalWrite(heaterPin, LOW);
}
}