İyi akşamlar arkadaşlar. yeni bir arduino uno kullanıcısıyım. Okul projem için bir devre tasarlıyorum. kısaca açıklamak gerekirse işlem sırası şu şekilde olacak 1) Rölelere bağlı motorlar serial porttan girilen saniye kadar sırayla çalışacak 2) 3 motor çalıştıktan sonra girilen sıcaklık değeri ile sensörün sıcaklık değeri karşılaştırılacak 3) girilen sıcaklık değeri daha yüksekse ısıtıcı, daha düşükse fan çalışacak. şimdilik projenin bu kısmı ile uğraşıyorum. Sorunum : Serial porttan bilgileri doğru bir şekilde alıyorum, motorlar belirtilen süreler ile doğru bir şekilde çalışıyor. Sıcaklık değerini doğru şekilde ölçüyorum ama 2. maddeye geçemiyorum. yani motorlar sürekli sonsuz döngüde belirtilen saniyeler uzunluğunda çalışıyor. nedenini çözebilmiş değilim.. yazdığım kod : #include <onewire.h>
#include <dallastemperature.h>
int kirmizi_pompa=6; //rölelerin bağlı olduğu pinler tanımlanıyor
int sari_pompa=7;
int mavi_pompa=8;
int tank_pompa=9;
int sensor=2; //diğer pinler
int karistirici=3;
int fan=4;
int isitici=5;
OneWire oneWire(sensor);
DallasTemperature sensors(&oneWire);
int kirmizi; //değişkenlerimiz bunlar olacak
int sari;
int mavi;
int sicaklik;
int data[8] = {0,0,0,0,0,0,0,0}; //veriler buraya yazılacak
int i;
void setup() {
pinMode(kirmizi_pompa, OUTPUT);
pinMode(mavi_pompa, OUTPUT);
pinMode(sari_pompa, OUTPUT);
pinMode(tank_pompa, OUTPUT);
pinMode(karistirici, OUTPUT);
pinMode(isitici, OUTPUT);
pinMode(fan, OUTPUT);
pinMode(sensor, INPUT);
sensors.begin();
digitalWrite(kirmizi_pompa,LOW);
digitalWrite(mavi_pompa,LOW);
digitalWrite(sari_pompa,LOW);
digitalWrite(tank_pompa,LOW);
digitalWrite(kirmizi_pompa,LOW);
digitalWrite(karistirici,LOW);
digitalWrite(isitici,LOW);
digitalWrite(fan,LOW);
Serial.begin(9600);
}
void loop() {
sensors.requestTemperatures(); //sensörle sıcaklık değerini doğru bir şekilde algıladık
int simdi = sensors.getTempCByIndex(0);
Serial.print(simdi);
while (Serial.available() > 0) {
data[i] = Serial.read() - 48;
i++;
}
kirmizi = 1000*((10data[0]) + data [1]); //değerler yazılıyor
sari = 1000((10data[2]) + data [3]);
mavi = 1000((10data[4]) + data [5]);
sicaklik = (10data[6]) + data [7];
//önce kırmızı, sonra sarı sonra mavi motorları çalışıyor
digitalWrite(kirmizi_pompa,HIGH);
delay(kirmizi);
digitalWrite(kirmizi_pompa,LOW);
delay(1000);
digitalWrite(sari_pompa,HIGH);
delay(sari);
digitalWrite(sari_pompa,LOW);
delay(1000);
digitalWrite(mavi_pompa,HIGH);
delay(mavi);
digitalWrite(mavi_pompa,LOW);
delay(1000);
if(sicaklik > simdi){ //PROGRAM BU KISIMDAN İTİBAREN DEVAM ETMİYOR
while(sicaklik == simdi){
digitalWrite(isitici,HIGH);
sensors.requestTemperatures();
simdi = sensors.getTempCByIndex(0);
delay(50);
}
}
if(sicaklik < simdi){
while(sicaklik == simdi){
digitalWrite(fan,HIGH);
sensors.requestTemperatures();
simdi = sensors.getTempCByIndex(0);
delay(50);
}
}
digitalWrite(isitici,LOW);
digitalWrite(fan,LOW);
if(sicaklik == simdi){
digitalWrite(karistirici,HIGH);
}
}
sorun ne olabilir?</dallastemperature.h></onewire.h>