Друзья сайта |
Форум поддержки программ "Tiny Tools" (CPLD/USB-S/USB-F/USB-SPI EJTAG Tiny Tools)
Электроника на KitPost
|
Наш опрос |
Оцените мой сайт
Всего ответов: 86
|
|
Инфракрасная паяльная станция своими руками на ARDUINO
| |
Alexandr_ | Дата: Среда, 08.02.2017, 19:55 | Сообщение # 1 |
Генералиссимус
Группа: Администраторы
Сообщений: 814
Статус: Offline
| Форумчане, куплю-продажу и личные сделки выяснять в личке, либо в новом форуме, этот форум для вопросов по электронной части станции.
Архив по станции от hominidae с проектом efimsu ->здесь Проект Леонида, Leonid0071 "UNO-MAX6675-PC" и его доработки на форуме Амперки -> скачать
Люби грешников, ненавидь сам грех!
|
|
|
Пользователи поблагодарившие Alexandr_ за этот пост: |
|
|
snmar4enko | Дата: Вторник, 05.06.2018, 13:30 | Сообщение # 151 |
Лейтенант
Группа: Пользователи
Сообщений: 68
Статус: Offline
| Цитата Cinema ( ) Теперь о грустном:Какой-бы пин я не назначал для верха, при подаче питания, после заставки, начинает моргать, примерно, 2Гц светодиод, подключенный вместо силовой верха. в сторону детектора нуля - который подается как прерывание на D2 - смотри - такое уже было, а может только прерывание - спад - фронт, или другое ..... поменяй в программе. А еще проще возьми нормальную ардуинку (2 доллара) - а то подпалленная как то стремно - пока ключи целы!!!!!!
Сообщение отредактировал snmar4enko - Вторник, 05.06.2018, 13:32 |
|
|
Пользователи поблагодарившие snmar4enko за этот пост: |
|
|
fedorchuk007 | Дата: Среда, 06.06.2018, 08:29 | Сообщение # 152 |
Сержант
Группа: Пользователи
Сообщений: 24
Статус: Offline
| Цитата Cinema () Теперь о грустном:Какой-бы пин я не назначал для верха, при подаче питания, после заставки, начинает моргать, примерно, 2Гц светодиод, подключенный вместо силовой верха.
Попробуй собрать несколько детекторов нуля,(на pc814 или на 4n25) сам сталкивался с данной проблемой
|
|
|
Пользователи поблагодарившие fedorchuk007 за этот пост: |
|
|
Cinema | Дата: Суббота, 23.06.2018, 19:10 | Сообщение # 153 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| Хм... Захотел скомпилировать 2.0.9. - Нихрена не выходит :(. Использую IDE 1.8.5 или IDE 1.6.3 Высыпает такой текст: Код C:\Users\DELL\Desktop\REWORK_LCD1602nano\REWORK_LCD1602nano.ino: In function 'void setup()':
REWORK_LCD1602nano:325: error: no matching function for call to 'LiquidCrystal_I2C::begin()'
lcd.begin(); // закомментировать если дисплей без I2C
^
C:\Users\DELL\Desktop\REWORK_LCD1602nano\REWORK_LCD1602nano.ino:325:13: note: candidate is:
In file included from C:\Users\DELL\Desktop\REWORK_LCD1602nano\REWORK_LCD1602nano.ino:6:0:
C:\Users\DELL\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:58:8: note: void LiquidCrystal_I2C::begin(uint8_t, uint8_t, uint8_t)
void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS );
^
C:\Users\DELL\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:58:8: note: candidate expects 3 arguments, 0 provided
exit status 1 no matching function for call to 'LiquidCrystal_I2C::begin()' В версии 2.0.5 (с дисплеем без I2C такого не было... Так. Разобрался. snmar4enko вспешке забыл пару символов вписать. Должно быть так: Код lcd.begin(16, 2); // закомментировать если дисплей без I2C Мой 1602 завелся только с либой LiquidCrystal_PCF8574.h и мне пришлось инициализировать подсветку: Код //собщение приветствия lcd.begin(16, 2); // закомментировать если дисплей без I2C // Для дисплеея спецсимвол Градус целсия .... lcd.setBacklight(255); // включаем подсветки дисплея lcd.createChar(0, GC); lcd.createChar(1, Th); lcd.createChar(2, Bh);
Добавлено (23.06.2018, 18:23) --------------------------------------------- Еще поправил циферку здесь (Вместо "8" поставил "9", иначе "Pb+" профиль №1 имел знак "-", относящий его к "Pb-" профилям): Код if (temperatureStep[profileSteps-2]<191) {lcd.print("+"); Добавлено (23.06.2018, 19:10) --------------------------------------------- Вот что не понятно: Сразу после запуска профиля, в центре верхней строки дисплея идет отсчет температуры, при том, что вместо нагревателей - светики (который вместо НИ - показывает, что НИ работает), а температура от MAX6675-ых пляшет вокруг 28-29*С. Счетчик этот дощёлкивает до уставки НИ и останавливается на значении уставки НИ, низ отрубается и включается в работу только ВИ. И тут никаких счетчиков уже нет - светик ВИ горит, и на экране уже ничего не меняется, кроме как "температура от MAX6675-ых пляшет вокруг 28-29*С". Кто-нибудь может объяснить?
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
Сообщение отредактировал Cinema - Суббота, 23.06.2018, 18:25 |
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
Cinema | Дата: Понедельник, 25.06.2018, 16:30 | Сообщение # 154 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| В архиве скетч, для UNO + LCD2004. Нумерацию выводов сделал в точности как в 2.0.9 у snmarc4enko. Детектор тоже как у snmarc4enko - с трансформатором. Из замеченного - нет глюков (подача мощи в IDLE) на выходах на НИ и ВИ, при отсутствии сигналов от детектора нуля.Добавлено (25.06.2018, 16:30) --------------------------------------------- fedorchuk007 У вас ведь тоже скетч 2.0.9? Давайте представим! Мы включили питание контроллера и силовую разом. Режим простоя. По каким-то причинам не приходит сигнал от детектора. А один из нагревателей шпарит не по-детски! - Это в режиме простоя! Другая ситуация - счетчик, о котором писАл выше - Отказали нижние ТЭНы. Счетчик после нажатия RUN спокойно отсчитает 150*С и включится ВИ! - Что мы получим? - у нас ведь нет вывода информации на компьютер, у нас нет функций сигнализации о подобных ситуациях! В общем, без участия snmar4enko я не могу разрулить это. Может, кто есть, проанализировать, откуда эти баги растут? #s3gt_translate_tooltip_mini { display: none !important; }
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
|
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
mon | Дата: Понедельник, 25.06.2018, 19:52 | Сообщение # 155 |
Подполковник
Группа: Модераторы
Сообщений: 191
Статус: Offline
| Цитата Cinema ( ) По каким-то причинам не приходит сигнал от детектора Ну так напишите защиту,например:в общем цикле инкремент переменной,а в прерывании её обнуление(куда приходят импульсы от zcd),если она станет больше чем должно наступить следующее прерывание(нужно подобрать константу) выполните событие которое вам нужно: перевести пины в z-состояние,синализация... Да и вообще инициализацию пинов на вывод на те же moc можно сделать после нажатия старт,это гарантирует не включение тенов в простое,как вариант.У меня сделано так:
Код bool ControlCapt(void)//вызывается в основном цикле для проверки наличия импульсов перехода ноля { if(++Lock_Counter > 20) { return 0; }
return 1;
} Её вызываю в в функции проверки нажатия кнопок,примерно каждые 70ms,а в прерывании по захвату (у меня туда приходят импульсы 0) ее очищаем Lock_Counter = 0; Код #pragma vector = TIMER1_CAPT_vect __interrupt void Timer_Cap(void) { //------------------------- Прерывание по захвату: --------------------------- //прерывание по событию захват //В прерывании по захвату вычисляется текущая ошибка фазы: dPh = ICR1 + Delay. //Она является входной величиной для PI-регулятора, который служит петлевым фильтром //программной PLL: Period [i]= Period[i-1] - Kp * (dPh[i - 1] - dPh[i]) + Ki * dPh[i]. //Выходной сигнал PI-регулятора представляет собой текущий период таймера 1, который загружается в регистр OCR1A. //Таймер работает в режиме очистки по сравнению (CTC), причем TOP = OCR1A. //В результате работа таймера оказывается синхронизированной с сетью с точностью до фазы //(если точнее, с удвоенной частотой сети). PLL позволяет получить постоянный сдвиг Delay относительно сигнала ZCD, // который позволяет скомпенсировать конечную длительность импульса ZCD и задержку срабатывания ZCD. //предыдущее значение ошибки фазы: static int Spll_Xp = 0; //внутреннее представление воздействия (х256): static long Spll_Y = HALF_PERIOD_NOM * 256L;//589824 //vid = ICR1; Spll_X = ICR1 +(unsigned int)Delay;//вычисление текущей ошибки фазы: //vid = (unsigned int)Delay; if(Spll_X > Half_Period >> 1) Spll_X = Spll_X - Half_Period - 1;//сдвиг в диапазон ±Half_Period / 2: Spll_Y = Spll_Y - (int)(Spll_Xp - Spll_X)* PllKp; //учет пропорциональной составляющей: Spll_Y = Spll_Y + (int)Spll_X * PllKi; //учет интегральной составляющей: //ограничение результата: if(Spll_Y > HALF_PERIOD_MAX * 256L) Spll_Y = HALF_PERIOD_MAX * 256L;//655360 if(Spll_Y < HALF_PERIOD_MIN * 256L) Spll_Y = HALF_PERIOD_MIN * 256L;//453632 //вычисление нового периода: Half_Period = Spll_Y >> 8; //сохранение предыдущего значения ошибки фазы: Spll_Xp = Spll_X; //загрузка нового периода: OCR1A = Half_Period; //коррекция угла открытия триака: OCR1B = (long)Half_Period * AngleUp / MAX_ANGLE; OCR1C = (long)Half_Period * AngleDn / MAX_ANGLE; Lock_Counter = 0;//обнуляем счетчик } Если наступит условие Lock_Counter > 20 ,примерно 1.4сек с момента как нет импульсов 0, прекращаю работу станции и вывожу сообщение.
|
|
|
Пользователи поблагодарившие mon за этот пост: |
|
|
Cinema | Дата: Понедельник, 25.06.2018, 20:18 | Сообщение # 156 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| mon, эх, мне бы ваш светлый разум :). Большое спасибо за подсказки! Попробую найти людей, которые помогут разобраться с реализацией предложенных вами функций... я ещё по-прежнему, словно "с гумызным рылом в калашный ряд!" в кодинге
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
|
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
snmar4enko | Дата: Среда, 27.06.2018, 14:56 | Сообщение # 157 |
Лейтенант
Группа: Пользователи
Сообщений: 68
Статус: Offline
| По поводу LCD1602 на I2c шине - если проблемы -чистим библиотеку и выкачиваем заново, на других форумах уже писалось, что: только первый символ из надписи на экране пишет, то подсветку не включает и подобное ..... как правило помогает.
Детектор нуля у меня двухполупериодный, ловлю спад в конце импульса. Он очень короткий и поэтому глюки от его неправильной работы приводят к ложным включениям нагревателей. Если не удается получить нормальный импульс можно еще параллельно диодам, которые формируют импульс ZCC резисторы 47-200 ком - это сместит импульс в минус и сделает более четким импульс.
Можно было бы прерывание переназначать на каждый полупериод и ловить полуволны одну на спад, другую на рост. Но это усложнит и сам фазовый регулятор, и возможно разделит его разный вид на разные полуволны.
Центр верхней строки во время пайки показывает температурную цель к которой стремится нагреватель- правая часть индикатора показывает фактический нагрев. На первом шаге, или на нескольких первых шагах с температурами меньшими заданной температуре низа - цель для низа. Далее включается верх - нагревается до температуры низа - выдерживается на уровне заданное время секунд и приступает к следующему шагу. Далее температурная цель задается для верха.
Профилей пайки у нас 14. Чтобы одним символом отобразить в одном поле - использую 16 ричную систему: 1 2 3 4 5 6 7 8 9 A B C D E Первые 7 свинцовые - на дисплее знак минус. Следующие профили безсвинцовые - знак плюс. Хотя по логике ошибочка - нужно наоборот знаки.
|
|
|
Пользователи поблагодарившие snmar4enko за этот пост: |
|
|
Cinema | Дата: Среда, 27.06.2018, 15:13 | Сообщение # 158 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| snmar4enko, приветствую! Как раз проблема в том, что без сигнала от ZCC шпарит НИ на D3. Собрано у меня несколько схем ZCC, легко меняю. Вторая проблема в том, что при нажатии на "Старт пайки" счетчик градусов начинает отсчет, а фактическая температура скетчем игнорируется - термопара висит в воздухе далеко от нагревателей. Но при этом счетчик этот досчитав до уставки низа, переводит скетч на следующий шаг, т.е. на включение ВИ. Этого ведь не должно быть - фактическая температура значительно ниже перехода на следующий шаг!... Остальное понятно, что поправил - я указал выше.
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
|
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
Dmitrysh | Дата: Пятница, 29.06.2018, 09:20 | Сообщение # 159 |
Рядовой
Группа: Пользователи
Сообщений: 3
Статус: Offline
| Цитата Cinema ( ) Как раз проблема в том, что без сигнала от ZCC шпарит НИ на D3. Собрано у меня несколько схем ZCC, легко меняю. Если по-быстрому, то можно так поправить Код if((DimmerDOWN < tic) && (!chet)&& (DimmerDOWN!=220)) D3_High; //управляем выходом
|
|
|
Пользователи поблагодарившие Dmitrysh за этот пост: |
|
|
snmar4enko | Дата: Понедельник, 02.07.2018, 15:38 | Сообщение # 160 |
Лейтенант
Группа: Пользователи
Сообщений: 68
Статус: Offline
| Код if((DimmerDOWN < tic) && (!chet)&& (DimmerDOWN!=220)) D3_High; //управляем выходом - и что - на самом деле включаем - а нужно выключать D3_LOW. Или я не про то место вставки кода думаю?
Но проблемы в основном в отсутствии дружбы детектора нуля и фазового регулятора. Необходимо понимать что мы регулируем фазу открытия симистора следующим образом: полупериод сети - и период регулирования составляет 10милисекунд (одна сотая секунды - 100 гц), мы запускаем таймер на 50 микросекунд, после прерывания по таймеру считаем периоды таймера tic. И получаем их максимум 200. 200*50микросекунд = 10милисекунд - наш полупериод сети. Максимальная мощность нагрузки при меньших DimmerDOWN. Минимальная мощность при DimmerDOWN=0. Но давайте рассмотрим проблемные случаи: основной это когда происходит задержка сигнала датчика перехода через ноль. Получается что даже при низких заданных ПИДом мощностях и при DimmerDOWN=220 -то есть гарантированом выключении - фактически импульс попадает в следующий полупериод сети - и включает на весь полупериод нагреватель. Так сказать ложные срабатывания даже в режиме ожидания IDLE или настройки... Я уже вводил полное выключение Код if (!TopStart) DimmerUP=220; else { myPID1.Compute(); DimmerUP=map(Output1,0,200,200,16); } if (!flag) DimmerDOWN=220; else { myPID2.Compute(); DimmerDOWN=map(Output2,0,200,200,16); } И в режиме простоя и настройки не должно срабатывать включение нагрузки. Если все таки низ ложно срабатывает посмотрите в сторону переменной flag.
Ложные срабатывание в режиме пайки можно откорретировать например так: Код .... DimmerUP=map(Output1,0,200,184,16); .... DimmerDOWN=map(Output2,0,200,184,16); .... Но эти все манипуляции рекомендую делать после реальной проверки ZCC осциллографом.
Да и на неопределенный период наверно исчезну .... так что кто возьмется переписывать скетч - я буду не против - только плиз комментировать подробно что меняем ...
Добавлено (02.07.2018, 15:38) ---------------------------------------------
Цитата Cinema ( ) термопара висит в воздухе далеко от нагревателей уже вроде бы писали ранее - низ нагреватель должен контачить с термодатчиком низа и плата размещается над нагревателем в 1-1.5 см. Термодатчик можно даже через термопасту. Верхний термодатчик через термопасту к верху платы возле чипа, который паяем. Правильнось регулировки верха получем скоростью нагрева на 1 градус за 2 секунды или медленней.
Сообщение отредактировал snmar4enko - Понедельник, 02.07.2018, 15:39 |
|
|
Пользователи поблагодарившие snmar4enko за этот пост: |
|
|
dscOlga | Дата: Понедельник, 02.07.2018, 19:54 | Сообщение # 161 |
Майор
Группа: Пользователи
Сообщений: 83
Статус: Offline
| Цитата - и что - на самом деле включаем - а нужно выключать D3_LOW. Или я не про то место вставки кода думаю? Нет, на самом деле нужно не дать включить. Я объясню. Когда у нас нет сигнала с датчика нуля, у нас не работает вот эта часть кода Код void detect() // обработка внешнего прерывания. { D4_Low; D3_Low; //логический ноль на выходы RestartTimer1(); tic=0; //обнулить счетчик chet=!chet; //ЧЕТНОСТЬ ПОЛУВОЛНЫ } Здесь самое главное строчка сброса таймера. Все дело в том, что у нас сам таймер считает до 255, но обработчик детектора нуля не дает ему считать более 200, потому как 50мкс*200=10мс - полупериод синусоиды сети и время через которое приходит сигнал с датчика нуля и сбрасывает таймер. Если сигнала детектора нет и таймер не сбрасывается то он считает до 255 и условие Код if((DimmerDOWN < tic) && (!chet)) D3_High; //управляем выходом срабатывает, т.к переменная tic "перебегает" через барьер DimmerDOWN = 220. А сбрасывается выход уже здесь Код else { D3_Low; D4_Low; } End В итоге на выходе "шлак" бесполезный. А почему это происходит только с нижним нагревателем? А потому, что не меняется переменная chet. Она равна нулю, а ноль это полупериод для нижнего нагревателя. А если написать как я предложил: Код if((DimmerDOWN < tic) && (!chet)&& (DimmerDOWN!=220)) D3_High; //управляем выходом эта проблема уходит. Это конечно решение "лоховское", но чтобы сильно код не лохматить подойдет.Добавлено (02.07.2018, 19:18) --------------------------------------------- И расскажите как мне вернуть мой нормальный ник, я вошел через яндекс и стал dscOlga Добавлено (02.07.2018, 19:54) --------------------------------------------- Цитата Минимальная мощность при DimmerDOWN=0. Это максимальная мощность. Цитата основной это когда происходит задержка сигнала датчика перехода через ноль. Получается что даже при низких заданных ПИДом мощностях и при DimmerDOWN=220 -то есть гарантированом выключении - фактически импульс попадает в следующий полупериод сети Детектор должен подавать импульс чуть раньше прихода самого нуля. Что собственно и происходит почти во всех ZCC. Ваш код нормально работает. Цитата Я уже вводил полное выключение Это не поможет. Я выше писал почему. Если ZCC работает, то без проблем, а вот если нет сигнала то ... Цитата И в режиме простоя и настройки не должно срабатывать включение нагрузки. Если все таки низ ложно срабатывает посмотрите в сторону переменной flag. Срабатывают, проблема в таймере.
А вообще это все ерунда. Если не работает ZCC то и смысла от работы кода нет никакого.
Цитата Да и на неопределенный период наверно исчезну .... Не надо этого делать. А кто нам будет свежие гениальные идеи предлагать? Мне нравиться ход ваших мыслей и работоспособность, обидно если сообщество потеряет в вашем лице толкового разработчика.
Сообщение отредактировал dscOlga - Понедельник, 02.07.2018, 19:16 |
|
|
Пользователи поблагодарившие dscOlga за этот пост: |
|
|
Cinema | Дата: Понедельник, 02.07.2018, 21:45 | Сообщение # 162 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| Dmitrysh Я думал, что только мне "везёт" на глюки сайта
Вы правы, что без ZCC глупо работать со скетчем, который на его использование "заточен". Я привел аварийную ситуацию в пример, а не штатную. На днях Alexandr отписывал, что его контроллер от LDZ дал сбой высокой ценовой категории... Ну, и, бережёного, сами знаете :). А у snmar4enko не предусмотрены меры для упреждения подобных катаклизмов, и вроде-бы ничто не предвещало беды, пока она не случилась... Я - так вообще, за то, чтоб преднагревателем управлял отдельный контроллер, пускай хоть digispark , хоть Pro Mini 168. Если преднагреватель плита, чугунная электроконфорка, или воздушные ТЭНы - нет надобности задействовать полный ПИД, ИМХО. А вот для ВИ можно вылизывать прошивку до состояния ограненного бриллианта, и вводить в него "плюшки" и функции защиты, в т.ч. и возможность "отрубить нахрен" НИ. Контроль температуры платы и индикацию её и скорости прироста её уверенно выполнит контроллер ВИ, сможет и направить корректирующий "пинок" - "паузу" контроллеру НИ...
snmar4enko. Присоединяюсь к словам Dmitrysh - вы действительно очень позитивный, потрясающе трудоспособный человек. Вы генерируете стОящие мысли и к тому же почти мгновенно их реализуете и в железе и в коде! Вы таки принуждаете задуматься, взять в руки измерительные приборы и разобраться, что же в самом деле происходит при работе наших железок :). Прошу вас, если существует такая возможность - не покидайте нас!
Здесь, на сайте Alexandr есть раздел, позволяющий некоторого рода коммерческую составляющую. Нужно просто им заняться и привести наши проекты к подобающему виду - тема популярная, возможно узлы, готовые модули-контроллеры типа All-in-One с поддержкой обновлений прошивок, ещё какие-то интересные девайсы - будут востребованы, если будет нормальное их описание и доступная стоимость...
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
|
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
fedorchuk007 | Дата: Среда, 18.07.2018, 07:55 | Сообщение # 163 |
Сержант
Группа: Пользователи
Сообщений: 24
Статус: Offline
| snmar4enko Нас покинул?
|
|
|
Пользователи поблагодарившие fedorchuk007 за этот пост: |
|
|
Cinema | Дата: Воскресенье, 19.08.2018, 20:14 | Сообщение # 164 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| fedorchuk007 Если интерес ещё теплится в вас, предлагаю тестировать немного доработанную и "причёсанную" мною версию скетча 2.0.9. Изменения прописаны в текстовых файлах.Добавлю вложения немного позже, т.к. обнаружил несколько своих ошибок.
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
Сообщение отредактировал Cinema - Вторник, 21.08.2018, 14:46 |
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
Cinema | Дата: Воскресенье, 19.08.2018, 20:25 | Сообщение # 165 |
Генерал-майор
Группа: Проверенные
Сообщений: 618
Статус: Offline
| По поводу резистивной аналоговой клавиатуры и её настройки под скетч, цитирую SOLOway: Цитата На время экспериментов собрал аналоговые кнопки с этого ресурса: Из-за некоторого разброса номиналов использованных сопротивлений пришлось поправить под себя значения кнопок в скетче, т.к. не управлялись 4 из 5 кнопок. Залил скетч с того ресурса в arduino Mega2560 и в serial-мониторе выяснил реальные значения. В строке else if (val < 500) return 4; заменил < 500 на < 510, т.к. реально отдавалось значение 506 и монитор выдавал, что нажата кнопка 3, у которой строка выглядит так else if (val < 800) return 3; Архив прилагаю.Добавлено (19.08.2018, 20:29) --------------------------------------------- Прошу в обязательном порядке указывать, какие нагреватели используются при тестировании и где производится установка датчиков - без этих сведений корректно ответить по поводу возможных недоработок будет невозможно, т.к. автор не мог тестировать скетч на всех вариантах и комбинациях конструктивов станций.
"Опыт — это то, что получаешь, не получив того, что хотел" © интернет
|
|
|
Пользователи поблагодарившие Cinema за этот пост: |
|
|
|