Диммер

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Ппц вот это говнокод, прям не говнокод, а ГОВНОКОДИЩЕ.
Зачем тут CyberLib ?
Для чего и RTCLib и DS3231.h ?
Зачем столько кейсов ?
Весь алгоритм реализуется десятком строк.

Denisblr
Offline
Зарегистрирован: 23.04.2021

Kakmyc пишет:
Ппц вот это говнокод, прям не говнокод, а ГОВНОКОДИЩЕ. Зачем тут CyberLib ? Для чего и RTCLib и DS3231.h ? Зачем столько кейсов ? Весь алгоритм реализуется десятком строк.

Ксли Вы такой грамотный и давно этим занимаетесь, напишите код, в 10 строк который будет работать, я не против буду Ваш код использовать

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Denisblr пишет:

Ксли Вы такой грамотный и давно этим занимаетесь, напишите код, в 10 строк который будет работать, я не против буду Ваш код использовать

Без проблем.
Размещайте заказ в "Ищу исполнителя"

SergeiL
SergeiL аватар
Offline
Зарегистрирован: 05.11.2018

Kakmyc пишет:
Ппц вот это говнокод, прям не говнокод, а ГОВНОКОДИЩЕ.
А вы свой то код покажите, прежде чем говорить про Говнокодище...

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

SergeiL пишет:

Kakmyc пишет:
Ппц вот это говнокод, прям не говнокод, а ГОВНОКОДИЩЕ.
А вы свой то код покажите, прежде чем говорить про Говнокодище...

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

Основной признак Г-кода - это когда программа, в принципе, работает, но делает при этом кучу ненужных действий, а исходник содержит много лишних строк и кривых конструкций. срабатывающий не по задумке автора, а по воле случая, например вот:

 

for (power; power <= 100; power+1,6)
      {
        Serial.println("");
        dimmer.setPower(power);        
        Serial.print(dimmer.getPower());
        delay(60000);

      }

Ну а прочее мелочи. Например то, что код непрерывно, извиняюсь, срет в монитор строчкой "Время 8 часов" - тысячи раз в секунду целый час с 8:00 до 8:59:59, после чего начинает так же бесконечно печатать "Время 9 часов"...

 

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

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Самый трындец, что все switch/case, можно заменить пятью строками (при использовании sprintf, тремя);

Serial.print("время ");
Serial.print(now.hour());
if((now.hour()%10)==1)Serial.println("час");
else if((now.hour()%10)>1&&(now.hour()%10)<6)Serial.println("часа");
else Serial.println("часов");

 

SergeiL
SergeiL аватар
Offline
Зарегистрирован: 05.11.2018

Я просто хотел сказать, что все в мире относительно.

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

Мне просто слово "Говнокод" несколько режет слух, именно по этой причине.

ТС же пытается разобраться, и делает это как может.

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

SergeiL пишет:

Код любителя профессионалу кажется говнокодом, а возможно и код профессионала можно переписать более оптимально.

по-моему, тут уже не до оптимальности... Как вам цикл for. что я процитировал в прошлом сообщении?

SergeiL
SergeiL аватар
Offline
Зарегистрирован: 05.11.2018

b707 пишет:

по-моему, тут уже не до оптимальности... Как вам цикл for. что я процитировал в прошлом сообщении?

Ну а Вы свой первый код без ошибок написали?

Я свой код не люблю выкладывать именно по причине того, что найдется человек, который раскритикует его, и я потом соглашусь с ним... или нет.

Вот взять те же вертикальные счетчики на форуме Амперки. Сколько было критики... 

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

SergeiL пишет:

Ну а Вы свой первый код без ошибок написали?

Я свой код не люблю выкладывать именно по причине того, что найдется человек, который раскритикует его, и я потом соглашусь с ним... или нет.

Вот взять те же вертикальные счетчики на форуме Амперки. Сколько было критики... 

а что тогда обсуждать на программистких форумах, если про чужой код писать только хорошее? :)

SergeiL
SergeiL аватар
Offline
Зарегистрирован: 05.11.2018

b707 пишет:

а что тогда обсуждать на программистких форумах, если про чужой код писать только хорошее? :)

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

А любитель - ну ну как может так и пишет, ему нужно помочь, подсказать. 

 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

SergeiL пишет:

Мне просто слово "Говнокод" несколько режет слух,

Нет, ну там реальный говнокод. И дело ведь не в ошибках, дело в архитектуре, если это так можно назвать. Понятно, что для новичка (в хорошем смысле)) это абсолютно естественно такую херню ляпать, но если в это не тыкать носом, новичок не продвинется в развитии или будет это делать ооочень медленно. Как некоторые европейские дети, которые до школы в штаны срут. Знаю о чем говорю, несколько раз выкладывал тут свой говнокод на всеобщее поругание. Вынес из этого не меньше, чем из КиР и Шилдта. Главное не бычить, а пытаться понять смысл происходящего

Denisblr
Offline
Зарегистрирован: 23.04.2021

b707 пишет:

SergeiL пишет:

Kakmyc пишет:
Ппц вот это говнокод, прям не говнокод, а ГОВНОКОДИЩЕ.
А вы свой то код покажите, прежде чем говорить про Говнокодище...

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

Основной признак Г-кода - это когда программа, в принципе, работает, но делает при этом кучу ненужных действий, а исходник содержит много лишних строк и кривых конструкций. срабатывающий не по задумке автора, а по воле случая, например вот:

 

for (power; power <= 100; power+1,6)
      {
        Serial.println("");
        dimmer.setPower(power);        
        Serial.print(dimmer.getPower());
        delay(60000);

      }

Ну а прочее мелочи. Например то, что код непрерывно, извиняюсь, срет в монитор строчкой "Время 8 часов" - тысячи раз в секунду целый час с 8:00 до 8:59:59, после чего начинает так же бесконечно печатать "Время 9 часов"...

 

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

На сегодняшний день я уже знаю что можно избавиться от кейсов, а вот может вы скажите как можно посмотреть отслеживание кода, и если Вы ВНИМАТЕЛЬНО читали, то я писал, что ПРИНТ ставил специально для того, чтобы Я знал что происходит в данный момент в программе!!!

Green
Offline
Зарегистрирован: 01.10.2015

Денис, что бы не сыпало в терминал, напиши крошечные функции и используй. Типа:

  if (once())
    Serial.println("Once");

  if (change(v))
    Serial.println(v);

  if (every(1000))
    Serial.println("Every sec");


 

Denisblr
Offline
Зарегистрирован: 23.04.2021

Может кто поможет ещё в одном вопросе. Код который я написал - рабочий, но он очень хорошо работает только с лампой накаливания, а с диодным прожектором он работать не хочет, не знаю правда почему((( прожектор начинает трещать и мерцать. При уставка мощности в 75 на выходе диммера 213 вольт. Но если я включаю диммер через сигнал HIGH все нормально работает, только я не знаю как это задимировать. 

Denisblr
Offline
Зарегистрирован: 23.04.2021

Green пишет:

Денис, что бы не сыпало в терминал, напиши крошечные функции и используй. Типа:

  if (once())
    Serial.println("Once");

  if (change(v))
    Serial.println(v);

  if (every(1000))
    Serial.println("Every sec");


 

Спасибо. Но то, что сыпет в терминал я делал специально, когда программа заработает так как надо я это все уберу. Это мне надо, чтобы видеть промежуточный итог и куда программа заводит. Тут в программе же нет отладки как в visual studio. 

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Denisblr пишет:

Может кто поможет ещё в одном вопросе. Код который я написал - рабочий, но он очень хорошо работает только с лампой накаливания, а с диодным прожектором он работать не хочет, не знаю правда почему((( прожектор начинает трещать и мерцать. При уставка мощности в 75 на выходе диммера 213 вольт. Но если я включаю диммер через сигнал HIGH все нормально работает, только я не знаю как это задимировать. 

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

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Ну, не диммируемый прожектор любым способом диммировать бесполезно ;)).
ТС! Существуют прожекторы, с указанием на такую возможность. Дорогие. Ищи их.

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

Denisblr пишет:

На сегодняшний день я уже знаю что можно избавиться от кейсов

кейсы ладно... А вот этот цикл поправили, надеюсь?

for (power; power <= 100; power+1,6)
      {
        Serial.println("");
        dimmer.setPower(power);        
        Serial.print(dimmer.getPower());
        delay(60000);

      }

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

b707 пишет:

кейсы ладно... А вот этот цикл поправили, надеюсь?

for (power; power <= 100; power+1,6)

Руки прочь от произведения искусства! 

А то некоторое "реставраторы", прости Господи, так и норовят Венере руки приделать!

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

ЕвгенийП пишет:

for (power; power <= 100; power+1,6)

Руки прочь от произведения искусства! 

Распечатаю - на стенку повешу. Ещё бы сообщения об ошибках добавить - ну, думаю, идеал недостижим.

 

Denisblr
Offline
Зарегистрирован: 23.04.2021

ЕвгенийП пишет:

b707 пишет:

кейсы ладно... А вот этот цикл поправили, надеюсь?

for (power; power <= 100; power+1,6)

Руки прочь от произведения искусства! 

А то некоторое "реставраторы", прости Господи, так и норовят Венере руки приделать!

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

Genri5
Offline
Зарегистрирован: 31.05.2016

Denisblr пишет:

Может кто поможет ещё в одном вопросе. Код который я написал - рабочий, но он очень хорошо работает только с лампой накаливания, а с диодным прожектором он работать не хочет, не знаю правда почему((( прожектор начинает трещать и мерцать. При уставка мощности в 75 на выходе диммера 213 вольт. Но если я включаю диммер через сигнал HIGH все нормально работает, только я не знаю как это задимировать. 

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