/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
modified on 8 Nov 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
*/
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#include "DHTesp.h"
Servo myservo; // create servo object to control a servo
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
const int DHT_PIN = 10;
DHTesp dhtSensor;
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
const int LED_PIN = 11;
void setup()
{
Serial.begin(115200);
LCD.init();
LCD.backlight();
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
pinMode(LED_PIN, OUTPUT); // Налаштовуємо пін для світлодіода як вихід
}
void loop()
{
TempAndHumidity data = dhtSensor.getTempAndHumidity();
LCD.setCursor(0, 0);
LCD.print("Temper:" + String(data.temperature, 1) + "°C");
LCD.setCursor(0, 1);
LCD.print("Humidity: " + String(data.humidity, 2) + "%");
if((int)data.temperature == 15)
{
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 180, 1023, 0, 0); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val);
digitalWrite(LED_PIN, HIGH); // sets the servo position according to the scaled value
delay(2000); // waits for the servo to get there
}
if((int)data.temperature == 25)
{
myservo.write(180);
digitalWrite(LED_PIN, HIGH);
}
else
{
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
digitalWrite(LED_PIN, LOW);
}
}