#include <OPC.h>
#include <Bridge.h>
#include <Ethernet.h>
#include <SPI.h>
#include "DHT.h"
//-----------------------------------------------------------------------------------------------------------------------------
//Датчик DHT11
#define DHTPIN 2 //Номер входу, до якого підключений датчик DHT11
DHT dht(DHTPIN, DHT11); //Ініціалізація датчика
//-----------------------------------------------------------------------------------------------------------------------------
#define pin_D2 2
#define pin_D4 4
#define pin_D5 5
#define pin_D6 6
#define pin_D7 7
#define pin_D8 8
#define pin_D10 10
#define pin_D11 11
#define pin_D12 12
#define pin_D13 13
OPCSerial aOPCSerial;
//------------------------------------------------------------------------------------------------------------------------------
// PWM
int D9 = 9;
int D3 = 3;
int buf = 0;
int buf1 = 0;
float t = 0;
float h = 0;
//------------------------------------------------------------------------------------------------------------------------------
// Робота з віртуальними змінними
byte TemperatureDHT111(const char *itemID, const opcOperation opcOP, const byte value) {
float t = dht.readTemperature(); //Измеряем температуру
return t;
}
//--------------------------------------------------------------------------------------------
byte HumidityDHT111(const char *itemID, const opcOperation opcOP, const byte value) {
float h = dht.readHumidity(); //Измеряем влажность
return h;
}
//--------------------------------------------------------------------------------------------
byte VirtualTemperature1(const char *itemID, const opcOperation opcOP, const byte value) {
return random(25, 29);
}
//------------------------------------------------------------------------------------------------------------------------------
int D9_Item(const char *itemID, const opcOperation opcOP, const int value) {
if (opcOP == opc_opwrite) {
analogWrite(D9, value);
buf = value;
}
return buf;
}
//------------------------------------------------------------------------------------------------------------------------------
int D3_Item(const char *itemID, const opcOperation opcOP, const int value) {
if (opcOP == opc_opwrite) {
analogWrite(D3, value);
buf1 = value;
}
return buf1;
}
//------------------------------------------------------------------------------------------------------------------------------
bool func_D2(const char *itemID, const opcOperation opcOP, const bool value) {
static bool ledValue_D2 = false;
if (opcOP == opc_opwrite) {
ledValue_D2 = value;
if (ledValue_D2)
digitalWrite(pin_D2, LOW);
else
digitalWrite(pin_D2, HIGH);
}
else
return ledValue_D2;
}
//------------------------------------------------------------------------------------------------------------------------------
bool func_D4(const char *itemID, const opcOperation opcOP, const bool value) {
static bool ledValue_D4 = false;
if (opcOP == opc_opwrite) {
ledValue_D4 = value;
if (ledValue_D4)
digitalWrite(pin_D4, HIGH);
else
digitalWrite(pin_D4, LOW);
}
else
return ledValue_D4;
}
//------------------------------------------------------------------------------------------------------------------------------
bool func_D5(const char *itemID, const opcOperation opcOP, const bool value) {
static bool ledValue_D5 = false;
if (opcOP == opc_opwrite) {
ledValue_D5 = value;
if (ledValue_D5)
digitalWrite(pin_D5, HIGH);
else
digitalWrite(pin_D5, LOW);
}
else
return ledValue_D5;
}
//------------------------------------------------------------------------------------------------------------------------------
bool func_D6(const char *itemID, const opcOperation opcOP, const bool value) {
static bool ledValue_D6 = false;
if (opcOP == opc_opwrite) {
ledValue_D6 = value;
if (ledValue_D6)
digitalWrite(pin_D6, HIGH);
else
digitalWrite(pin_D6, LOW);
}
else
return ledValue_D6;
}
//------------------------------------------------------------------------------------------------------------------------------
bool func_D7(const char *itemID, const opcOperation opcOP, const bool value) {
static bool ledValue_D7 = false;
if (opcOP == opc_opwrite) {
ledValue_D7 = value;
if (ledValue_D7)
digitalWrite(pin_D7, HIGH);
else
digitalWrite(pin_D7, LOW);
}
else
return ledValue_D7;
}
//------------------------------------------------------------------------------------------------------------------------------
bool func_D8(const char *itemID, const opcOperation opcOP, const bool value) {
static bool ledValue_D8 = false;
if (opcOP == opc_opwrite) {
ledValue_D8 = value;
if (ledValue_D8)
digitalWrite(pin_D8, LOW);
else
digitalWrite(pin_D8, HIGH);
}
else
return ledValue_D8;
}
//------------------------------------------------------------------------------------------------------------------------------
bool func_D10(const char *itemID, const opcOperation opcOP, const bool value) {
static bool ledValue_D10 = false;
if (opcOP == opc_opwrite) {
ledValue_D10 = value;
if (ledValue_D10)
digitalWrite(pin_D10, HIGH);
else
digitalWrite(pin_D10, LOW);
}
else
return ledValue_D10;
}
//------------------------------------------------------------------------------------------------------------------------------
bool func_D11(const char *itemID, const opcOperation opcOP, const bool value) {
static bool ledValue_D11 = false;
if (opcOP == opc_opwrite) {
ledValue_D11 = value;
if (ledValue_D11)
digitalWrite(pin_D11, HIGH);
else
digitalWrite(pin_D11, LOW);
}
else
return ledValue_D11;
}
//------------------------------------------------------------------------------------------------------------------------------
bool func_D12(const char *itemID, const opcOperation opcOP, const bool value) {
static bool ledValue_D12 = false;
if (opcOP == opc_opwrite) {
ledValue_D12 = value;
if (ledValue_D12)
digitalWrite(pin_D12, HIGH);
else
digitalWrite(pin_D12, LOW);
}
else
return ledValue_D12;
}
//------------------------------------------------------------------------------------------------------------------------------
bool func_D13(const char *itemID, const opcOperation opcOP, const bool value) {
static bool ledValue_D13 = false;
if (opcOP == opc_opwrite) {
ledValue_D13 = value;
if (ledValue_D13)
digitalWrite(pin_D13, HIGH);
else
digitalWrite(pin_D13, LOW);
}
else
return ledValue_D13;
}
//--------------------------
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(pin_D2, INPUT);
pinMode(3, OUTPUT);
pinMode(pin_D4, OUTPUT);
pinMode(pin_D5, OUTPUT);
pinMode(pin_D6, OUTPUT);
pinMode(pin_D7, OUTPUT);
pinMode(pin_D8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(pin_D10, OUTPUT);
pinMode(pin_D11, OUTPUT);
pinMode(pin_D12, OUTPUT);
pinMode(pin_D13, OUTPUT);
aOPCSerial.setup();
//объявление переменных
aOPCSerial.addItem("D2", opc_readwrite, opc_bool, func_D2);
aOPCSerial.addItem("D4", opc_readwrite, opc_bool, func_D4);
aOPCSerial.addItem("D5", opc_readwrite, opc_bool, func_D5);
aOPCSerial.addItem("D6", opc_readwrite, opc_bool, func_D6);
aOPCSerial.addItem("D7", opc_readwrite, opc_bool, func_D7);
aOPCSerial.addItem("D8", opc_readwrite, opc_bool, func_D8);
aOPCSerial.addItem("D10", opc_readwrite, opc_bool, func_D10);
aOPCSerial.addItem("D11", opc_readwrite, opc_bool, func_D11);
aOPCSerial.addItem("D12", opc_readwrite, opc_bool, func_D12);
aOPCSerial.addItem("D13", opc_readwrite, opc_bool, func_D13);
aOPCSerial.addItem("D9", opc_readwrite, opc_int, D9_Item);
aOPCSerial.addItem("D3", opc_readwrite, opc_int, D3_Item);
aOPCSerial.addItem("TemperatureDHT111", opc_readwrite, opc_byte, TemperatureDHT111);
aOPCSerial.addItem("HumidityDHT111", opc_readwrite, opc_byte, HumidityDHT111);
aOPCSerial.addItem("VirtualTemperature1", opc_readwrite, opc_byte, VirtualTemperature1);
}
void loop() {
aOPCSerial.processOPCCommands();
}