//*************************************** //*************** libraries *************** //****************************************
//*************************************** //************* pin assignments ************* //****************************************
// coop photocell sensors const int photocell_front = A0; const int photocell_side = A1; const int photocell_back = A2;
// coop climate
DHT climate(DHTPIN, DHTTYPE);
// coop fans const int coop_fan_1 = 22; const int coop_fan_2 = 22;
// coop water const int coop_heater = 22; const int coop_heater_pump = 22; const int coop_water_heater = 22; const int coop_water_pump = 22;
// chicken door const int chicken_door_motor_enable = 2; const int chicken_door_motor_close = 22; const int chicken_door_motor_open = 22; const int chicken_door_open_sensor = 22; const int chicken_door_closed_sensor = 22;
// left coop windows const int left_window_motor_enable = 3; const int left_window_motor_close = 22; const int left_window_motor_open = 22; const int left_window_open_sensor = 22; const int left_window_closed_sensor = 22;
// right coop window const int right_window_motor_enable = 4; const int right_window_motor_close = 22; const int right_window_motor_open = 22; const int right_window_open_sensor = 22; const int right_window_closed_sensor = 22;
// coop doors const int main_door_sensor = 22; const int left_nesting_box_sensor = 22; const int right_nesting_box_sensor = 22; const int run_door_sensor = 22;
// coop lights const int coop_interior_light = 22;
// coop led const int green_led = 22; const int red_led = 22;
// coop security const int electric_fence_relay = 22; //const int motion_sensor = 22; //const int security_strobe = 22;
//*************************************** //*************** variables *************** //****************************************
// coop photocell sensor int photocell_reading_front; int photocell_reading_side; int photocell_reading_back; int photocell_reading_avg; int photocell_reading_level;
// coop climate sensor int coop_humidity; int coop_temperature = 75; int coop_heat_index;
// coop fan int fan_running_val = true;
// coop pumps int coop_pump_val = true;
// coop door sensors int chicken_door_open_sensor_val; int chicken_door_closed_sensor_val; int chicken_door_sensor_val; int main_door_sensor_val; int left_nesting_box_sensor_val; int right_nesting_box_sensor_val; int run_door_sensor_val;
// coop window sensors int left_window_open_sensor_val; int left_window_closed_sensor_val; int left_window_sensor_val; int right_window_open_sensor_val; int right_window_closed_sensor_val; int right_window_sensor_val;
// coop light int chicken_door_open_time; int coop_light_control_val = 0;
// led int led_state = LOW;
// lcd int coop_fault_val; int fault_status_val; int lcd_val; LiquidCrystal_I2C lcd(0x27, 20, 4);
//*************************************** //**************** delays **************** //***************************************
// coop control unsigned long last_control_time = 0; unsigned long control_time_delay = 600000;
// coop fan switch unsigned long last_fan_time = 0; unsigned long fan_time_delay = 3600000;
// coop and heater pumps unsigned long last_coop_pump_time = 0; unsigned long coop_pump_time_delay = 60000;
// chicken door unsigned long last_chicken_door_time = 0; unsigned long chicken_door_delay = 2000;
// sensor fault unsigned long last_sensor_fault_time = 0; unsigned long sensor_fault_delay = 60000;
// led flasher unsigned long last_led_flash_time = 0; unsigned long led_flash_delay = 250;
// lcd display unsigned long last_lcd_display_time = 0; unsigned long lcd_display_delay = 5000;
// lcd fault display unsigned long last_lcd_fault_time = 0; unsigned long lcd_fault_delay = 2500;
// coop light unsigned long coop_light_delay = (60000 * 840);
//*************************************** //*************** coop setup *************** //***************************************
void setup(void) { Serial.begin(9600);
lcd.init(); lcd.display(); lcd.backlight();
// coop photocell pinMode(photocell_front, INPUT); pinMode(photocell_side, INPUT); pinMode(photocell_back, INPUT);
// coop climate climate.begin();
// coop fans pinMode(coop_fan_1, OUTPUT); digitalWrite(coop_fan_1, HIGH); pinMode(coop_fan_2, OUTPUT); digitalWrite(coop_fan_2, HIGH);
// coop heaters pinMode(coop_heater, OUTPUT); digitalWrite(coop_heater, HIGH); pinMode(coop_heater_pump, OUTPUT); digitalWrite(coop_heater_pump, HIGH); pinMode(coop_water_heater, OUTPUT); digitalWrite(coop_water_heater, HIGH); pinMode(coop_water_pump, OUTPUT); digitalWrite(coop_water_pump, HIGH);
// coop door pinMode(chicken_door_open_sensor, INPUT); digitalWrite(chicken_door_open_sensor, HIGH); pinMode(chicken_door_closed_sensor, INPUT); digitalWrite(chicken_door_closed_sensor, HIGH); pinMode(chicken_door_motor_enable, OUTPUT); pinMode(chicken_door_motor_close, OUTPUT); pinMode(chicken_door_motor_open, OUTPUT);
// coop windows pinMode(left_window_open_sensor, INPUT); digitalWrite(left_window_open_sensor, HIGH); pinMode(left_window_closed_sensor, INPUT); digitalWrite(left_window_closed_sensor, HIGH); pinMode(right_window_open_sensor, INPUT); digitalWrite(right_window_open_sensor, HIGH); pinMode(right_window_closed_sensor, INPUT); digitalWrite(right_window_closed_sensor, HIGH); pinMode(left_window_motor_enable, OUTPUT); pinMode(left_window_motor_close, OUTPUT); pinMode(left_window_motor_open, OUTPUT); pinMode(right_window_motor_enable, OUTPUT); pinMode(right_window_motor_close, OUTPUT); pinMode(right_window_motor_open, OUTPUT);
// coop doors pinMode(main_door_sensor, INPUT); digitalWrite(main_door_sensor, HIGH); pinMode(left_nesting_box_sensor, INPUT); digitalWrite(left_nesting_box_sensor, HIGH); pinMode(right_nesting_box_sensor, INPUT); digitalWrite(right_nesting_box_sensor, HIGH); pinMode(run_door_sensor, INPUT); digitalWrite(run_door_sensor, HIGH);
// coop light pinMode(coop_interior_light, OUTPUT); digitalWrite(coop_interior_light, HIGH);
// coop led pinMode(green_led, OUTPUT); digitalWrite(green_led, LOW); pinMode(red_led, OUTPUT); digitalWrite(red_led, LOW);
// coop security pinMode(electric_fence_relay, OUTPUT); digitalWrite(electric_fence_relay, HIGH); }
//*************************************** //************** coop control ************** //*************************************** void coop_control() { if ((unsigned long)(millis() - last_control_time) >= control_time_delay) { last_control_time = millis(); photocell_reading_front = analogRead(photocell_front); photocell_reading_side = analogRead(photocell_side); photocell_reading_back = analogRead(photocell_back); photocell_reading_avg = ((photocell_reading_front) + (photocell_reading_side) + (photocell_reading_back) / 3);
if ((photocell_reading_avg >= 0 && photocell_reading_avg <= 3))
{
photocell_reading_level = '1';
}
else if (photocell_reading_avg >= 4 && photocell_reading_avg <= 120)
{
photocell_reading_level = '2';
}
else if (photocell_reading_avg >= 125)
{
photocell_reading_level = '3';
}
float humidity = climate.readHumidity();
coop_humidity = humidity;
float temperature = climate.readTemperature(true);
coop_temperature = temperature;
float heat_index = climate.computeHeatIndex(humidity , temperature);
coop_heat_index = heat_index;
} }
//*************************************** //************ coop climate control ************ //***************************************
void coop_climate_control() { if (coop_temperature < 40) { digitalWrite(coop_heater, LOW); digitalWrite(coop_heater_pump, LOW); digitalWrite(coop_water_heater, LOW); digitalWrite(coop_water_pump, LOW);
digitalWrite(coop_fan_1, HIGH);
digitalWrite(coop_fan_2, HIGH);
fan_running_val = false;
coop_window_close_control();
}
if ((coop_temperature < 50) && (coop_temperature < 70)) { digitalWrite(coop_fan_1, HIGH); digitalWrite(coop_fan_2, HIGH); digitalWrite(coop_heater, HIGH); digitalWrite(coop_heater_pump, HIGH); digitalWrite(coop_water_heater, HIGH); fan_running_val = false; coop_water_pump_control(); coop_window_open_control(); }
if (coop_temperature > 80) { digitalWrite(coop_heater, HIGH); digitalWrite(coop_heater_pump, HIGH); digitalWrite(coop_water_heater, HIGH); fan_running_val = false; coop_fan_control(); coop_water_pump_control(); coop_window_open_control(); } }
void coop_window_close_control() { left_window_closed_sensor_val = digitalRead(left_window_closed_sensor); left_window_open_sensor_val = digitalRead(left_window_open_sensor); right_window_closed_sensor_val = digitalRead(right_window_closed_sensor); right_window_open_sensor_val = digitalRead(right_window_open_sensor);
digitalWrite(left_window_motor_close, LOW); digitalWrite(left_window_motor_open, HIGH); analogWrite(left_window_motor_enable, 255); if (left_window_closed_sensor_val == 0) { digitalWrite(left_window_motor_close, HIGH); digitalWrite(left_window_motor_open, HIGH); analogWrite(left_window_motor_enable, 0); }
digitalWrite(right_window_motor_close, LOW); digitalWrite(right_window_motor_open, HIGH); analogWrite(right_window_motor_enable, 255); if (right_window_closed_sensor_val == 0) { digitalWrite(right_window_motor_close, HIGH); digitalWrite(right_window_motor_open, HIGH); analogWrite(right_window_motor_enable, 0); } }
void coop_window_open_control() { left_window_closed_sensor_val = digitalRead(left_window_closed_sensor); left_window_open_sensor_val = digitalRead(left_window_open_sensor); right_window_closed_sensor_val = digitalRead(right_window_closed_sensor); right_window_open_sensor_val = digitalRead(right_window_open_sensor);
digitalWrite(left_window_motor_close, HIGH); digitalWrite(left_window_motor_open, LOW); analogWrite(left_window_motor_enable, 255); if (left_window_closed_sensor_val == 0) { digitalWrite(left_window_motor_close, HIGH); digitalWrite(left_window_motor_open, HIGH); analogWrite(left_window_motor_enable, 0); }
digitalWrite(right_window_motor_close, HIGH); digitalWrite(right_window_motor_open, LOW); analogWrite(right_window_motor_enable, 255); if (right_window_closed_sensor_val == 0) { digitalWrite(right_window_motor_close, HIGH); digitalWrite(right_window_motor_open, HIGH); analogWrite(right_window_motor_enable, 0); } }
void coop_fan_control() { if ((unsigned long)(millis() - last_fan_time) >= fan_time_delay) { last_fan_time = millis(); if (fan_running_val == true) { fan_running_val = false; digitalWrite(coop_fan_1, LOW); digitalWrite(coop_fan_2, HIGH); } else if (fan_running_val == false) { fan_running_val = true; digitalWrite(coop_fan_1, HIGH); digitalWrite(coop_fan_2, LOW); } } }
void coop_water_pump_control() { if ((unsigned long)(millis() - last_coop_pump_time) >= coop_pump_time_delay) { last_coop_pump_time = millis(); if (coop_pump_val == true) { coop_pump_val = false; digitalWrite(coop_water_pump, LOW); digitalWrite(coop_heater_pump, LOW); } else if (coop_pump_val == false) { coop_pump_val = true; digitalWrite(coop_water_pump, LOW); digitalWrite(coop_heater_pump, LOW); } } }
//*************************************** //************** chicken door ************** //*************************************** void coop_chicken_door_control() { if (photocell_reading_level == '1') { chicken_door_open_time = millis(); chicken_door_open_control(); } if (photocell_reading_level == '3') { chicken_door_close_control(); } }
void chicken_door_close_control() { chicken_door_closed_sensor_val = digitalRead(chicken_door_closed_sensor); chicken_door_open_sensor_val = digitalRead(chicken_door_open_sensor);
digitalWrite(chicken_door_motor_close, LOW); digitalWrite(chicken_door_motor_open, HIGH); analogWrite(chicken_door_motor_enable, 255); if (chicken_door_closed_sensor_val == 0) { digitalWrite(chicken_door_motor_close, HIGH); digitalWrite(chicken_door_motor_open, HIGH); analogWrite(chicken_door_motor_enable, 0); } }
void chicken_door_open_control() { chicken_door_closed_sensor_val = digitalRead(chicken_door_closed_sensor); chicken_door_open_sensor_val = digitalRead(chicken_door_open_sensor);
digitalWrite(chicken_door_motor_close, HIGH); digitalWrite(chicken_door_motor_open, LOW); analogWrite(chicken_door_motor_enable, 255); if (chicken_door_closed_sensor_val == 0) { if ((unsigned long)(millis() - last_chicken_door_time) > chicken_door_delay) { last_chicken_door_time = millis(); digitalWrite(chicken_door_motor_close, HIGH); digitalWrite(chicken_door_motor_open, HIGH); analogWrite(chicken_door_motor_enable, 0); } } }
//*************************************** //*************** coop light *************** //*************************************** void coop_light_control() { if((photocell_reading_level == '2') && (chicken_door_open_sensor == 0)) { coop_light_control_val = 1: } if (coop_light_control_val == 1) { digitalWrite(coop_interior_light, LOW); } if((coop_light_control_val == 1) && (chicken_door_closed_sensor == 0) { if((unsigned long)(millis() - chicken_door_open_time) >= coop_light_delay) { chicken_door_open_time = 0; coop_light_control_val = 0; digitalWrite(coop_interior_light, HIGH); } } }
//*************************************** //************** coop security ************** //****************************************
void coop_electric_fence() { if (chicken_door_closed_sensor == 0) { digitalWrite(electric_fence_relay, LOW); } else if (chicken_door_closed_sensor != 0) { digitalWrite(electric_fence_relay, HIGH); } }
//*************************************** //************* coop door faults ************* //***************************************
void coop_door_fault() { chicken_door_closed_sensor_val = digitalRead(chicken_door_closed_sensor); chicken_door_open_sensor_val = digitalRead(chicken_door_open_sensor); left_nesting_box_sensor_val = digitalRead(left_nesting_box_sensor); right_nesting_box_sensor_val = digitalRead(right_nesting_box_sensor); main_door_sensor_val = digitalRead(main_door_sensor); run_door_sensor_val = digitalRead(run_door_sensor); left_window_closed_sensor_val = digitalRead(left_window_closed_sensor); left_window_open_sensor_val = digitalRead(left_window_open_sensor); right_window_closed_sensor_val = digitalRead(right_window_closed_sensor); right_window_open_sensor_val = digitalRead(right_window_open_sensor);
if ((chicken_door_closed_sensor_val == 0) || (chicken_door_open_sensor_val == 0)) { chicken_door_sensor_val = 0; } else if ((chicken_door_closed_sensor_val != 0) && (chicken_door_open_sensor_val != 0)) { chicken_door_sensor_val = 1; }
if ((left_window_closed_sensor_val == 0) || (left_window_open_sensor_val == 0)) { left_window_sensor_val = 0; } else if ((left_window_closed_sensor_val != 0) && (left_window_open_sensor_val != 0)) { left_window_sensor_val = 1; }
if ((right_window_closed_sensor_val == 0) || (right_window_open_sensor_val == 0)) { right_window_sensor_val = 0; } else if ((right_window_closed_sensor_val != 0) && (right_window_open_sensor_val != 0)) { right_window_sensor_val = 1; }
if ((chicken_door_sensor_val == 0) && (left_nesting_box_sensor_val == 0) && (right_nesting_box_sensor_val == 0) && (main_door_sensor_val == 0) && (run_door_sensor_val == 0) && (left_window_sensor_val == 0) && (right_window_sensor_val == 0)) { last_sensor_fault_time = millis(); coop_fault_val = 0; coop_sensor_led(); coop_sensor_lcd(); } else if ((chicken_door_sensor_val != 0) || (left_nesting_box_sensor_val != 0) || (right_nesting_box_sensor_val != 0) || (main_door_sensor_val != 0) || (run_door_sensor_val != 0) || (left_window_sensor_val != 0) || (right_window_sensor_val != 0)) { if ((unsigned long)(millis() - last_sensor_fault_time) >= sensor_fault_delay) { coop_fault_val = 1; coop_sensor_fault_led(); coop_sensor_fault_lcd(); } } }
void coop_sensor_led() { if ((chicken_door_closed_sensor_val == 0) && (main_door_sensor_val == 0) && (left_nesting_box_sensor_val == 0) && (right_nesting_box_sensor_val == 0) && (run_door_sensor_val == 0)) { digitalWrite(green_led, HIGH); digitalWrite(red_led, LOW); } else if ((chicken_door_closed_sensor_val != 0) && (main_door_sensor_val != 0) && (left_nesting_box_sensor_val != 0) && (right_nesting_box_sensor_val != 0) && (run_door_sensor_val != 0)) { digitalWrite(green_led, LOW); digitalWrite(red_led, HIGH); } }
void coop_sensor_fault_led() { last_led_flash_time = millis();
if (led_state == LOW) led_state = HIGH; else led_state = LOW; digitalWrite(red_led, led_state); }
void coop_sensor_lcd() { if (lcd_val == 0) { if ((unsigned long)(millis() - last_lcd_display_time) >= lcd_display_delay) { last_lcd_display_time = millis();
lcd.clear();
lcd.setCursor(6, 0);
lcd.print("COOP BRAIN");
lcd.setCursor(0, 1);
lcd.print("Version 2.1a");
lcd.setCursor(0, 2);
lcd.print("Chicken Corp.");
lcd.setCursor(0, 3);
lcd.print("Copyright 2000-2020");
lcd_val = 1;
}
} else if (lcd_val == 1) { if ((unsigned long)(millis() - last_lcd_display_time) >= lcd_display_delay) { last_lcd_display_time = millis();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Light Sensor");
lcd.setCursor(0, 1);
lcd.print("level: ");
if (photocell_reading_level == '1')
{
lcd.print("Night");
}
else if ((photocell_reading_level == '2') && (chicken_door_closed_sensor == 1))
{
lcd.print("Dawn");
}
else if ((photocell_reading_level == '2') && (chicken_door_open_sensor == 1))
{
lcd.print("Dusk");
}
else if (photocell_reading_level == '3')
{
lcd.print("Day");
}
lcd_val = 2;
}
} else if (lcd_val == 2) { if ((unsigned long)(millis() - last_lcd_display_time) >= lcd_display_delay) { last_lcd_display_time = millis();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Coop temperature");
lcd.setCursor(0, 1);
lcd.print("temperature: ");
lcd.print(coop_temperature);
lcd.print((char)223);
lcd.print("F");
lcd.setCursor(0, 2);
lcd.print("humidity: ");
lcd.print(coop_humidity);
lcd.print(" %");
lcd.setCursor(0, 3);
lcd.print("Heat Index: ");
lcd.print(coop_heat_index);
lcd.print((char)223);
lcd.print("F");
lcd_val = 3;
}
} else if (lcd_val == 3) { if ((unsigned long)(millis() - last_lcd_display_time) >= lcd_display_delay) { last_lcd_display_time = millis();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Coop Fans");
lcd.setCursor(0, 2);
lcd.print("Fan group 1: ");
if (coop_fan_1 == LOW)
{
lcd.print("ON");
}
else if (coop_fan_1 == HIGH)
{
lcd.print("OFF");
}
lcd.setCursor(0, 3);
lcd.print("Fan group 2: ");
if (coop_fan_2 == LOW)
{
lcd.print("ON");
}
else if (coop_fan_2 == HIGH)
{
lcd.print("OFF");
}
lcd_val = 4;
}
} else if (lcd_val == 4) { if ((unsigned long)(millis() - last_lcd_display_time) >= lcd_display_delay) { last_lcd_display_time = millis();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Coop Heaters");
lcd.setCursor(0, 2);
lcd.print("Coop Heater: ");
if (coop_heater == LOW)
{
lcd.print("ON");
}
else if (coop_heater == HIGH)
{
lcd.print("OFF");
}
lcd.setCursor(0, 3);
lcd.print("Water Heater: ");
if (coop_water_heater == HIGH)
{
lcd.print("ON");
}
else if (coop_water_heater == LOW)
{
lcd.print("OFF");
}
lcd_val = 5;
}
} else if (lcd_val == 5) { if ((unsigned long)(millis() - last_lcd_display_time) >= lcd_display_delay) { last_lcd_display_time = millis();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Coop Chicken Door");
lcd.setCursor(0, 2);
if ((chicken_door_closed_sensor_val == 0) && (chicken_door_open_sensor_val != 0))
{
lcd.print("SECURED");
}
else if ((chicken_door_closed_sensor_val != 0) && (chicken_door_open_sensor_val == 0))
{
lcd.print("UNSECURED");
}
lcd_val = 6;
}
} else if (lcd_val == 6) { if ((unsigned long)(millis() - last_lcd_display_time) >= lcd_display_delay) { last_lcd_display_time = millis();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Coop Window Status");
lcd.setCursor(0, 2);
lcd.print("Left Window: ");
if ((left_window_closed_sensor_val == 0) && (left_window_open_sensor_val != 0))
{
lcd.print("SECURED");
}
else if ((left_window_closed_sensor_val != 0) && (left_window_open_sensor_val == 0))
{
lcd.print("UNSECURED");
}
lcd.setCursor(0, 3);
lcd.print("Right Window: ");
if ((right_window_closed_sensor_val == 0) && (right_window_open_sensor_val != 0))
{
lcd.print("SECURED");
}
else if ((right_window_closed_sensor_val != 0) && (right_window_open_sensor_val == 0))
{
lcd.print("UNSECURED");
}
lcd_val = 7;
}
} else if (lcd_val == 7) { if ((unsigned long)(millis() - last_lcd_display_time) >= lcd_display_delay) { last_lcd_display_time = millis();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Coop Door Status");
lcd.setCursor(0, 2);
lcd.print("Main Door: ");
if (main_door_sensor_val == 0)
{
lcd.print("SECURED");
}
else if (main_door_sensor_val != 0)
{
lcd.print("UNSECURED");
}
lcd.setCursor(0, 3);
lcd.print("Run Door: ");
if (run_door_sensor_val == 0)
{
lcd.print("SECURED");
}
else if (run_door_sensor_val != 0)
{
lcd.print("UNSECURED");
}
lcd_val = 8;
}
} else if (lcd_val == 8) { if ((unsigned long)(millis() - last_lcd_display_time) >= lcd_display_delay) { last_lcd_display_time = millis();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Nesting Box Status");
lcd.setCursor(0, 2);
lcd.print("Left: ");
if (left_nesting_box_sensor_val == 0)
{
lcd.print("SECURED");
}
else if (left_nesting_box_sensor_val != 0)
{
lcd.print("UNSECURED");
}
lcd.setCursor(0, 3);
lcd.print("Right: ");
if (right_nesting_box_sensor_val == 0)
{
lcd.print("SECURED");
}
else if (right_nesting_box_sensor_val != 0)
{
lcd.print("UNSECURED");
}
lcd_val = 9;
}
} else if (lcd_val == 9) { if ((unsigned long)(millis() - last_lcd_display_time) >= lcd_display_delay) { last_lcd_display_time = millis();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Coop Pumps");
lcd.setCursor(0, 2);
lcd.print("Water Pump: ");
if (coop_water_pump == LOW)
{
lcd.print("ON");
}
else if (coop_water_pump == HIGH)
{
lcd.print("OFF");
}
lcd.setCursor(0, 3);
lcd.print("Heat pump: ");
if (coop_heater_pump == LOW)
{
lcd.print("ON");
}
else if (coop_heater_pump == HIGH)
{
lcd.print("OFF");
}
lcd_val = 10;
}
}
else if (lcd_val == 10) { if ((unsigned long)(millis() - last_lcd_display_time) >= lcd_display_delay) { last_lcd_display_time = millis();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Coop Security");
lcd.setCursor(0, 1);
lcd.print("Fence: ");
if (electric_fence_relay == LOW)
{
lcd.print("ARMED");
}
else if (electric_fence_relay == HIGH)
{
lcd.print("OFF");
}
lcd.setCursor(0, 2);
lcd.print("Sensors: ");
lcd.print("N/A");
lcd.setCursor(0, 2);
lcd.print("Strobes: ");
lcd.print("N/A");
lcd_val = 1;
}
} }
void coop_sensor_fault_lcd() { if (fault_status_val == 0) { if ((coop_fault_val == 1) && (chicken_door_sensor_val == 1)) { if ((unsigned long)(millis() - last_lcd_fault_time) >= lcd_fault_delay) { last_lcd_fault_time = millis();
lcd.display();
lcd.backlight();
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("COOP FAULT");
lcd.setCursor(0, 1);
lcd.print("********************");
lcd.setCursor(4, 2);
lcd.print("CHICKEN DOOR");
lcd.setCursor(0, 3);
lcd.print("********************");
fault_status_val = 1;
}
}
else if ((coop_fault_val == 1) && (chicken_door_sensor_val == 0))
{
fault_status_val = 1;
}
}
if (fault_status_val == 1) { if ((coop_fault_val == 1) && (main_door_sensor_val == 1)) { if ((unsigned long)(millis() - last_lcd_fault_time) >= lcd_fault_delay) { last_lcd_fault_time = millis();
lcd.display();
lcd.backlight();
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("COOP FAULT");
lcd.setCursor(0, 1);
lcd.print("********************");
lcd.setCursor(5, 2);
lcd.print("MAIN DOOR");
lcd.setCursor(0, 3);
lcd.print("********************");
fault_status_val = 2;
}
}
else if ((coop_fault_val == 1) && (main_door_sensor_val == 0))
{
fault_status_val = 2;
}
}
if (fault_status_val == 2) { if ((coop_fault_val == 1) && (left_nesting_box_sensor_val == 1)) { if ((unsigned long)(millis() - last_lcd_fault_time) >= lcd_fault_delay) { last_lcd_fault_time = millis();
lcd.display();
lcd.backlight();
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("COOP FAULT");
lcd.setCursor(0, 1);
lcd.print("********************");
lcd.setCursor(2, 2);
lcd.print("LEFT NESTING BOX");
lcd.setCursor(0, 3);
lcd.print("********************");
fault_status_val = 3;
}
}
else if ((coop_fault_val == 1) && (left_nesting_box_sensor_val == 0))
{
fault_status_val = 3;
}
}
if (fault_status_val == 3) { if ((coop_fault_val == 1) && (right_nesting_box_sensor_val == 1)) { if ((unsigned long)(millis() - last_lcd_fault_time) >= lcd_fault_delay) { last_lcd_fault_time = millis();
lcd.display();
lcd.backlight();
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("COOP FAULT");
lcd.setCursor(0, 1);
lcd.print("********************");
lcd.setCursor(1, 2);
lcd.print("RIGHT NESTING BOX");
lcd.setCursor(0, 3);
lcd.print("********************");
fault_status_val = 4;
}
}
else if ((coop_fault_val == 1) && (right_nesting_box_sensor_val == 0))
{
fault_status_val = 4;
}
}
if (fault_status_val == 4) { if ((coop_fault_val == 1) && (run_door_sensor_val == 1)) { if ((unsigned long)(millis() - last_lcd_fault_time) >= lcd_fault_delay) { last_lcd_fault_time = millis();
lcd.display();
lcd.backlight();
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("COOP FAULT");
lcd.setCursor(0, 1);
lcd.print("********************");
lcd.setCursor(6, 2);
lcd.print("RUN DOOR");
lcd.setCursor(0, 3);
lcd.print("********************");
fault_status_val = 5;
}
}
else if ((coop_fault_val == 1) && (run_door_sensor_val == 0))
{
fault_status_val = 5;
}
}
if (fault_status_val == 5) { if ((coop_fault_val == 1) && (left_window_sensor_val == 1)) { if ((unsigned long)(millis() - last_lcd_fault_time) >= lcd_fault_delay) { last_lcd_fault_time = millis();
lcd.display();
lcd.backlight();
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("COOP FAULT");
lcd.setCursor(0, 1);
lcd.print("********************");
lcd.setCursor(4, 2);
lcd.print("LEFT WINDOW");
lcd.setCursor(0, 3);
lcd.print("********************");
fault_status_val = 6;
}
}
else if ((coop_fault_val == 1) && (left_window_sensor_val == 0))
{
fault_status_val = 6;
}
}
if (fault_status_val == 6) { if ((coop_fault_val == 1) && (right_window_sensor_val == 1)) { if ((unsigned long)(millis() - last_lcd_fault_time) >= lcd_fault_delay) { last_lcd_fault_time = millis();
lcd.display();
lcd.backlight();
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("COOP FAULT");
lcd.setCursor(0, 1);
lcd.print("********************");
lcd.setCursor(4, 2);
lcd.print("RIGHT WINDOW");
lcd.setCursor(0, 3);
lcd.print("********************");
fault_status_val = 0;
}
}
else if ((coop_fault_val == 1) && (right_window_sensor_val == 0))
{
fault_status_val = 0;
}
} }
void serial() { Serial.print("chicken door open \t"); Serial.print(chicken_door_open_sensor_val); Serial.print( "\n"); Serial.print("chicken door closed \t"); Serial.print(chicken_door_closed_sensor_val); Serial.print( "\n"); Serial.print("chicken door val \t"); Serial.print(chicken_door_sensor_val); Serial.print( "\n"); Serial.print("left nesting box \t"); Serial.print(left_nesting_box_sensor_val); Serial.print( "\n"); Serial.print("right nesting box \t"); Serial.print(right_nesting_box_sensor_val); Serial.print( "\n"); Serial.print("main door \t"); Serial.print(main_door_sensor_val); Serial.print( "\n"); Serial.print("run door \t"); Serial.print(run_door_sensor_val); Serial.print( "\n"); //delay(1000); }
void loop() { coop_control(); coop_climate_control(); coop_chicken_door_control(); coop_light_control(); coop_electric_fence(); coop_door_fault(); serial(); }