Merhaba, aşağıda gördüğünüz kod var fakat startbutton'a tıkladığımda sicaklik_role açılmıyor. Normalde LOW duruma geldiğinde rölenin aktif hale gelmesi gerekiyor fakat startbutton'a tıkladığımda rölenin çalıştığına dair ışığı yanıyor fakat röleden gelen "çık" sesi gelmiyor rölenin ışığı da kısık yanıyor. Bağlantımda herhangi bir problem yok. Yardım edebilir misiniz?
Kod:
#include "max6675.h"
int relay1Pin = 2;
int relay2Pin = 3;
int relay3Pin = 4;
int relay4Pin = 5;
int sicaklik_role = 6;
int thermoDO = 7;
int thermoCS = 8;
int thermoCLK = 9;
const int isiticiac = 50;
const int isiticikapat = 40;
int stopButton = 10;
int startButton = 11;
bool isRunning = false; // Başlangıçta çalışmıyoruz
bool isStartButtonPressed = false; // Start düğmesine basılı tutulup tutulmadığını tutacak değişken
//state machine var
byte runState = 0;
//millis timer for states..
unsigned long lastChange = 0;
unsigned int intervalChange = 10000;
//millis timer for button debouncing..
unsigned long lastDebounce = 0;
int intervalDebounce = 50;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
void setup() {
pinMode(stopButton, INPUT_PULLUP);
pinMode(startButton, INPUT_PULLUP);
pinMode(relay1Pin, OUTPUT);
pinMode(relay2Pin, OUTPUT);
pinMode(relay3Pin, OUTPUT);
pinMode(relay4Pin, OUTPUT);
pinMode(sicaklik_role, OUTPUT);
digitalWrite(sicaklik_role, HIGH);
digitalWrite(relay1Pin, HIGH);
digitalWrite(relay2Pin, HIGH);
digitalWrite(relay3Pin, HIGH);
digitalWrite(relay4Pin, HIGH);
Serial.begin(9600); // Seri portu başlat
}
void loop() {
double temperature = thermocouple.readCelsius();
if (digitalRead(startButton) == LOW) {
// Start düğmesine basıldığında sicaklik_role LOW durumunda
digitalWrite(sicaklik_role, LOW);
isStartButtonPressed = true;
} else if (digitalRead(startButton) == HIGH && isStartButtonPressed) {
// Start düğmesi bırakıldığında da sicaklik_role LOW durumunda kalır
digitalWrite(sicaklik_role, LOW);
}
if (isStartButtonPressed && temperature >= isiticiac) {
if (millis() - lastDebounce >= intervalDebounce) {
lastDebounce = millis();
if (!isRunning) {
isRunning = true;
//reset state machine
runState = 0;
Serial.println("Röleler çalıştırılıyor...");
}
}
} else if (temperature <= isiticikapat) {
digitalWrite(sicaklik_role, HIGH);
}
// Start düğmesine basıldığında röleleri çalıştır
if (isRunning) {
switch (runState) {
case 0:
digitalWrite(relay1Pin, LOW);
digitalWrite(relay2Pin, LOW);
runState = 1;
// Diğer durumları devam ettir...
break;
// Diğer durumları kontrol et...
}
}
}