Ардуино и электронная нагрузка

Сергей82
Offline
Зарегистрирован: 16.03.2020
[code]

#include <Wire.h>
#include <OneWire.h>
#include <LiquidCrystal_I2C.h>
byte _d18x2x2Addr[8] = {0x10, 0xA0, 0x39, 0xE, 0x0, 0x8, 0x0, 0xB3};

byte _d18x2x1Addr[8] = {0x10, 0x1C, 0x22, 0xE, 0x0, 0x8, 0x0, 0xC5};

LiquidCrystal_I2C _lcd1(0x27, 16, 2);
int _dispTempLength1 = 0;
boolean _isNeedClearDisp1;

struct UB_187911005
{
  bool ubo_170466425 = 0;
  bool _gen1I = 0;
  bool _gen1O = 0;
  unsigned long _gen1P = 0UL;
  bool _kgen1 = 0;
  bool _kRtrg1rtrg1 = 0;
  bool _kRtrg1rtrg1In = 0;
  bool _kRtrg1 = 0;
  int _anVar1 = 0;
  bool _comp1 = 0;
  bool _comp2 = 0;
  bool _kp1 = 0;
  bool _k1 = 0;
};
UB_187911005 UB_187911005_Instance1;
int UB_187911005_ubi_160998996 = 0;
int UB_187911005_ubi_2422829 = 0;
int UB_187911005_ubi_228856055 = 0;
bool UB_187911005_ubi_39993747 = 0;
OneWire  _ow7(7);
float _gtv1;
float _gtv2;
int _disp1oldLength = 0;
int _disp3oldLength = 0;
unsigned long _d18x2x1Tti = 0UL;
float _d18x2x1O = 0.00;
bool _trgt1 = 0;
bool _trgt1I = 0;
int _disp8oldLength = 0;
int _disp2oldLength = 0;
int _disp7oldLength = 0;
bool _bounseInputD5S = 0;
bool _bounseInputD5O = 0;
unsigned long _bounseInputD5P = 0UL;
unsigned long _d18x2x2Tti = 0UL;
float _d18x2x2O = 0.00;
int _disp6oldLength = 0;
int _disp4oldLength = 0;
int _disp5oldLength = 0;

void setup()
{
  pinMode(5, INPUT_PULLUP);
  pinMode(4, OUTPUT);
  digitalWrite(4, 0);


  Wire.begin();
  delay(10);
  _lcd1.init();
  _lcd1.backlight();
  _bounseInputD5O =  digitalRead(5);

}
void loop()
{

  if (_isNeedClearDisp1) {
    _lcd1.clear();
    _isNeedClearDisp1 = 0;
  }

  bool  _bounceInputTmpD5 =  (digitalRead (5));

  if (_bounseInputD5S)
  {
    if (millis() >= (_bounseInputD5P + 40))
    {
      _bounseInputD5O = _bounceInputTmpD5;
      _bounseInputD5S = 0;
    }
  }
  else
  {
    if (_bounceInputTmpD5 != _bounseInputD5O )
    {
      _bounseInputD5S = 1;
      _bounseInputD5P = millis();
    }
  }




  //Плата:1
  //Наименование:основная плата
  UB_187911005_ubi_160998996 = ((map(( (analogRead (0))), (0), (1023), (0), (500)))) / (100.00);
  UB_187911005_ubi_2422829 = ((map(( (analogRead (1))), (0), (1023), (0), (500)))) / (100.00);
  UB_187911005_ubi_228856055 = ((( _floatToStringWitRaz(((map(( (analogRead (2))), (0), (1023), (0.2), (500)))) / (100.00), 2))).toInt());
  UB_187911005_ubi_39993747 = 1;
  _func_UB_187911005(&UB_187911005_Instance1, UB_187911005_ubi_160998996, UB_187911005_ubi_2422829, UB_187911005_ubi_228856055, UB_187911005_ubi_39993747, 1000);
  digitalWrite(4, UB_187911005_Instance1.ubo_170466425);

  //Плата:2
  //Наименование:вывод на дисплей
  if (1) {
    _dispTempLength1 = ((String("V"))).length();
    if (_disp2oldLength > _dispTempLength1) {
      _isNeedClearDisp1 = 1;
    }
    _disp2oldLength = _dispTempLength1;
    _lcd1.setCursor(0, 0);
    _lcd1.print((String("V")));
  } else {
    if (_disp2oldLength > 0) {
      _isNeedClearDisp1 = 1;
      _disp2oldLength = 0;
    }
  }
  if (1) {
    _dispTempLength1 = ((( _floatToStringWitRaz(((map(( (analogRead (1))), (0), (1023), (0), (500)))) / (100.00), 2)))).length();
    if (_disp4oldLength > _dispTempLength1) {
      _isNeedClearDisp1 = 1;
    }
    _disp4oldLength = _dispTempLength1;
    _lcd1.setCursor(2, 0);
    _lcd1.print((( _floatToStringWitRaz(((map(( (analogRead (1))), (0), (1023), (0), (500)))) / (100.00), 2))));
  } else {
    if (_disp4oldLength > 0) {
      _isNeedClearDisp1 = 1;
      _disp4oldLength = 0;
    }
  }
  if (1) {
    _dispTempLength1 = ((String("G"))).length();
    if (_disp5oldLength > _dispTempLength1) {
      _isNeedClearDisp1 = 1;
    }
    _disp5oldLength = _dispTempLength1;
    _lcd1.setCursor(0, 1);
    _lcd1.print((String("G")));
  } else {
    if (_disp5oldLength > 0) {
      _isNeedClearDisp1 = 1;
      _disp5oldLength = 0;
    }
  }
  if (1) {
    _dispTempLength1 = ((( _floatToStringWitRaz(((map(( (analogRead (2))), (0), (1023), (0), (500)))) / (100.00), 2)))).length();
    if (_disp6oldLength > _dispTempLength1) {
      _isNeedClearDisp1 = 1;
    }
    _disp6oldLength = _dispTempLength1;
    _lcd1.setCursor(2, 1);
    _lcd1.print((( _floatToStringWitRaz(((map(( (analogRead (2))), (0), (1023), (0), (500)))) / (100.00), 2))));
  } else {
    if (_disp6oldLength > 0) {
      _isNeedClearDisp1 = 1;
      _disp6oldLength = 0;
    }
  }
  if (1) {
    _dispTempLength1 = ((String("t"))).length();
    if (_disp1oldLength > _dispTempLength1) {
      _isNeedClearDisp1 = 1;
    }
    _disp1oldLength = _dispTempLength1;
    _lcd1.setCursor(10, 0);
    _lcd1.print((String("t")));
  } else {
    if (_disp1oldLength > 0) {
      _isNeedClearDisp1 = 1;
      _disp1oldLength = 0;
    }
  }
  if (_isTimer(_d18x2x1Tti, 1000)) {
    _d18x2x1Tti = millis();
    _d18x2x1O =  _readDS18_ow7(_d18x2x1Addr, 1);
  }
  if (1) {
    _dispTempLength1 = ((( _floatToStringWitRaz((_d18x2x1O), 1)))).length();
    if (_disp3oldLength > _dispTempLength1) {
      _isNeedClearDisp1 = 1;
    }
    _disp3oldLength = _dispTempLength1;
    _lcd1.setCursor(12, 0);
    _lcd1.print((( _floatToStringWitRaz((_d18x2x1O), 1))));
  } else {
    if (_disp3oldLength > 0) {
      _isNeedClearDisp1 = 1;
      _disp3oldLength = 0;
    }
  }
  _gtv1 = (_d18x2x1O);
  if (1) {
    _dispTempLength1 = ((String("t"))).length();
    if (_disp7oldLength > _dispTempLength1) {
      _isNeedClearDisp1 = 1;
    }
    _disp7oldLength = _dispTempLength1;
    _lcd1.setCursor(10, 1);
    _lcd1.print((String("t")));
  } else {
    if (_disp7oldLength > 0) {
      _isNeedClearDisp1 = 1;
      _disp7oldLength = 0;
    }
  }
  if (_isTimer(_d18x2x2Tti, 1000)) {
    _d18x2x2Tti = millis();
    _d18x2x2O =  _readDS18_ow7(_d18x2x2Addr, 1);
  }
  if (1) {
    _dispTempLength1 = ((( _floatToStringWitRaz((_d18x2x2O), 1)))).length();
    if (_disp8oldLength > _dispTempLength1) {
      _isNeedClearDisp1 = 1;
    }
    _disp8oldLength = _dispTempLength1;
    _lcd1.setCursor(12, 1);
    _lcd1.print((( _floatToStringWitRaz((_d18x2x2O), 1))));
  } else {
    if (_disp8oldLength > 0) {
      _isNeedClearDisp1 = 1;
      _disp8oldLength = 0;
    }
  }
  _gtv2 = (_d18x2x2O);

  //Плата:3
  //Наименование:контроль температуры
  digitalWrite(4, (_gtv1) <= (80));
  digitalWrite(4, (_gtv2) <= (80));

  //Плата:4
  //Наименование:кнопка вкл выкл
  bool  _tmp1 = !(_bounseInputD5O);
  if (_tmp1)  {
    if (! _trgt1I) _trgt1 = ! _trgt1;
  }
  _trgt1I = _tmp1;
  digitalWrite(4, _trgt1);






}

String  _floatToStringWitRaz(float value, int raz)
{

  return String(value, raz);
}
bool _isTimer(unsigned long startTime, unsigned long period )
{
  unsigned long currentTime;
  currentTime = millis();
  if (currentTime >= startTime) {
    return (currentTime >= (startTime + period));
  } else {
    return (currentTime >= (4294967295 - startTime + period));
  }
}
float _convertDS18x2xData(byte type_s, byte data[12])
{
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s)
  {
    raw = raw << 3;
    if (data[7] == 0x10) {
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  }
  else
  {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw & ~7;   else if (cfg == 0x20) raw = raw & ~3;  else if (cfg == 0x40) raw = raw & ~1;
  }
  return  (float)raw / 16.0;
}
float _readDS18_ow7(byte addr[8], byte type_s)
{ byte data[12];
  byte i;
  _ow7.reset();
  _ow7.select(addr);
  _ow7.write(0xBE);
  for ( i = 0; i < 9; i++) {
    data[i] = _ow7.read();
  }
  _ow7.reset();
  _ow7.select(addr);
  _ow7.write(0x44, 1);
  return _convertDS18x2xData(type_s, data);
} String _convertNumbeToTime(long value)
{
  if (value > 9) {
    return String(value, DEC);
  }
  return ( String("0") + String(value, DEC));
}

void _func_UB_187911005(struct UB_187911005 *_ubInstans, int ubi_160998996, int ubi_2422829, int ubi_228856055, bool ubi_39993747, int ubpar_204055303)
{
  bool ubo_170466425 = _ubInstans->ubo_170466425;
  bool _gen1I = _ubInstans->_gen1I;
  bool _gen1O = _ubInstans->_gen1O;
  unsigned long _gen1P = _ubInstans->_gen1P;
  bool _kgen1 = _ubInstans->_kgen1;
  bool _kRtrg1rtrg1 = _ubInstans->_kRtrg1rtrg1;
  bool _kRtrg1rtrg1In = _ubInstans->_kRtrg1rtrg1In;
  bool _kRtrg1 = _ubInstans->_kRtrg1;
  int _anVar1 = _ubInstans->_anVar1;
  bool _comp1 = _ubInstans->_comp1;
  bool _comp2 = _ubInstans->_comp2;
  bool _kp1 = _ubInstans->_kp1;
  bool _k1 = _ubInstans->_k1;
  if (1) {
    if (! _gen1I) {
      _gen1I = 1;
      _gen1O = 1;
      _gen1P =  millis();
    }
  } else {
    _gen1I = 0 ;
    _gen1O = 0;
  } if (_gen1I ) {
    if (_gen1O) {
      if ( _isTimer( _gen1P , 10 )) {
        _gen1P = millis();
        _gen1O = 0;
      }
    } else  {
      if ( _isTimer( _gen1P , ubpar_204055303 )) {
        _gen1P = millis();
        _gen1O = 1;
      }
    }
  }
  if (_gen1O)
  {
    _kgen1 = 1;
  }
  else
  {
    _kgen1 = 0;
  }
  if (_kgen1) {
    if (_kRtrg1rtrg1In) {
      _kRtrg1rtrg1 = 0;
    } else {
      _kRtrg1rtrg1 = 1;
      _kRtrg1rtrg1In = 1;
    }
  } else {
    _kRtrg1rtrg1 = 0;
    _kRtrg1rtrg1In = 0;
  };
  _kRtrg1 = _kRtrg1rtrg1;
  if (_kRtrg1) {
    _anVar1 = (ubi_160998996);
  }
  if ((_anVar1) <= (((ubi_2422829) - (ubi_228856055))))
  {
    _comp1 = 1;
  }
  else
  {
    _comp1 = 0;
  }
  if ((_anVar1) >= (((ubi_2422829) + (ubi_228856055))))
  {
    _comp2 = 1;
  }
  else
  {
    _comp2 = 0;
  }
  if (((((_comp1) && ((!_k1)))) || (((_comp2) && (_k1)))) && (!(((((_comp2) && ((!_k1)))) || (((_comp1) && (_k1))))))) {
    _kp1 = 1;
  }
  if (((((_comp2) && ((!_k1)))) || (((_comp1) && (_k1)))) && (!(((((_comp1) && ((!_k1)))) || (((_comp2) && (_k1))))))) {
    _kp1 = 0;
  }
  _k1 = ubi_39993747;
  ubo_170466425 = _kp1;
  _ubInstans->ubo_170466425 = ubo_170466425;
  _ubInstans->_gen1I = _gen1I;
  _ubInstans->_gen1O = _gen1O;
  _ubInstans->_gen1P = _gen1P;
  _ubInstans->_kgen1 = _kgen1;
  _ubInstans->_kRtrg1rtrg1 = _kRtrg1rtrg1;
  _ubInstans->_kRtrg1rtrg1In = _kRtrg1rtrg1In;
  _ubInstans->_kRtrg1 = _kRtrg1;
  _ubInstans->_anVar1 = _anVar1;
  _ubInstans->_comp1 = _comp1;
  _ubInstans->_comp2 = _comp2;
  _ubInstans->_kp1 = _kp1;
  _ubInstans->_k1 = _k1;

}
[/code]

 

 

 

Сергей82
Offline
Зарегистрирован: 16.03.2020

Как- то так у меня вышло. Писал в FLprog-e, на схеме с ардуиной дорисовано не все, нет реле и прочих мелочей. 

От энкодера пришлось отказаться и сделать на аналоге. Прога работает, но немного сыровата. 

Сергей82
Offline
Зарегистрирован: 16.03.2020

Напряжение отключения нагрузки и гистерезиса задаются опорным напряжением на соответствующих аналоговых входах. Два датчика температуры ds18b20 показывают температуру на двух радиаторах (печках), и при достижении 80-ти градусов отключают нагрузку

Сергей82
Offline
Зарегистрирован: 16.03.2020

https://yadi.sk/d/K11sOgPppAbHBw

файл FLprog-a , не знаю как тут загружать напрямую...

Хочется всетаки с энкодером, может у кого будет время или желание повозится и возможно поделиться.

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

FLProg на этом форуме не котируется.  Звиздуй на его спицальный форум. 

Сергей82
Offline
Зарегистрирован: 16.03.2020

А причем тут FL? Код есть, написан, какая разница через что какую программу? Вызывает раздражение FL? Не смотри вложения касающиеся FL. Смотри код. Или не смотри.

"Звиздуй на его спицальный форум. " - я без Вас пожалуй разберусь куда мне звездовать... 

Когда здесь просил помощи, от большинства читал что-то типа: "Просишь что бы за тебя написали". Когда хоть как-то смог написать сам, читаю "Звиздуй на его спицальный форум. " 

 

Это здоровому человеку как-то сложно понять ...

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

Сергей82 пишет:

А причем тут FL? Код есть, написан, какая разница через что какую программу? Вызывает раздражение FL? Не смотри вложения касающиеся FL. Смотри код. Или не смотри.

тут нет кода. Эта простыня - машинный листинг, а не код. И он абсолютно никому и ничем не может быть полезен, поскольку, как ты сам говоришь, "сыроват", а править эту белиберду никто не станет.

 

Сергей82
Offline
Зарегистрирован: 16.03.2020

"И он абсолютно никому и ничем не может быть полезен" а он может быть полезен новичку в программировании, но не новичку в электронике? Например человеку который хочет сделать то, что сделал я. В сети готового решения нет, во всяком случае на первых десятках страниц поиска... Как вы можете утверждать то, чего не можете утверждать?
Это вам я смотрю ничем такое устройство не полезно, но есть и другие люди...
Тем более, я вроде на форуме Ардуино, и обсуждаю устройство, которое называется Ардуино. Логично?

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

В этом коде может разобраться только тот, кто его нагородил. Да и то наврядли. Вопрос полезности сего набора символов новичкам - под огромным вопросом. Вот лично Вам, как новичку, что говорит это: "bool ubo_170466425 = _ubInstans->ubo_170466425;" ?

Сергей82
Offline
Зарегистрирован: 16.03.2020

"сыроват" - кому надо будет, поправит под себя как захочет.
"править эту белиберду никто не станет." - кто не станет, тот не станет. А кто станет, тот станет.

"тут нет кода. Эта простыня - машинный листинг, а не код. " а разница какая человеку, которому нужно просто рабочее устройство, без всяких там простыней и прочего...???

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

Сергей82 пишет:
а он может быть полезен новичку в программировании

нет, категорически не может, особенно новичку. Новичку надо учится правильно писать код. использовать эффективную работу с данными и конструкциями языка. FLProg же программирует тупо копируя стандартные конструкции и создавая кучу нелогичныз переменных с ничего не говорящими именами.

То. что вы не нашли под свою задачу примеров кода - говорит только о том. что вы не понимаете. что вообще искать. Я вам на прошлой странице писал. из каких частей состоит нужный вам код - неужели примеров на измерение напряжения или показа его экране не нашли? - значит так искали

Сергей82
Offline
Зарегистрирован: 16.03.2020

"Вот лично Вам, как новичку, что говорит это" - да ничего. Я же новичек. Поэтому во вложении на Ядиске есть фаил для флпрога, а там уже и новичек рпзберется. Я же разобрался.
Не нравится код? Да не смотрите вы на него своими профессиональными глазами, это для новичков )

Сергей82
Offline
Зарегистрирован: 16.03.2020

Сейчас, машину на лето переобую, зайду домой и отвечу. Весна, сохнет все, шипы жалко)

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

Сергей82 пишет:
Эта простыня - машинный листинг, а не код. " а разница какая человеку, которому нужно просто рабочее устройство, без всяких там простыней и прочего...???

Сергей, судя по репликам, вы на код смотрите как на китайскую грамоту. Поэтому и не понимаете, что этот код - мусор. Для человека, что не знает китайского - что роман знаменитого писателя. что мазня первоклассника - одно и тоже, набор закорючек и все.

мы же тут немного больше в этом понимаем и можем отличить хороший код от полной ерунды. Ерунда не полезна никому. новичкам она не нужна. они ничему на этом коде научится не смогут.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

тут многие на форуме тоже не настоящие сталевары, но надёргать на форуме готового функционала под свои задачи и, создать нормально читаемый скетч вполне возможно специалисту средней руки ...
А поправить скетч, это сообщество поможет, попинает маленько, но поможет...

Сергей82
Offline
Зарегистрирован: 16.03.2020

Переобулся :)

"на этом коде научится не смогут." - может кому-то и не надо учится, просто собрать самому рабочий проект? Или сейчас вы скажите что на FL собрать рабочее устройство собрать нельзя? А если оно работает как в него было заложено, какая разница в каком там виде код? Красиво и четко он написан, или процу надо делать еще сто лишних телодвижений для того чтоб зажечь светодиод.  

Я вот например ставил какой-нибудь вход, соединял с выходом, компилировал и смотрел что на выходе. Потом добавлял еще чего-то и снова смотрел. Не скаазать что я научился, но в голове благодаря этой программке многое прояснилось. То, что она вместо кода рисует шедевр абстрокцианизма, это даже я увидел. А куда деваться :)? Задачу решать надо ...

"но надёргать на форуме готового функционала под свои задачи и, создать нормально читаемый скетч вполне возможно"  Ну я наверно плохо искал, или шарю совсем плохо.

"поправить скетч, это сообщество поможет, попинает маленько, но поможет..."  Я благодарен всем тем кто помогал. Я как и говорили, собирал простое. Мерил напругу, выводил на экран и т.п. Соединить в логику не смог ... Вот и прибегнул к помощи этой проги. Но это не значит что я не буду пробовать писать по-нормальному)

Сергей82
Offline
Зарегистрирован: 16.03.2020

PS ""сыроват" - " имелось ввиду что осталось настроить под конкретные величины. "Сушить" буду уже в корпусе.

Сергей82
Offline
Зарегистрирован: 16.03.2020

"неужели примеров на измерение напряжения или показа его экране не нашли?" Нашел. И как выводить на экран тоже ... И как управлять нагрузкой... А как менять переменные значения, уставки и прочее не нашел. С энкодером это вообще жесть какая-то, код к нему на 48-ми листах. Как будто он с марсианского звездолета. А по-сути две кнопки. Когда увидел как с ними мучаются, решил делать на аналоге, гораздо проще. Звучит не логично конечно, в "цифровой микрухе" проще организовать код на "аналоговом входе", это я про энкодер все... Про меню вообще молчу

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Сергей82 пишет:

Переобулся :)

"на этом коде научится не смогут." - может кому-то и не надо учится, просто собрать самому рабочий проект? Или сейчас вы скажите что на FL собрать рабочее устройство собрать нельзя?

Давайте попытаемся отделить мух от котлет:

- Можно ли собрать готовый проект с этого форума? - Можно!

- Можно ли собрать готовый проект на FL-prog? - Можно!

- А чтоб на этом форума и FL? - Нельзя!

Цитата:

А если оно работает как в него было заложено, какая разница в каком там виде код? Красиво и четко он написан, или процу надо делать еще сто лишних телодвижений для того чтоб зажечь светодиод.  

Наверное, Вам будет трудно понять... или вообще не поверите, но код пишут для людей. Не для контроллера, а именно для людей. Ибо если есть код "для контроллера", то в нем невозможно:

- что нибудь изменить,

- что-нибудь добавить или сократить,

- исправить обнаруженные ошибки.

Цитата:

А куда деваться :)? Задачу решать надо ...

Видите ли, для тех, кому надо "решать задачу", на форуме единственный раздел - "Ищу исполнителя". Все остальные разделы для тех, кто либо "умеет", либо "хочет научиться".

renoshnik
Offline
Зарегистрирован: 11.04.2013

Сергей82 пишет:

"неужели примеров на измерение напряжения или показа его экране не нашли?" Нашел. И как выводить на экран тоже ... И как управлять нагрузкой... А как менять переменные значения, уставки и прочее не нашел. С энкодером это вообще жесть какая-то, код к нему на 48-ми листах. Как будто он с марсианского звездолета. А по-сути две кнопки. Когда увидел как с ними мучаются, решил делать на аналоге, гораздо проще. Звучит не логично конечно, в "цифровой микрухе" проще организовать код на "аналоговом входе", это я про энкодер все... Про меню вообще молчу

Что за бред ???  

Код в семь строчек ....  http://forum.arduino.ua/viewtopic.php?id=1070

 

SLKH
Offline
Зарегистрирован: 17.08.2015

Сергей82 пишет:

"на этом коде научится не смогут." - может кому-то и не надо учится, просто собрать самому рабочий проект? Или сейчас вы скажите что на FL собрать рабочее устройство собрать нельзя? А если оно работает как в него было заложено, какая разница в каком там виде код? 

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

А если не работает, как заложено - то что-то исправить очень сложно. Ибо С/С++ и так-то склоняется к write-only language, а уж FLовский код - тем более.

Цитата:
Write-only language это такой язык, на котором можно написать программу, но нельзя прочитать и понять. Хорошим примером может служить конвеевская игра "Жизнь", написанная на языке APL:

⍎'⎕',∈N⍴⊂S←'←⎕←(3=T)∨M∧2=T←⊃+/(V⌽"⊂M),(V⊖"⊂M),(V,⌽V)⌽"(V,V ←1¯1)⊖"⊂M' 

 

Конкретно ваш код "кому надо будет, поправит под себя как захочет". На данный момент это надо только вам.  Правьте.

Сергей82
Offline
Зарегистрирован: 16.03.2020

кому надо "решать задачу", на форуме единственный раздел - "Ищу исполнителя"  Зачем? Я для себя решил задачу.

Наверное, Вам будет трудно понять...  Да нет, вроде понял. Спасибо.

Что за бред ???  Код в семь строчек ....  Спасибо большое! Доходчиво расписано. 

на FL рабочее устройство собрать можно. И если оно работает, как в него было заложено, то автор просто не придет сюда с вопросами.  Не, собрал я после того как пришел сюда с вопросами. Работает. 

Просто в процессе появляются еще вопросы. Вот например мне не понятно про переменные. Я так понял что ими нельзя злоупотреблять так как они постоянно меняясь перезаписывают ячейки памяти. И вроде как она (память) от этого как бы сказать... Стареет чтоли.. Вот пример: датчик температуры и вывод на экран. Здесь вообще же не нужны переменные? Информация с датчика преобразуясь в строку выводится на экран. Стабильно, надежно. Но если эти данные с датчика параллельно требуются для термостатирования, то тут нужны переменные. И к переменным уже обращаются с разных мест и в разное время (теже lcd и термостат). Опрос датчика скажем 1 раз в сек., следовательно переменная будет переписываться с той же частотой? Сколько раз она выдержит перезапись? 

А если не работает, как заложено - то что-то исправить очень сложно. Ибо С/С++ и так-то склоняется к write-only language, а уж FLовский код - тем более.  Спасибо! Большое спасибо!

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

Сергей82 пишет:

Просто в процессе появляются еще вопросы. Вот например мне не понятно про переменные. Я так понял что ими нельзя злоупотреблять так как они постоянно меняясь перезаписывают ячейки памяти. И вроде как она (память) от этого как бы сказать... Стареет чтоли..

Вы путаете, "старение" относится к ЕЕПРОМ - энергонезависимой памяти.

В отлиичи от ЕЕПРОМ, оперативную память, где хранятся переменные в момент исполнения кода - можно перезаписывать неограниченное количество раз.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Сергей82 пишет:

Вот пример: датчик температуры и вывод на экран. Здесь вообще же не нужны переменные? Информация с датчика преобразуясь в строку выводится на экран. Стабильно, надежно. Но если эти данные с датчика параллельно требуются для термостатирования, то тут нужны переменные. И к переменным уже обращаются с разных мест и в разное время (теже lcd и термостат).

Вы совершенно не понимаете, что такое переменная.

А переписывать на форум несколько сотен страниц из учебника никто не будет.

Так что единственный вариант - читать эти сотни страниц самому.

Список литературы - в теме "Песочница".

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

andriano пишет:

Вы совершенно не понимаете, что такое переменная.

это все пагубное влияние ФЛПрога.

Сергей82, теперь вы понимаете, почему ФЛПрог на нашем форуме - запрещенная тема?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Сергей82 пишет:

Наверное, Вам будет трудно понять...  Да нет, вроде понял. Спасибо.

Боюсь, что Вы не поняли. Чтобы представленная Вами программа имела смысл для кого-то, кроме Вас, да и для Вас тоже, ее надо дополнить комментариями, расставить логические блоки и их закомментировать и т.д. Практически Вы должны проиграть эту программу в Вашей голове и понять что она в каждый момент времени делает.

По мне - так проще написать новую программу на с++ или остаться на FL уровне, представляя код на си как промежуточный и не читаемый. Как, обычно, не читают код на ассемблере получающийся после си.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Наверное дополню mykaida, чтобы Вы лично и все (особенно к кому за помощью обращаетесь) понимали что и как в Вашей программе происходит (желательно) нарисовать блок-схему (логику работы программы, можно от руки и на листочке), а потом можно и в ненависной большенству тут участникам флпроге ее сделать, но дополнить комментариями что и где и как происходит (согластно блок-схеме). Если не понимаете и не напишите хотя бы комментарии к "программе", то разбираться во всем этом "бреду" согласятся только либо "фанатики" либо в платном разделе. Фанатиков тут практически нет.