یه برنامه نوشتم که داده سنسور دما DHT رو دریافت کنه و روی نمایشگر نشان بده، همچنین اگه دما از یه حدی بالاتر رفت فن رو روشن کنه و اگه از یه حدی پایینتر رفت هیتر رو روشن کنه اما مسئله اینجاست که این دوتا دمای خاص رو چطور میشه با استفاده از دکمه های فشاری تغییر داد مثلا برای زمستان یک دما تعریف بشه برای تابستان یک دما به طور کلی یک منو تنظیمات ساخت که بشه یک سری از پارامتر هارو تغییر داد.
#include <dht.h>
#define dht22Pin 3 // Defines pin number to which the sensor is connected
dht DHT; // Creats a DHT object
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(-1);
int RelayFanPin = 4;
int RelayHeaterPin = 5;
void setup()
{
Serial.begin(9600);
// initialize with the I2C addr 0x3C
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
// Clear the buffer.
display.clearDisplay();
// Set RelayPin as an output pin
pinMode(RelayFanPin, OUTPUT);
pinMode(RelayHeaterPin, OUTPUT);
}
void loop()
{
//Uncomment whatever type you're using!
int readData22 = DHT.read22(dht22Pin); // DHT22/AM2302
float t22 = DHT.temperature; // Gets the values of the temperature
float h22 = DHT.humidity; // Gets the values of the humidity
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("T2: ");
display.println(t22, 2);
display.print("H2: ");
display.println(h22, 2);
display.display();
display.clearDisplay();
delay(2000); // Delays 2 secods
// Let's turn on the relay...
if (t22>30)
{digitalWrite(RelayFanPin, LOW);}
// Let's turn off the relay...
else
{digitalWrite(RelayFanPin, HIGH);};
delay(2000); // Delays 2 secods
if (t22<28)
{digitalWrite(RelayHeaterPin, LOW);}
// Let's turn off the relay...
else
{digitalWrite(RelayHeaterPin, HIGH);};
delay(2000); // Delays 2 secods
}