31 Mayıs 2017 Çarşamba

Arduino Kuluçka Makinası Kodu

1 adet Dht11 nem ve ısı ölçer
1 adet 4 lü röle (ışık, nem ve fan)
2 adet sg90 servo motor
1 adet button
1 adet 5510 lcd ekran
1 adet buzzer


       

#include 
#include 
#include   
#include "DHT.h"

#define DHTPIN 2
#define DHTTYPE DHT11
#define RELAY1  0                       
#define RELAY2  3                        
#define RELAY3  7                        
#define RELAY4  12

DHT dht(DHTPIN, DHTTYPE);
static PCD8544 lcd = PCD8544(8, 9, 10, 11, 4);
Servo myservo; 
Servo myservo2;
int pos1 = 0;
int pos2 = 1;
int temp = 0;

int Button=13;
int speakerPin = 12;

float temp1 = 38.4;
float hum1 = 60.0;
float temp2 = 38.7;
float hum2 = 70.0;

float deftemp = temp1;
float defhum = hum1;

int r1,rx1 =0;
int r2,rx2 =0;
int r3,rx3 =0;
int tAlert= 0;
int hAlert = 0;
void setup()
{
	pinMode(RELAY1, OUTPUT);       
	pinMode(RELAY2, OUTPUT);
	pinMode(RELAY3, OUTPUT);
	//pinMode(RELAY4, OUTPUT);
	myservo.attach(5);
	myservo2.attach(6);
	lcd.begin(84, 48);
	dht.begin();
	Serial.begin(9600);
	lcd.setCursor(10,0);
	lcd.print("Sicaklik: "); 
	lcd.setCursor(10,4);
	lcd.print("Nem:");
  	pinMode(Button, INPUT);
  	pinMode (speakerPin, OUTPUT);
}

void loop()
{
	Serial.println("Start loop");
  	Serial.print("D Temp: ");Serial.println(deftemp);
  	Serial.print("D Hum: ");Serial.println(defhum);
	float h = dht.readHumidity();
	float t = dht.readTemperature();
	float f = dht.readTemperature(true);
	if (isnan(h) || isnan(t) || isnan(f)) {
                alert(255, 1500, "Sensor", "Error");
		return;
	}
	screen(h, t);
	
	// button set  
	if(digitalRead(Button)==LOW)
	{
		if(deftemp == temp1) {
			deftemp = temp2;
			defhum = hum2;
		} else if(deftemp == temp2) {
			deftemp = temp1;
			defhum = hum1;
		}
		Serial.print("New Temp: ");Serial.println(deftemp);
		Serial.print("New Hum: ");Serial.println(defhum);
 
	}
	
	// relay control
	if(h < defhum && t < deftemp) {
		r1= 0;//fan
		r2= 1;//lamba
		r3= 1;//nem
		tAlert++;
		hAlert++;
   Serial.println("Sicaklik Yetersiz Lamba Acik, Nem Yetersiz Nem Acik, Fan kapali");
	} 
	else if(h < defhum && t > deftemp) {
		r1= 1;
		r2= 0;
    r3= 1;
		tAlert++;
   Serial.println("Sicaklik Fazla Lamba Kapali, Nem Yetersiz Nem Acik, fan acik");
	}
	else if(h > defhum && t < deftemp) {
		r1= 0;
		r2= 1;
    r3= 0;
		hAlert++;
   Serial.println("Sicaklik Az Lamba Acik, Nem Fazla Nem Kapali , Fan Kapali");
	}
	else{
		r1= 1;
		r2= 0;
		r3= 0;
		hAlert = 0;
		tAlert = 0;
   Serial.println("Sicaklik Yeterli Lamba Kapali, Nem Yeterli Nem Kapali,fan acik");
	}
	if(r1 != rx1 && r1 == 1 ) {
		digitalWrite(RELAY1,HIGH);
		Serial.println("Humidty Relay 1 open");
	}else if(r1 != rx1 && r1 == 0 ) {
		digitalWrite(RELAY1,LOW);
		Serial.println("Humidty Relay 1 close");
	}
	rx1 =r1;
	if(r2 != rx2 && r2 == 1 ) {
		digitalWrite(RELAY2,HIGH);
		Serial.println("Temperature Relay 2 open");
	}else if(r2 != rx2 && r2 == 0 ) {
		digitalWrite(RELAY2,LOW);
		Serial.println("Temperature Relay 2 close");
	}
	rx2 =r2;
	if(r3 != rx3 && r3 == 1 ) {
		digitalWrite(RELAY3,HIGH);
		Serial.println("Fan Relay 3 open");
	}else if(r3 != rx3 && r3 == 0 ) {
		digitalWrite(RELAY3,LOW);
		Serial.println("Fan Relay 3 close");
	}
	rx3 =r3;
	
	if(tAlert == 500) {
		alert(255, 5000, "Temperature", "Error");
		tAlert= 0;
	}
	if(hAlert == 500) {
		alert(255, 10000, "Humidty", "Error");
		hAlert= 0;
	}
	
	//servo 
	if(pos2 ==0 || pos2==180) {
		temp= pos1;
		pos1 = pos2;
		pos2 = temp;
	}
	else if(pos2 > pos1) {
		pos1 = pos2;
		pos2++;
	}
	else {
		pos1 = pos2;
		pos2--;
	}
	myservo.write(pos1);
	myservo2.write(pos1);
	Serial.print("Servo position :");
	Serial.println(pos1);
}

void alert(int v, int d, char mystr[], char mystr2[]) {
	writeScreen(mystr, mystr2);
    for(int i=0;i
 

5 yorum:

yemek tarifleri dedi ki...

devre şemasını atarmısınız

yemek tarifleri dedi ki...

devre şemasını yollarmısınız

syildirim dedi ki...

kodun ust kısmına bakıp anlayabilirsiniz.

Unknown dedi ki...

merhaba yeniyim arduinoda ,peki servo motoru millis olarak nasıl yapabiliriz.şimdiden teşekkürler

ÖVEÇLER VADİSİ dedi ki...

Devre şeması eklermisiniz bide kodun üst kısımında servo ve ekran içinde kütüphane dagil etmemiz lazım değil mi ?