Модератор: Alex
-
serghei
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
-
Благодарил (а):
303 раза
-
Поблагодарили:
282 раза
Сообщение
serghei » Пт июл 13, 2018 10:35 am
Попробуй вставить свой код в AMS. Общий принцип прост - в скетче заменяем
на подобное
Вместо алгоритма любое название по смыслу. И так же вместо Ioop
Соответственно на первой вкладке
Код: Выделить всё
#ifdef NRF24_FEATURE
nrf24Init();
#endif
initAlgoritm(); // запускается setup
abstractInit();
printInitDone();
} // setup()
И так же для Loop
Код: Выделить всё
#ifdef NRF24_FEATURE
nrf24Works();
#endif
workAlgoritm(); // запускается loop
abstractWorks();
endLoopWorks();
} // modeWork
} // loop()
Дальше в IDE добавляешь новую вкладку , называешь ralgoritm , и копируешь в неё свой код.Только надо убрать всё что связано с WiFi . компа под рукой нет - проверить не могу ((.
PS Посмотри как
ser009 дописал вкладку Авторегулирования.
Где то здесь. ))
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
sarstab
- Сообщения: 66
- Зарегистрирован: Ср апр 26, 2017 10:21 pm
-
Благодарил (а):
19 раз
-
Поблагодарили:
1 раз
Сообщение
sarstab » Пт июл 13, 2018 10:52 am
ну да я понял по другим вкладка что надо так делать толь не знаю правильно или нет
Код: Выделить всё
#ifdef Ledstrip_FEATURE
#define fadePin 5
int light;
void LedstripInit() {
pinMode(fadePin, OUTPUT);
digitalWrite(fadePin, LOW);
light = 0;
}
//modulLedstrip = MODUL_ENABLE;
//started("Ledstrip");
void LedstripWorks() {
if (light == 0) {
analogWrite(fadePin, HIGH);light = 1;
} else {
if(light == 1)
digitalWrite(fadePin, LOW);light = 0;
}
}
#endif // Ledstrip_FEATURE
-
sarstab
- Сообщения: 66
- Зарегистрирован: Ср апр 26, 2017 10:21 pm
-
Благодарил (а):
19 раз
-
Поблагодарили:
1 раз
Сообщение
sarstab » Пт июл 13, 2018 10:55 am
ну допустим этот вкладка у меня правильная ,как эту вкладку подключить к пир датчику
-
serghei
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
-
Благодарил (а):
303 раза
-
Поблагодарили:
282 раза
Сообщение
serghei » Пт июл 13, 2018 11:09 am
Так по идее внутри этой вкладки все задано
Код: Выделить всё
void ravtoregWork(){
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)); // получаем температуру и печатаем
}
На работе скомпилить не могу. Если код компилится - то по идее и работать должен. Как состояние передать в МД - тут надо придумать имя переменной light . Сам тяжело разбираюсь в программировании ((.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
sarstab
- Сообщения: 66
- Зарегистрирован: Ср апр 26, 2017 10:21 pm
-
Благодарил (а):
19 раз
-
Поблагодарили:
1 раз
Сообщение
sarstab » Пт июл 13, 2018 11:49 am
вот что пишит IDE
Код: Выделить всё
Ledstrip:14: error: 'modulLedstrip' does not name a type
pirs.ino: In function 'void pirsWorks()':
pirs.ino:136:19: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
pirs.ino:139:32: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
pirs.ino:150:23: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
pirs.ino:153:31: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtemp.ino: In function 'void getTemperature(byte)':
rtemp.ino:124:83: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
rtemp.ino:128:84: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
когда я раскоментировал у себя во вкладке
Код: Выделить всё
modulLedstrip = MODUL_ENABLE;
started("Ledstrip");
-
serghei
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
-
Благодарил (а):
303 раза
-
Поблагодарили:
282 раза
Сообщение
serghei » Пт июл 13, 2018 12:04 pm
Надо дописать в модулях системы
На ворнинги не смотри. Вообще оптимальный вариант для компиляции - использовать драйвера 2.4.0 - r1. Скорость возрастет вывода на страницу. Но это после отладки.
-
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
sarstab
- Сообщения: 66
- Зарегистрирован: Ср апр 26, 2017 10:21 pm
-
Благодарил (а):
19 раз
-
Поблагодарили:
1 раз
Сообщение
sarstab » Пт июл 13, 2018 12:10 pm
на вкладке ажакс так и дописал эфект тотже
-
serghei
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
-
Благодарил (а):
303 раза
-
Поблагодарили:
282 раза
Сообщение
serghei » Пт июл 13, 2018 12:29 pm
Не , на первой вкладке , где все модули системы.
Код: Выделить всё
// modules
#define MODUL_DISABLE 0
#define MODUL_ENABLE 1
#define MODUL_NOT_COMPILLED 2
byte modulRtc = MODUL_NOT_COMPILLED;
byte modulNtp = MODUL_NOT_COMPILLED;
byte modulSend = MODUL_NOT_COMPILLED;
byte modulMajor = MODUL_NOT_COMPILLED;
=======
А вообще хорошая тема. У меня на DUE 6 пиров и 5 реле. Со страницы все управляется и отображается. Есть вкладка авторегулирования для одного реле по времени, в ручную , а вот по датчику не получается. Если срабатывает условие - реле переключается в другое состояние и тут же возвращается в исходное состояние. Так и не победил.
В идеале хочется какой то код для привязки датчиков к реле. Иначе даже тупую вытяжку не сделать - если влажность превысила порог - включи вентилятор.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
eGorka
- Сообщения: 182
- Зарегистрирован: Чт ноя 24, 2016 10:47 am
-
Благодарил (а):
5 раз
-
Поблагодарили:
25 раз
Сообщение
eGorka » Пт июл 13, 2018 9:34 pm
serghei писал(а):В идеале хочется какой то код для привязки датчиков к реле. Иначе даже тупую вытяжку не сделать - если влажность превысила порог - включи вентилятор.
Код: Выделить всё
void vitagka(){ // функцию добавляем в loop (твой код есть только для 32)
if(hum > 60) { digitalWrite(27, HIGH); } // если влажность выше 60% включаем реле сидящее на gpio27
if(hum < 50) { digitalWrite(27, LOW); } // если влажность ниже 50% выключаем
}
Или надо совсем изощрённо-извращённо?
-
serghei
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
-
Благодарил (а):
303 раза
-
Поблагодарили:
282 раза
Сообщение
serghei » Пт июл 13, 2018 10:05 pm
eGorka писал(а): ↑Пт июл 13, 2018 9:34 pm
Или надо совсем изощрённо-извращённо?
Таки да и уже есть , но не работает
.
ser009 предоставил код , работает со страницы. Выбор срабатывания реле по времени , вручную по нажатию на экран. А вот по условию влажности не хочет. Выставляю верхнею и нижнею границы. Запоминаю. При превышению значения реле начинает бешено переключаться.
Код: Выделить всё
/*
Modul Algoritm
part of Arduino Mega Server project
*/
/* значение по которому ведется регулирование
* в примере это значени будет задаваться вручную с web
*/
//int value1 = 5 сек;
// mode режим
// 0 - ручной
// 1 - по значению датчика
// 2 - по времени
// 3 - not defined and not contXstatus
byte rele1mode = 0;
/* значения максимальных и минимальых значений для включения
* и выключения RELE1
*/
int value_on = 0;
int value_off = 100;
int value_web = 0;
/* время включения по умолчанию /часы, минуты/
* при необходимости можно добавить секунды
*/
int r1hour_on = 19; int r1minute_on = 00;
int r1hour_off = 19; int r1minute_off = 15;
void Regul(){
if (rele1state == 0&&rele1mode == 0&&value_web == 1){
rele1state = 1;
MessText = "Выход D32. Включение с Веб";
MessLoger(String (MessText), String (Info));
#ifdef SERIAL_PRINT
Serial.println("Out D32. command ON to Web");
#endif
} else{};
if (rele1state == 1&&rele1mode == 0&&value_web == 0){
rele1state = 0;
MessText = "Выход D32. Отключение с Веб";
MessLoger(String (MessText), String (Info));
#ifdef SERIAL_PRINT
Serial.println("Out D32. command ON to Web");
#endif
} else{};
if (rele1state == 0&&rele1mode == 2&&r1hour_on == int (hour())&&r1minute_on == int (minute())){
rele1state = 1;
MessText = "Выход D32. Включение по времени";
MessLoger(String (MessText), String (Info));
#ifdef SERIAL_PRINT
Serial.println("Out D32. command ON to time");
#endif
} else{};
if (rele1state == 1&&rele1mode == 2&&r1hour_off == int (hour())&&r1minute_off == int (minute())){
rele1state = 0;
MessText = "Выход D32. Отключение по времени";
MessLoger(String (MessText), String (Info));
#ifdef SERIAL_PRINT
Serial.println("Out D32. command OFF to time");
#endif
} else {};
/*
if (rele1state == 0&&rele1mode == 1&&value_on >= dht11_h){
rele1state = 1;
MessText = "Выход D32. Включение по датчику влажности";
MessLoger(String (MessText), String (Info));
#ifdef SERIAL_PRINT
Serial.println("Out D32. command ON to HUM ");
#endif
}else {};
if (rele1state == 1&&rele1mode == 1&&value_off < dht11_h){
rele1state = 0;
MessText = "Выход D32. Отключение по датчику влажности";
MessLoger(String (MessText), String (Info));
#ifdef SERIAL_PRINT
Serial.println("Out D32. command OFF to HUM ");
#endif
} else {};
*/
//--------------------------------------------
/*
if (rele1state == 0&&rele1mode == 1&&value_on >= dht11_h){
// if (rele1mode == 1&&value_on >= dht11_h){
rele1state = 1;
MessText = "Выход D32. Включение по датчику влажности";
MessLoger(String (MessText), String (Info));
#ifdef SERIAL_PRINT
Serial.println("Out D32. command ON to HUM ");
#endif
} // if
else if (rele1state == 1&&rele1mode == 1&&value_off <= dht11_h){
// else if (rele1mode == 1&&value_off <= dht11_h){
rele1state = 0;
MessText = "Выход D32. Отключение по датчику влажности";
MessLoger(String (MessText), String (Info));
#ifdef SERIAL_PRINT
Serial.println("Out D32. command OFF to HUM ");
#endif
} // else if
*/
} // void regul
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS