Нужено написать скетч

GKV
Offline
Зарегистрирован: 01.10.2013

Приветсвую всех.Нужно написать новый скет или отрихтовать мой.Могу выслать схему в Splan7 и задание на эл.почту.Устройство собрано,скетч работает неправильно.Недорого.Устройство для себя не на продажу

sadman41
Offline
Зарегистрирован: 19.10.2016

Тема, бюджет -> wrk.sadman@gmail.com

GKV
Offline
Зарегистрирован: 01.10.2013

Сколько?

GKV
Offline
Зарегистрирован: 01.10.2013

 Схема

fridgetester
fridgetester аватар
Offline
Зарегистрирован: 09.02.2019

Предлагаю свои услуги fridgetester@mail.ru

GKV
Offline
Зарегистрирован: 01.10.2013

Фото устройства

b707
Offline
Зарегистрирован: 26.05.2017

"недорого" ???

Надеюсь вы не рассчитываете получить код под подобную схему за 300 рублей?

 

GKV
Offline
Зарегистрирован: 01.10.2013

Нужно исправление скетча и все.

b707
Offline
Зарегистрирован: 26.05.2017

GKV пишет:

Нужно исправление скетча и все.

и вы уверены. что это будет дешевле, чем написать новый? :)

GKV
Offline
Зарегистрирован: 01.10.2013

Схема не нужна,только исправить мой код.

GKV
Offline
Зарегистрирован: 01.10.2013

b707 пишет:

GKV пишет:

Нужно исправление скетча и все.

и вы уверены. что это будет дешевле, чем написать новый? :)

Если вы посмотрите на первое сообщение,то там написано,что можно новый

GKV
Offline
Зарегистрирован: 01.10.2013

Бюджет 1000р

b707
Offline
Зарегистрирован: 26.05.2017

GKV пишет:

Бюджет 1000р

до свиданья

GKV
Offline
Зарегистрирован: 01.10.2013

Кто готов взяться :моя почта  grkonstantin93@gmail.com. Техзадание есть,сложость средняя -5ть таймеров обратного отсчета с millis

-NMi-
Offline
Зарегистрирован: 20.08.2018

ТС - закинь сюда (или ссылка) схему в нормальном разрешении и логику работы автоматики. Мошт что универсальное можно будет сделать или придумать.

GKV
Offline
Зарегистрирован: 01.10.2013

GKV
Offline
Зарегистрирован: 01.10.2013

Последняя редакция схемы.

GKV
Offline
Зарегистрирован: 01.10.2013

GKV
Offline
Зарегистрирован: 01.10.2013

Мой кривой скетч,дошел до розжига колонки.До розжига вроде работает как надо.На розжиге с тремя попытками завис -это для меня пока сложно.

#include <LiquidCrystal_I2C.h> 
LiquidCrystal_I2C lcd(0x27,20,4); 

volatile int flow_frequency; // Measures flow meter pulses
unsigned int  l_hour;
unsigned int  l_min;  
unsigned char flowmeter = 2; // Flow Meter Pin number
unsigned long currentTime;
unsigned long cloopTime;
 
void flow () // Interruot function
{ 
flow_frequency++;
} 
#define in1 3 //LOW
const byte in2 = 4;  //HIGH
#define in3 5  //LOW
#define led_in1 6 //входной сигнал светодиод 1
#define led_in2 7 //входной сигнал светодиод 2
#define led_in3 17 //работа  gas светодиод 3
#define alarm_1 9  //откл насосов
#define alarm_2 10 //off nasos and power
#define power_nasos 12 //реле насоса
#define power_vent 16 
#define power_gas 15 
#define power_klapan 8
#define ton 11

byte valA; //переменная времени 
byte flagA;
long previousMillisA = 0;
int a;

byte valB; //переменная времени 
byte flagB;
long previousMillisB = 0;
int b;


byte valC; //переменная времени 
byte flagC;
long previousMillisC = 0;
int c;

long previousMillisE = 0;
int valE = 0;
int flagE=0;
int counterE=0;
int prevValueE=0;


int d;
byte valD; //переменная времени 
byte flagD;
long previousMillisD = 0;

const int analogPin = A0;    // аналоговый вывод для потенциометра
 int ledPin = 13;       // цифровой вывод для светодиода
const int threshold =200;   // произвольный порог для показаний потенциометра
 int porog = 0;
 int POROG_1 = 0;
long previousMillis = 0; 
int val = 0; 

void setup() {
   lcd.begin();
   Serial.begin(9600);
   pinMode(flowmeter, INPUT);
 
  attachInterrupt(0, flow, RISING);
  sei(); // Enable interrupts 
currentTime = millis();
cloopTime = currentTime;   
   pinMode(in1, INPUT);//вход с датчика протока
   pinMode(in2, INPUT);//вход с термостата +5в
   pinMode(in3, INPUT);//вход с газ.колонки
   
   pinMode(led_in1, OUTPUT);//блокировка котла и насосов
   pinMode(led_in2, OUTPUT);//вход с sonoff нагрев
   pinMode(led_in3, OUTPUT);
   pinMode(alarm_1, OUTPUT);
   pinMode(alarm_2, OUTPUT);
   pinMode(power_nasos, OUTPUT);
   pinMode(power_vent, OUTPUT); 
   pinMode(power_gas, OUTPUT);
   pinMode(power_klapan, OUTPUT);
   pinMode(ton, OUTPUT);   
   pinMode(ledPin, OUTPUT); 
   
     lcd.setCursor(0, 0); 
      lcd.print("P:>"); 
      lcd.setCursor(5, 0); 
      lcd.print("T1>");
      lcd.setCursor(11, 0); 
      lcd.print("T2>");  
      lcd.setCursor(0, 1); 
       lcd.print("SPEED L/min:>");
 lcd.setCursor(4, 2); 
 lcd.print("NASOS  ");
 lcd.setCursor(0, 3); 
 lcd.print("COUNT>  ");
 lcd.setCursor(8, 3); 
 lcd.print("T4  ");
   
}
void loop(){
 int analogValue = analogRead(analogPin);
 POROG_1= analogValue / threshold;
 porog = (l_hour*POROG_1 )/10 ;  
  
  currentTime = millis();
if(currentTime >= (cloopTime + 1000))
{ 
cloopTime = currentTime; // Updates cloopTime
l_hour = (flow_frequency * 60 / 7.5);
l_min = (flow_frequency / 7.5);
//Serial.println(flow_frequency);
//Serial.println(l_min);
lcd.setCursor(3, 0); 
lcd.print(POROG_1);


lcd.setCursor(13, 1); 
lcd.print(l_min );
if (l_min <100)
{
  lcd.setCursor(15, 1); 
  lcd.print(" " );
}
if (l_min <10)
{
  lcd.setCursor(14, 1); 
  lcd.print(" " );
}
flow_frequency = 0; // Обнулить счётчик
}
//**************************** Time_1 and NASOS**********    
  if(digitalRead(in1)==LOW)
  {
    digitalWrite(led_in1,HIGH);//светодиод ин1
  }else{
   digitalWrite(led_in1,LOW); 
  }
//***********************************************************
  if(digitalRead(in2)==LOW)//если уровень низкий.Работаем тут
   {
  if(digitalRead(in1)==LOW)
  {
    flagA=1;
   
    digitalWrite(power_nasos,HIGH); 
    a=10;
    c=6;
    valC=0;
    
  }
  if(flagA==1)
  {
   lcd.setCursor(8, 0); 
   lcd.print(valA);
    if (millis() -previousMillisA >1000) 
    { 
      previousMillisA = millis();     
      valA++;     
   
      
       if(valA<10)
{
  lcd.setCursor(9, 0); 
  lcd.print(" ");    
  }    
    } 
  } 
  if(valA>=10&&porog<50)
  { 
   previousMillisA = millis(); 
    digitalWrite(power_nasos,LOW);
    digitalWrite(alarm_1,HIGH);
    
  }
  if(digitalRead(in1)==HIGH)//если кнопка не нажата ... 
  { 
    flagA=0;
    digitalWrite(power_nasos,LOW); //выключаем ledPin1 
    digitalWrite(alarm_1,LOW);     
    valA=0;//обнуляем переменную
    //c=6;
   // valC=0;
 
  }
     
//*******************NORM_work_1***************
if(porog>=50&&digitalRead(in1)==LOW)
{
flagA=1;
valA=0;
   
 }
   }        

//***********************Time_2 signal sonoff**********
  if(digitalRead(in2)==HIGH)//ЕСЛИ ВЫСОКИЙ, РАБОТАЕМ ТУТ
 {
    flagB=1;
    digitalWrite(led_in2,HIGH);
    
  }
  if(flagB==1)
  {
    lcd.setCursor(14, 0); 
    lcd.print(valB);
    
    if (millis() -previousMillisB >1000) 
    { 
      previousMillisB = millis();     
      valB++;     
     
      //digitalWrite(power_nasos,HIGH);     
     if(valB<10)
   {
  lcd.setCursor(15, 0); 
  lcd.print(" ");    
      }    
    }
  }
  if(valB>=5&&porog<50)
  { 
   previousMillisB = millis(); 
   // digitalWrite(power_nasos,LOW);
    digitalWrite(alarm_2,HIGH);
    flagB=0;
  }
    
 if(porog>=50&&digitalRead(in2)==HIGH)
{
//flagB=1;
valB=0;
} 
if(digitalRead(in2)==LOW)//если кнопка не нажата ... 
  { 
    flagB=0;
    digitalWrite(alarm_2,LOW);
    digitalWrite(led_in2,LOW);  
    valB=0;//обнуляем переменную
  }
  
//*******************NASOS_work***************

  if(flagB==1)
{
   
    lcd.setCursor(10, 2); 
    lcd.print("(ON)");
    previousMillisC = millis();
    flagC=1;
    valC=0;
    c=6;
  }
  if(flagC==1)
  {
    digitalWrite(power_nasos,HIGH);
    digitalWrite(power_klapan,HIGH);
      
    lcd.setCursor(14, 2); 
    lcd.print(c);
    
  }
  if(flagC==1&&digitalRead(in2)==LOW)
  {

    if (millis() -previousMillisC >1000)
    { 
      previousMillisC = millis();     
      valC++;     
      c--;
     
       if(c<10)
      {
      lcd.setCursor(15, 2); 
      lcd.print(" ");
      } 
    }  
  }
  if(valC>=6&&digitalRead(in1)==HIGH||digitalRead(alarm_2)==HIGH) //кол-во секунд ,при достижении этого значения , ledPin3 выключается
  { 
    digitalWrite(power_nasos,LOW);
    digitalWrite(power_klapan,LOW);   
    flagC=0;
    c=0;
    lcd.setCursor(10, 2); 
    lcd.print("(OFF)");
    
  }
/* 
//**************Ton*****************
if(digitalRead(alarm_2) == HIGH)   //если кнопка нажата ... 
  { 
    if (millis()-previousMillis > 1000)    
    { 
      previousMillis = millis();     
      val++;
      
    } 
  } 
  else 
  { 
    val=0; 
  } 
  if(val>=2) 
  { 
   digitalWrite(ton,!digitalRead(ton));    //инвертируем состояние пина 
    val=0; 
  }
if(digitalRead(alarm_2)==LOW)
{
  digitalWrite(ton,LOW);
  }
*/
//**************розжиг Г.К************************** 
boolean bs = digitalRead (in2);
if(bs==HIGH&&prevValueE==0)
{
 prevValueE=1;
  counterE++;
  flagE=1;
  lcd.setCursor(6, 3);
 lcd.print(counterE);
 
 if(millis() -previousMillisE >500)
    {
      previousMillisE = millis();
      valE++;
    }   
    }   
    else
    {    
      valE=0;
    }
    if(valE >=5)
    {
      digitalWrite(15,!digitalRead(15));    
      valE=0;      
    }
          
if(counterE==3)
{
 digitalWrite(15,LOW);
// digitalWrite(alarm_2,HIGH);
//counterE=0;
flagE=0;
}  
  if(bs == LOW) 
 {
  prevValueE=0;
  counterE=0;
  flagE=0;
  digitalWrite(15,LOW);
}

 delay(10); 
}

 

GKV
Offline
Зарегистрирован: 01.10.2013

-NMi- пишет:

ТС - закинь сюда (или ссылка) схему в нормальном разрешении и логику работы автоматики. Мошт что универсальное можно будет сделать или придумать.

закинул.Двое взялись,один спустя два дня пропал.Второй мучил с первым режимом с 3-го числа,так и не сделал.

-NMi-
Offline
Зарегистрирован: 20.08.2018

GKV пишет:

Мой кривой скетч,дошел до розжига колонки.

Да кто-ж так пишет-то? Линейный код))))))

ТУта нужно всё на сегменты разбивать и связывать межсегментную логику между собой))))

Схемы есть в НОРМАЛЬНОМ САПРе??? PR, например???   Отлаживать-то как-то нужно БЕЗ макета хотя-бы на этапе проектирования "скелета" логики программы???

-NMi-
Offline
Зарегистрирован: 20.08.2018

GKV пишет:

закинул.Двое взялись,один спустя два дня пропал.Второй мучил с первым режимом с 3-го числа,так и не сделал.

Вот в ЭТОМ вот я совсем не сомневался. Сказать А может любой, а вот дальше продолжить может уже не каждый!!!

GKV
Offline
Зарегистрирован: 01.10.2013

Цель проекта-удешевить/исключить дорогостоящий бойлер косвенного нагрева стоимостью от 100000р( в проекте используется электроводонагреватель на 100л),а также исключить двухконтурный котел у которого при работе на нагрев ГВС,отопление пофигу. Стоимость вторичного теплообменника котла от 5000р,а газовой колонки целиком 6000р.Схема полностью рабочаяя,сейчас работает на модульных таймерах и релейной автоматике.Проект исключительно для себя и  тем кто не может выложить 140 т.р на бойлер и прочее типа кривого комплекта с трехходовым который на 50% занижает проток и стоит 25000р.В проекте используется китайский полнопроходной клапан с электроприводом.Все материалы проекта я буду публиковать на форуме и консультировать по монтажу(если разрешит админ форума).Кто готов участвовать =присоединяйтесь.

GKV
Offline
Зарегистрирован: 01.10.2013

Из восьми скетчей которые один мне прислал с первым режимом,ни один не заработал правильно.Мой кривой скетч хотя бы в двух режимах работает правильно,в далее я завис.

GKV
Offline
Зарегистрирован: 01.10.2013

Схема есть в splan7. grkonstantin93@gmail.com могу выслать.макет собран.

sadman41
Offline
Зарегистрирован: 19.10.2016

Когда пишут скретчи за 500р и без отладки на железе - результат практически всегда такой - то не запустится, то зависнет.

GKV
Offline
Зарегистрирован: 01.10.2013

так можно минимум железа собрать,например вместо расходомера я прикрутил SG90 и щелевой датчик

sadman41
Offline
Зарегистрирован: 19.10.2016

Можно все - и собрать и написать и две недели отлаживать. Вопрос в мотивации.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

GKV пишет:

Из восьми скетчей которые один мне прислал с первым режимом,ни один не заработал правильно.

А ты за тыщу хотел другого результата? То, что ты написал, править бестолку, только в мусор, нужно все переписывать с нуля, а это минимум три дня(без отладки). Теперь ответь на вопрос, какого уровня специалист согласится работать за 300р в день?  Вот, примерно, такого уровня программу ты и получишь. Что мы и наблюдаем, "скетч был очень похож на настоящий, но не работал".

ПыСы, ты сам-то согласишься на работу за 300р в день?

b707
Offline
Зарегистрирован: 26.05.2017

GKV пишет:

так можно минимум железа собрать,например вместо расходомера я прикрутилевой датчик

Тыщ пять платишь? - тогда можно попробовать

-NMi-
Offline
Зарегистрирован: 20.08.2018

Там сначала нужно с аппаратной частью разобраться а уж потом коды пейсать , иначе ты то-же войдёшь в анналы криворуких скетчедрочеров )))

b707
Offline
Зарегистрирован: 26.05.2017

-NMi- пишет:

Там сначала нужно с аппаратной частью разобраться а уж потом коды пейсать , иначе ты то-же войдёшь в анналы криворуких скетчедрочеров )))

не,  он за пять штук удавится :)

-NMi-
Offline
Зарегистрирован: 20.08.2018

GKV пишет:

Кто готов участвовать =присоединяйтесь.

Мне чисто просто интересно неспеша изобрести очередной контроллер для печки или бойлера или что-то универсальное. От себя могу предложить профессиональное рисование схем в PR с последующей симуляцией оных. Так что ДАВАЙ КУСОЧКИ схем, оформим их в виде функциональных блоков. Давай входные и выходные ПАРАМЕТРЫ с датчиков и исполнительных механизмов. Всё это оформим в САПРе с возможностью СИМУЛЯЦИИ и вот только тогда УЖ и будем пеЙсать строчки кода. Но есть одно но, - я любитель нестандартных и порой даже непонятных всем подходов к реализации программной части, так-что исходников от меня не будет, хотя готовый *.hex могу подарить. Ещё: "где_мой_изюм_?" - вижу небольшую перспективу с возможностью реализации "дальше". У меня всё!

-NMi-
Offline
Зарегистрирован: 20.08.2018

b707 пишет:

не,  он за пять штук удавится :)

А ты не смотри на него, смотри "сквозь" него, там можно увидеть и 50 штук и поболее. А удавится он или нет - это его "трудности" , нас они не касаюцца   !!!   :))):)))