Millis не могу осилить.

taxiiiii
Offline
Зарегистрирован: 07.03.2021

Всем сдрасти.
Пытаюсь уже второй день заставить диод на 13й ноге мигать с функцией милис так чтобы он например одну секунду был выключен, а 100 миллисекунд горел.
Это должно повторяться постоянно. В идеале диод должен начать моргать не сразу, а скажем через две секунды после включения Ардуино.
Подскажите пожалуйста где можно найти пример.
С шимом разобрался, а вот с пульсацией только delay могу.

Раньше с микроконтроллерами не занимался, только в детстве в начале 90х на радио кружок ходил.

taxiiiii
Offline
Зарегистрирован: 07.03.2021

taxiiiii пишет:
Всем сдрасти. Пытаюсь уже второй день заставить диод на 13й ноге мигать с функцией милис так чтобы он например одну секунду был выключен, а 100 миллисекунд горел. Это должно повторяться постоянно. В идеале диод должен начать моргать не сразу, а скажем через две секунды после включения Ардуино. Подскажите пожалуйста где можно найти пример. С шимом разобрался, а вот с пульсацией только delay могу. Раньше с микроконтроллерами не занимался, только в детстве в начале 90х на радио кружок ходил.

 

#define LED 13
long unsigned int start;
long unsigned int interval = 1000;
 
boolean statusLED;
 
 
void setup() {
  // put your setup code here, to run once:
pinMode (LED, OUTPUT);
 
 
 
}
 
void loop() {
  // put your main code here, to run repeatedly:
if (millis () - start >= interval)
{
  statusLED = !statusLED;
  digitalWrite (LED, statusLED);
  start = millis();
}
 
 
}
AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

Для начала вставьте код по правилам форума.

taxiiiii
Offline
Зарегистрирован: 07.03.2021

#define LED 13
long unsigned int start;
long unsigned int interval = 1000;

boolean statusLED;


void setup() {
  // put your setup code here, to run once:
pinMode (LED, OUTPUT);



}

void loop() {
  // put your main code here, to run repeatedly:
if (millis () - start >= interval)
{
  statusLED = !statusLED;
  digitalWrite (LED, statusLED);
  start = millis();
}


}
taxiiiii
Offline
Зарегистрирован: 07.03.2021

Много чего в коде менял, но так как хочется не работает.
Пробовал по нескольким видео с Ютуба.

Купил набор для таких как я, но он ещё не пришёл. Руки чешутся.

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

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

Вы же понимаете, что делает приведённый Вами код? И какая переменная "отвечает" за время горения светодиода? Вот её и надо менять.

taxiiiii
Offline
Зарегистрирован: 07.03.2021

Нет я не понимаю.

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

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

 

taxiiiii
Offline
Зарегистрирован: 07.03.2021

Вы наверное не читали мое первое сообщение.
Прочтите ещё раз.
Если вам нескем поговорить то купите попугайчиков.

А тут можете идти лесом.

Удачи вам и в ваших начинаниях.

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

Ваша задача специфическая, а значит - откуда взяться примеру?

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

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

taxiiiii пишет:
Раньше с микроконтроллерами не занимался

вот и дальше не занимайся.  купи папугайчиков.

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Вам же нужны разные интервалы, а вы уперлись в один и тот же для обеих фаз. Нужно изменять интервал в зависимости от состояниям светодиода. Добавьте перед 23 строкой 

if (statusLed)
  interval = 100;
else
  interval = 1000;

и получите то, что хотите

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

v258 пишет:

Вам же нужны разные интервалы, а вы уперлись в один и тот же для обеих фаз. Нужно изменять интервал в зависимости от состояниям светодиода. Добавьте перед 23 строкой 

if (statusLed)
  interval = 100;
else
  interval = 1000;

и получите то, что хотите

Минус - мой.

IMHO хамство должно пресекаться, а не поощряться.

Moro_500
Offline
Зарегистрирован: 08.03.2021

почитав немного форум, прихожу к выводу что тут в основном посылают книшки пачитать, вот ТС и психанул, это же раздел для новичков, чё вы такие злые

#define LED 13
unsigned long interval;               //таймер

void setup()
  {
    pinMode(LED,OUTPUT);
    interval=millis();                //это как delay(2000); только
    while(millis()-interval<2000){}   //без delay
  }

void loop()
  {
    if(digitalRead(LED)==HIGH)        //если не горит, переходим к else,
      {                               //а если горит, то...
        if(millis()-interval>100)     //если не прошло 100 мс, выходим,
          {                           //а если прошло, то...
            digitalWrite(LED,LOW);    //выключаем
            interval=millis();        //обновляем
          }
      }
    else                              //иначе
      {
        if(millis()-interval>1000)
          {
            digitalWrite(LED,HIGH);
            interval=millis();
          }
      }
  }

 

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

Moro_500 пишет:

 вот ТС и психанул, это же раздел для новичков, чё вы такие злые

1. Если некто "психанул" - это не повод "обнять и плакать", а повод пойти к доктору.

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

3. ТС сам, без принуждения, написал, что ничего не понимает в приведенном ИМ ЖЕ коде. И нахер он сюда приперся, в этом случае? Ты понимаешь разницу между "помочь понять" и "научить с нуля"?

Moro_500
Offline
Зарегистрирован: 08.03.2021

нубы шуршат, ардуинки трещат)

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

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

 

Ну и раз вы вылезли - разберем и ваш код. Вы что такое выложили? :) Мне нравятся комменты:

 while(millis()-interval<2000){}   //без delay

Да. без делей :) Но что толку? Вы в курсе. что такая конструкция так же блокирует МК, как задержка? - тогда зачем выпендриваться, так и пишите delay(2000);. А ваш код только путает нубов.

Ну и про основной цикл. Нафига две отдельных ветки? Что помешало все сделать в одной? Вам же v258 выше показал как.

Короче, незачет. Вылезли не по делу с индусским кодом :)))

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

Moro_500 пишет:

почитав немного форум, прихожу к выводу что тут в основном посылают книшки пачитать, вот ТС и психанул, это же раздел для новичков, чё вы такие злые

#define LED 13
unsigned long interval;               //таймер

void setup()
  {
    pinMode(LED,OUTPUT);
    interval=millis();                //это как delay(2000); только
    while(millis()-interval<2000){}   //без delay
  }

void loop()
  {
    if(digitalRead(LED)==HIGH)        //если не горит, переходим к else,
      {                               //а если горит, то...
        if(millis()-interval>100)     //если не прошло 100 мс, выходим,
          {                           //а если прошло, то...
            digitalWrite(LED,LOW);    //выключаем
            interval=millis();        //обновляем
          }
      }
    else                              //иначе
      {
        if(millis()-interval>1000)
          {
            digitalWrite(LED,HIGH);
            interval=millis();
          }
      }
  }

 

И в догонку. Тут принято учить новичков нормальному программированию, а не говнокоду. Если даешь пример, будь добр:

 - не использовать глобальные переменные без нужды (твой interval - должен быть static внутри loop());

 - не переопределять имеющиеся константы (уже есть LED_BUILTIN);

 - не использовать неточные типы. millis() возвращает uint32_t, а не unsigned long;

 - не писать тавтологии (digitalRead(LED)==HIGH) и (digitalRead(LED)) - одно и тоже.

 - не вызывать millis() сто раз подряд, а использовать промежуточное значение.

 - давать нормальные имена переменным, твой interval - не интервал.

короче нужно так:


const uint16_t StartDelay = 2000;
const uint16_t OnTime = 100;
const uint16_t OffTime = 1000;


void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
  static boolean isBlinking = false;
  static uint32_t oldMillis = millis();
  uint32_t newMillis = millis();
  boolean ledOn = digitalRead(LED_BUILTIN);

  if (not isBlinking and newMillis - oldMillis > StartDelay) {
    isBlinking = true;
    oldMillis = newMillis;
    digitalWrite(LED_BUILTIN, HIGH);
  }
  else if (isBlinking and ledOn and newMillis - oldMillis > OnTime) {
    digitalWrite (LED_BUILTIN, LOW);
    oldMillis = newMillis;

  }
  else if (isBlinking and not ledOn and newMillis - oldMillis > OffTime) {
    digitalWrite (LED_BUILTIN, HIGH);
    oldMillis = newMillis;

  }
}

 

Moro_500
Offline
Зарегистрирован: 08.03.2021

ТС-у нужно принципиально чтоб без delay, и чтоб начинала моргать только через 2 секунды после запуска, и она не блокирует МК, это пустой цикл, в который если надо, можно добавить какие-то действия.

Ну и про основной цикл. То есть вы предлагаете такую конструкцию?

void loop()
  {
    if(millis()-start>=interval)
      {
        statusLED = !statusLED;
        digitalWrite(LED,statusLED);
        start = millis();
      }
    if(statusLed)
    interval = 100;
    else
    interval = 1000;
  }

 

А вы в курсе, что это, собственно, и есть две ветки, только ещё и две лишние переменные, statusLed и start. Тогда зачем выпендриваться, садитесь, два.

taxiiiii
Offline
Зарегистрирован: 07.03.2021
Спасибо тем кто помогает разобраться.
Я готов читать и учиться. 
Конечно мне будет проще заказать код у кого-то, но мне интересно научиться самостоятельно.
С чего-то нужно начинать. 
Намного проще заплатить за час/день за разработку когда чем научиться самостоятельно.
Я понимаю что что-то делаю не так, много пробую.
И учиться я умею. Я в юнешестве переехал из России в другую страну и выучил тут язык, отучился на профессию, потом ещё отучился, теперь я мастер высшего разряда+ бакалавр, имею свое дело.
Я же эти знания не на Ютубе получил. Многие говорят что у меня не золотые руки.
 
Человек в начале темы не готов помочь. Например дать ссылку что почитать или направить на правильный путь.
Если бы я своих учеников так учил то ничего хорошего из этого бы не было.
Если не готов помочь промолчал нужно. 
Я ведь не еб,у мозг людям если не собираюсь помогать, я в таких случаях отказываюсь или на форуме просто не лезу. 
 
V258 спасибо. Приду с работы буду изучаь else.
 
Moro 500 спасибо за пример.
 
wdrakula я бы вас с удивлением корректировал как в 90х раньше, но к сожалению через интернет это не возможно.
 
B 707 я купил набор с книгой, но он ещё не пришёл. Буду учиться.
 
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

taxiiiii пишет:

Я понимаю что что-то делаю не так, много пробую.
Вот "не так" - это как раз то, что Вы "пробуете" вместо того, чтобы учиться.
 
Цитата:
Например дать ссылку что почитать или направить на правильный путь.
 
Правила сетевой этики требуют прежде, чем писать на форум, хотя бы 2-3 дня его почитать. 
Если бы Вы потрудились последовать этому правилу, у Вас бы были все необходимые ссылки.
 
Цитата:
Если бы я своих учеников так учил то ничего хорошего из этого бы не было.
 
Форум не может заменить учебное заведение. И не должен.
Форум - место, где люди отдыхают, а как изучение, так и преподавание - это работа. Не следует пытаться "нагрузить" посетителей форума работой.
 
Цитата:
Если не готов помочь промолчал нужно. 
В первую очередь следует придерживаться правил форума. Интересно, почему Вы считаете, что это требование на Вас не распространяется?
Есть вполне подходящая пословица про устав и чужой монастырь.
Цитата:
Я ведь не еб,у мозг людям
Да?
А чем Вы сейчас занимаетесь?
 
Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

taxiiiii пишет:

Спасибо тем кто помогает разобраться.
Я готов читать и учиться. 
Конечно мне будет проще заказать код у кого-то, но мне интересно научиться самостоятельно.
С чего-то нужно начинать. 
Намного проще заплатить за час/день за разработку когда чем научиться самостоятельно.
Я понимаю что что-то делаю не так, много пробую.
И учиться я умею. Я в юнешестве переехал из России в другую страну и выучил тут язык, отучился на профессию, потом ещё отучился, теперь я мастер высшего разряда+ бакалавр, имею свое дело.
Я же эти знания не на Ютубе получил. Многие говорят что у меня не золотые руки.
 
 
   Вы язык тоже на примерах учили? На ютубе? Или на форумах голову людям еб,али "погогите, я тупой, не знаю буквы, но разбираться в них не хочу, дайте готовые перевод..." и т.д. Или хотя бы самоучитель прочитали для начала? С чего вы взяли, что подходы к изучению, скажем, немецкого и С++ должны отличаться? Если вы не понимаете, что у вас там накалякано, ну куда вы дальше лезете? Возьмите паузу, разберитесь с азами. Вам на это прямо указали, вы ответили хамством.
   Вам тут никто ничего не должен. Учить за вас элементарные основы языка никто не будет. Сами не хотите - миллиарды людей на земле живут без знания языков программирования и все хорошо у них. Что это за маниакальная шиза, моргнуть этим гребаным светодиодом любой ценой? Зарплату вам прибавят после этого? 
И да, если даже посторонние вам говорят, что вы рукожоп, может вам пока рано новые горизонты для себя открывать? Еще есть над чем существующим поработать.
taxiiiii
Offline
Зарегистрирован: 07.03.2021

Может ссылку кто даст с чего начать? 

Язык я русский плохо знаю это да.

Зарплату я сам себе выплачиваю.

Тем кто не должен можно идти мимо, я спросил помощь а помочь или нет это каждый сам решает.

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

Может лучше сделать вид что вас рядом нет?

taxiiiii
Offline
Зарегистрирован: 07.03.2021

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

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

taxiiiii пишет:

Может лучше сделать вид что вас рядом нет?

На твой вопрос тебе ответили. Даже с кодом и даже я (бес попутал!). Список книг - в прикрепленной теме в Песочнице, читать умеешь? Ну хоть по слогам?

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

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

taxiiiii пишет:

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

Самокритичненько. 

taxiiiii
Offline
Зарегистрирован: 07.03.2021

wdrakula пишет:

taxiiiii пишет:

Может лучше сделать вид что вас рядом нет?

На твой вопрос тебе ответили. Даже с кодом и даже я (бес попутал!). Список книг - в прикрепленной теме в Песочнице, читать умеешь? Ну хоть по слогам?

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

Такое чувство что кроме как писать вы ничего не можете.

Лесом....

taxiiiii
Offline
Зарегистрирован: 07.03.2021

Вообще как-то странно тут у вас на форуме.

Живёте как звери, всё тут у вас не по человечески. 

Раздел для новичков, а тема по созданию новых тем в общем форме. 

Поиск убогий.

На людей многие кидаются. 

Под мобильные устройства сайт не заточен.

 

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

Да сгинь ты уже отсюда. Тут же плохо, Зачем приперся, убогий?

taxiiiii
Offline
Зарегистрирован: 07.03.2021

wdrakula пишет:

Да сгинь ты уже отсюда. Тут же плохо, Зачем приперся, убогий?

Это ты убогий.

Moro_500
Offline
Зарегистрирован: 08.03.2021

Сколько пафоса, жесть.

wdrakula пишет:

Даже с кодом и даже я (бес попутал!).

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

Но должен отметить, вы ,в отличии от остальных комментаторов, кроме того что пытаетесь здесь самоутвердиться и поучить как жить, ещё и по делу что-то подсказываете и приводите примеры. Моё почтение.

taxiiiii
Offline
Зарегистрирован: 07.03.2021

wdrakula пишет:

Да сгинь ты уже отсюда. Тут же плохо, Зачем приперся, убогий?

По интернету смелый смотрю.
На улице наверное сразу обдалаешся

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

wdrakula пишет:

короче нужно так:


const uint16_t StartDelay = 2000;
const uint16_t OnTime = 100;
const uint16_t OffTime = 1000;


void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
  static boolean isBlinking = false;
  static uint32_t oldMillis = millis();
  uint32_t newMillis = millis();
  boolean ledOn = digitalRead(LED_BUILTIN);

  if (not isBlinking and newMillis - oldMillis > StartDelay) {
    isBlinking = true;
    oldMillis = newMillis;
    digitalWrite(LED_BUILTIN, HIGH);
  }
  else if (isBlinking and ledOn and newMillis - oldMillis > OnTime) {
    digitalWrite (LED_BUILTIN, LOW);
    oldMillis = newMillis;

  }
  else if (isBlinking and not ledOn and newMillis - oldMillis > OffTime) {
    digitalWrite (LED_BUILTIN, HIGH);
    oldMillis = newMillis;

  }
}

Думаю чего не хватает? Begin и end жешь!)))))

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

Moro_500 пишет:

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

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

1. Куча переменных.

Константы не занимают память, а обрабатываются на этапе компиляции. Итого у меня 5 байт на стеке и 5 байт статических. Память следует использовать так, чтобы было удобно. Свободную память на привозе не продашь. МК - не компьютер, где свободная память достанется другим процессам, тут нет других.

2. Ты вероятно не знаешь, как по стандарту работают логические операторы в if. Про конъюнкции проверяется первое условие и, если оно ложно, остальные не проверяются. Итог  можешь посчитать.

---------------------------------

Если готов учиться - тут всегда помогут. У тебя реально только две грубые ошибки, остальное моя вкусовщина:

1. вызов миллис без промежуточной переменной (такой стиль тебя вообще когда-нибудь приведет к бессонной неделе в поисках глюка);

2. Глобальная переменная interval (лишние глобалы - очень частый источник ошибок, старайся глобалы использовать вообще в исключительных случаях, когда без них никак нельзя).

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

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

taxiiiii пишет:

Может ссылку кто даст с чего начать? 

Единственная прикрепленная тема в том же разделе, где Вы создали свою: 

http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/pesochnitsa-dl...

Как ее можно не заметить?

taxiiiii
Offline
Зарегистрирован: 07.03.2021

andriano пишет:

taxiiiii пишет:

Может ссылку кто даст с чего начать? 

Единственная прикрепленная тема в том же разделе, где Вы создали свою: 

http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/pesochnitsa-dl...

Как ее можно не заметить?


Большое спасибо. Буду читать книги и учиться. Мне это и надо

Moro_500
Offline
Зарегистрирован: 08.03.2021

wdrakula, а что, мы уже на ты? Хорошо, не буду спорить насчёт переменных, знания поверхностные, хотя, как я понимаю, у тебя статических 5 байт а у меня 4, но:

1. Зачем у тебя каждый цикл выполняется этот лишний первый if, когда можно было сделать эту задержку 2 секунды вне цикла, первый if выполнится всего 1 раз при включении, а дальше будет каждый цикл бесполезно выполняться, тратить процессорное время, код красивый, но не эффективный, хотя, даже и не красивый, каша какая-то запутанная.

2. Миллис в моём примере, так же как и в твоём, вызывается каждый цикл, тысячи раз в секунду, только плюс ещё каждое включение-выключение светодиода, получается тысячи + 2 раза в секунду, преклоняюсь перед твоим мастерством оптимизации.

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

Moro_500 пишет:

wdrakula, а что, мы уже на ты? Хорошо, не буду спорить насчёт переменных, знания поверхностные, хотя, как я понимаю, у тебя статических 5 байт а у меня 4, но:

1. Зачем у тебя каждый цикл выполняется этот лишний первый if, когда можно было сделать эту задержку 2 секунды вне цикла, первый if выполнится всего 1 раз при включении, а дальше будет каждый цикл бесполезно выполняться, тратить процессорное время, код красивый, но не эффективный, хотя, даже и не красивый, каша какая-то запутанная.

2. Миллис в моём примере, так же как и в твоём, вызывается каждый цикл, тысячи раз в секунду, только плюс ещё каждое включение-выключение светодиода, получается тысячи + 2 раза в секунду, преклоняюсь перед твоим мастерством оптимизации.

Я затрахался объяснять молодежи. В сети принято (было) обращение на "ты", а "вы" считалось приглашением к срачу. Постепенно сетевые обычаи забились, но я дядька старый, я этот инет еще строил и привычки менять не собираюсь.

1. Тут я не стал тебе писать, но придется, как вижу. НЕЛЬЗЯ в сетапе писать что-то, не относящееся к настройкам. Так очень многие делают, но лучше поставить флаг в лупе, он займет один такт на проверку и два на переход. Наполнение сетапа мусором рано или поздно приведет к ошибкам. Либо нужно быть ну оч-ччень внимательным человеком.

2. Ты спорить начал? Я ж и нахер пошлю.;)) Просто потом ты вставишь между вызовами миллис что-то долгое, какой-нибудь сетевой вызов, работу  с сериалом и пр. А изменить схему программы забудешь, потому что привык к говнокоду. Говнокод сам по себе работает и даже, иногда, быстрее нормального. Но "говнокодер" повторяет привычные приемы, когда этого уже делать нельзя. Не нужно учиться говнокодить, это потом само придет. Пиши правильно сразу. Особенно пока учишься.

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

Дракула, оставь их... нафига на них время тратить? день пройдет, ветерок подует - и нет их....

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

b707 пишет:

Дракула, оставь их... нафига на них время тратить? день пройдет, ветерок подует - и нет их....

Да чот настроение плохое, ноги ноют  - погода штоле меняется? Снег насыпался, как же он задрал! В среду мне в ГИМС утром ехать - теорию сдавать, а для меня поездка в Москву - пытка каждый раз! А ГИМС в центре (на Чистых прудах), на машине невозможно, придется на электричке. А на электричке в гребаной маске, будь она неладна со всеми ковидами! Плюс еще Чип и Дип надул с деталькой и на почту не отвечает... Короче - бардак и в душе раздрай! Наданапиццо!

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

wdrakula пишет:

Да чот настроение плохое, ноги ноют  - погода штоле меняется? Снег насыпался, как же он задрал!

Короче - бардак и в душе раздрай! Наданапиццо!

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

Moro_500
Offline
Зарегистрирован: 08.03.2021

wdrakula, этот лишний первый if процессор будет каждый цикл:

1. Сравнивать isBlinking

2. Вычитать oldMillis из newMillis

3. Сравнивать результат со StartDelay

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

wdrakula пишет:

НЕЛЬЗЯ в сетапе писать что-то, не относящееся к настройкам. Так очень многие делают, но лучше поставить флаг в лупе

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

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

Moro_500 пишет:

wdrakula, этот лишний первый if процессор будет каждый цикл:

1. Сравнивать isBlinking

2. Вычитать oldMillis из newMillis

...дальше тупизна...

Если ты настолько туп, что не смог запомнить то, что написано парой постов выше, то нужно выбирать профессию дворника. По стандарту языка C++ условия, соединенные конъюнкцией - (на твоем языке - И), вычисляются слева направо, пока не встретится false (ЛОЖЬ - на твоем языке). Таким образом, как только isBlinking станет истиной, никто не будет вычислять ничего, кроме (not isBlinking).

В целом - нахер. Форум не место для дискуссий новичков. Твоя задача или слушать, что говорят или идти нахер. Мне совершенно насрать - как ты будешь потом писать код и будешь ли вообще. Тебе сказали - как надо, на этом мои педагогические обязательства перед собой выполнены. Ты - не мой студент, делай как хочешь.

taxiiiii
Offline
Зарегистрирован: 07.03.2021

Конечно сейчас меня не интересует как написать абсолютно правильно.
У меня в планах первый проект и он не должен быть сложным.
Лампочкой помаргал, шим тоже получился и это получится. Чем проще тем лучше.

Думаю через пару дней получится написать самому или с вашей помощью.

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

taxiiiii пишет:
Думаю через пару дней получится написать самому или с вашей помощью.

Однозначно лучше самому пытаться. Сюда за помощью целесообразно обращаться, если столкнешься с проблемой, решение которой не описано однозначно в букварях по С++. То есть с действительно сложной программно-аппаратной ситуацией. Но тогда и тон разговора будет совсем другой, поверь. И помощь будет. Но так же поверь, 99,9% всех проблем начинающих ардуинщиков можно решить чтением вышеуказанного букваря.  

Moro_500
Offline
Зарегистрирован: 08.03.2021
wdrakula, да, ты прав, в этом лишнем if будет выполняться только проверка isBlinking.
 
Моя профессия - ИП, свой автокран, и давай ты бомжара не будешь мне давать советы какую мне нужно выбирать профессию, и если ты настолько туп, что не смог понять что выполнение проверки этого isBlinking как не крути ЛИШНЯЯ, то моя задача внимательно почитать код пафосных мастеров, и если не найду косяков, то запомнить на всю жизнь как пишется идеальный код, а если найду, то ткнуть носом его величество в его говнокод.

wdrakula пишет:

false (ЛОЖЬ - на твоем языке)

Ого, чо серьёзно? А на твоём?

wdrakula пишет:

Форум не место для дискуссий новичков.

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

bwn
Offline
Зарегистрирован: 25.08.2014

Moro_500 пишет:

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

Это так, от модератора:

"8. Здесь действует "дедовщина", бездоказательные пререкания будут пресекаться в пользу "старослужащего". Причина: уровень подготовки старожилов известен, ваш, еще нужно подтвердить."

Moro_500
Offline
Зарегистрирован: 08.03.2021

bwn, уровень подготовки дедов здесь как я посмотрю "доверяй но проверяй". Причина: "правильный говнокод".

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

Moro_500 пишет:

bwn, уровень подготовки дедов здесь как я посмотрю "доверяй но проверяй". Причина: "правильный говнокод".

у тебя и такова нет

Moro_500
Offline
Зарегистрирован: 08.03.2021

DetSimen пишет:

у тебя и такова нет

пост #13

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Moro_500 пишет:

DetSimen пишет:

у тебя и такова нет

пост #13

Ну да. ТС хотел, чтобы светодиод начинал мигать через две секунды после включения питания, а ты вообще ардуину на две секунды застопорил. Молодец, че )))