Код: Выделить всё
#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_PIN 13 // номер пина для 1-wire линии
#define fadePin 5 //пин управления MOSFET транзистором
OneWire ds(ONE_WIRE_PIN); // создаем объект ds для работы с датчиком
DallasTemperature sensors(&ds); // передаем ссылку на ds в объект sensors, через который будем управлять датчиком
int pirPin = 12; //пин подключения управляющего сигнала PIR датчика
int light; //переменная для хранения состояния света (вкл/выкл)
int rainSensor = A0;
int rainLED = 14;
int dryLED = 4;
int sensorVal;
int sensortrigger = 250;
const char* ssid = "****"; //Название сети
const char* password = "*****"; //пароль
WiFiClient espClient; //инициализация WiFi клиента
void setup(){
Serial.begin(9600);
Serial.println("DS18B20");
WiFi.begin(ssid, password); //подключаемся к WiFi
pinMode(pirPin, INPUT); //настариваем 12 пин как вход для сигналов с датчика
pinMode(fadePin, OUTPUT);// 5 пин на выход, для управления транзисотором
pinMode(rainSensor, INPUT);
pinMode(rainLED, OUTPUT);
pinMode(dryLED, OUTPUT);
digitalWrite(rainLED, LOW);
digitalWrite(dryLED, LOW);
light = 0; //устанаваливаем переменную для первого включения света
sensors.begin();
}
void loop(){
if(digitalRead(pirPin) == HIGH ) //если сигнал с датчика высокого уровня(т.е. есть движение)
{
if(light == 0) //и если свет не был включен
{
for(int i=0; i<=150; i++) //то плавно включаем свет
{
analogWrite(fadePin, i);
delay(100); //каждые 10мс увелияение на 1
}
light = 1; //и передаем значение переменной, что свет включен
}
}
else //иначе
{
if(light == 1) //если свет включен
{
for(int i=150; i>=0; i--)//плавно гасим его
{
analogWrite(fadePin, i);
delay(100);
}
light = 0; //и передаем значение переменной, что свет выключен
}
}
int sensorVal = analogRead(rainSensor);
Serial.print(sensorVal);
if(sensorVal < sensortrigger){
Serial.println("Water Detected!");
digitalWrite(dryLED, LOW);
digitalWrite(rainLED, HIGH);
}
else {
Serial.println("No Water Detected!");
digitalWrite(rainLED, LOW);
digitalWrite(dryLED, HIGH);
}
delay(750);
Serial.print(" Requesting temperatures...");
sensors.requestTemperatures(); // запрос на получение данных
Serial.println("DONE");
Serial.print("Temperature for Device 1 is: ");
Serial.print(sensors.getTempCByIndex(0)); // получаем температуру и печатаем
}