/********* Pleasedontcode.com **********
Pleasedontcode thanks you for automatic code generation! Enjoy your code!
- Terms and Conditions:
You have a non-exclusive, revocable, worldwide, royalty-free license
for personal and commercial use. Attribution is optional; modifications
are allowed, but you're responsible for code maintenance. We're not
liable for any loss or damage. For full terms,
please visit pleasedontcode.com/termsandconditions.
- Project: Temp_and_hum_alarm
- Source Code compiled for: Arduino Uno
- Source Code created on: 2024-01-05 23:56:30
********* Pleasedontcode.com **********/
/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
/* On power up: set temp_max to 35, hum_max to 50, */
/* normal_mode true, focus = "nothing". */
/****** SYSTEM REQUIREMENT 2 *****/
/* If normal_mode is true then: read temperature and */
/* humidity from DHT11 and write to LCD. If */
/* temperature exceeds temp_max or humidity exceeds */
/* hum_max then enable buzzer and led, otherwise */
/* disable buzzer and Led. */
/****** SYSTEM REQUIREMENT 3 *****/
/* If normal_mode is true and B1 is pressed then */
/* normal_mode false, focus = "temp", write to LCD */
/* temp_max. */
/****** SYSTEM REQUIREMENT 4 *****/
/* If normal_mode is false and focus = "temp" then if */
/* B1 is pressed then focus = "hum", write to LCD */
/* hum_max. */
/****** SYSTEM REQUIREMENT 5 *****/
/* If normal_mode is false and focus = "hum" then if */
/* B1 is pressed then focus = "nothing", normal_mode */
/* true. */
/****** SYSTEM REQUIREMENT 6 *****/
/* If normal_mode is false and focus = "temp" then if */
/* B2 is pressed, add 1 to temp_max, write in LCD */
/* temp_max. */
/****** SYSTEM REQUIREMENT 7 *****/
/* If normal_mode is false and focus = "temp" then if */
/* B3 is pressed, subtract 1 from temp_max, write */
/* temp_max on LCD. */
/****** SYSTEM REQUIREMENT 8 *****/
/* If normal_mode is false and focus = "hum" then if */
/* B2 is pressed add 1 to hum_max, write hum_max on */
/* LCD. */
/****** SYSTEM REQUIREMENT 9 *****/
/* If normal_mode is false and focus = "hum" then if */
/* B3 is pressed, subtract 1 from hum_max, write */
/* hum_max in LCD. */
/****** END SYSTEM REQUIREMENTS *****/
/****** DEFINITION OF LIBRARIES *****/
#include
#include
#include
#include
/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);
/***** DEFINITION OF DIGITAL INPUT PINS *****/
const uint8_t D_DHT11_DOUT_PIN_D2 = 2;
const uint8_t B1_PushButton_PIN_D9 = 9;
const uint8_t B2_PushButton_PIN_D10 = 10;
const uint8_t B3_PushButton_PIN_D11 = 11;
/***** DEFINITION OF DIGITAL OUTPUT PINS *****/
const uint8_t L_LCD1602_RS_PIN_D3 = 3;
const uint8_t L_LCD1602_E_PIN_D4 = 4;
const uint8_t L_LCD1602_D4_PIN_D5 = 5;
const uint8_t L_LCD1602_D5_PIN_D6 = 6;
const uint8_t L_LCD1602_D6_PIN_D7 = 7;
const uint8_t L_LCD1602_D7_PIN_D8 = 8;
const uint8_t LED_LED_PIN_D12 = 12;
const uint8_t B_ActiveBuzzer_output_PIN_D13 = 13;
/****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/
LiquidCrystal lcd(L_LCD1602_RS_PIN_D3, L_LCD1602_E_PIN_D4, L_LCD1602_D4_PIN_D5, L_LCD1602_D5_PIN_D6, L_LCD1602_D6_PIN_D7, L_LCD1602_D7_PIN_D8);
EasyButton b1(B1_PushButton_PIN_D9);
EasyButton b2(B2_PushButton_PIN_D10);
EasyButton b3(B3_PushButton_PIN_D11);
DHT dht(D_DHT11_DOUT_PIN_D2, DHT11);
// System variables
bool normal_mode = true;
int temp_max = 35;
int hum_max = 50;
String focus = "nothing";
void setup(void)
{
// put your setup code here, to run once:
pinMode(D_DHT11_DOUT_PIN_D2, INPUT_PULLUP);
pinMode(B1_PushButton_PIN_D9, INPUT_PULLUP);
pinMode(B2_PushButton_PIN_D10, INPUT_PULLUP);
pinMode(B3_PushButton_PIN_D11, INPUT_PULLUP);
pinMode(L_LCD1602_RS_PIN_D3, OUTPUT);
pinMode(L_LCD1602_E_PIN_D4, OUTPUT);
pinMode(L_LCD1602_D4_PIN_D5, OUTPUT);
pinMode(L_LCD1602_D5_PIN_D6, OUTPUT);
pinMode(L_LCD1602_D6_PIN_D7, OUTPUT);
pinMode(L_LCD1602_D7_PIN_D8, OUTPUT);
pinMode(LED_LED_PIN_D12, OUTPUT);
pinMode(B_ActiveBuzzer_output_PIN_D13, OUTPUT);
lcd.begin(16, 2);
b1.begin();
b2.begin();
b3.begin();
dht.begin();
// Set initial values
temp_max = 35;
hum_max = 50;
normal_mode = true;
focus = "nothing";
}
void loop(void)
{
// put your main code here, to run repeatedly:
// SYSTEM REQUIREMENT 2
if (normal_mode)
{
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(humidity);
lcd.print("%");
// Check if temperature exceeds temp_max
if (temperature > temp_max || humidity > hum_max)
{
digitalWrite(LED_LED_PIN_D12, HIGH);
digitalWrite(B_ActiveBuzzer_output_PIN_D13, HIGH);
}
else
{
digitalWrite(LED_LED_PIN_D12, LOW);
digitalWrite(B_ActiveBuzzer_output_PIN_D13, LOW);
}
}
// Read buttons
b1.read();
b2.read();
b3.read();
// SYSTEM REQUIREMENT 3
if (normal_mode && b1.wasPressed())
{
normal_mode = false;
focus = "temp";
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp Max: ");
lcd.print(temp_max);
lcd.print("C");
}
// SYSTEM REQUIREMENT 4
else if (!normal_mode && focus == "temp" && b1.wasPressed())
{
focus = "hum";
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hum Max: ");
lcd.print(hum_max);
lcd.print("%");
}
// SYSTEM REQUIREMENT 5
else if (!normal_mode && focus == "hum" && b1.wasPressed())
{
focus = "nothing";
normal_mode = true;
lcd.clear();
}
// SYSTEM REQUIREMENT 6
if (!normal_mode && focus == "temp" && b2.wasPressed())
{
temp_max++;
lcd.setCursor(10, 0);
lcd.print(temp_max);
lcd.print("C");
}
// SYSTEM REQUIREMENT 7
if (!normal_mode && focus == "temp" && b3.wasPressed())
{
temp_max--;
lcd.setCursor(10, 0);
lcd.print(temp_max);
lcd.print("C");
}
// SYSTEM REQUIREMENT 8
if (!normal_mode && focus == "hum" && b2.wasPressed())
{
hum_max++;
lcd.setCursor(9, 0);
lcd.print(hum_max);
lcd.print("%");
}
// SYSTEM REQUIREMENT 9
if (!normal_mode && focus == "hum" && b3.wasPressed())
{
hum_max--;
lcd.setCursor(9, 0);
lcd.print(hum_max);
lcd.print("%");
}
}