Оптимизировать готовый рабочий код

maksmkv
Offline
Зарегистрирован: 07.04.2013

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

https://github.com/maksmkv/PT6961/blob/main/vse_rejimu_with_button_WORK.ino

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

Бесплатный совет я вам уже дал на амперке - изучите пример "блинк без делей" и сделайте по образцу.

Если не хотите думать сами - переделаю за 1500

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

maksmkv пишет:

Сделал проект - работает.
...

Может можно его как-то улучшить?

Для чего?

maksmkv
Offline
Зарегистрирован: 07.04.2013

Мне для "себя". Для общего развития. 

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

maksmkv пишет:

Для общего развития. 

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

maksmkv
Offline
Зарегистрирован: 07.04.2013

Я видел данный код. 

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

void loop()
{
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis > interval) {
    previousMillis = currentMillis; 
  printTime();
  receiveData();
  readKeyData(& newKeys);
 if (keys != newKeys) {
    keys = newKeys;
    if (keys & KEY_1) 
    {
     hourUP();
    }
    if (keys & KEY_2) 
    { 
      minuteUP();
    }
  }
  }
} 

 

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

Т.е. кто-то будет сидеть, чесать голову, собирать макет, проверять, исправлять, а вы будете смотреть - так представляете процесс?

maksmkv
Offline
Зарегистрирован: 07.04.2013

Дак это увлечение - с набегами ((( Но благодаря форумам и книгам - сделал простенькие проекты. 

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

maksmkv пишет:

Я видел данный код. 

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

потому что сделали какую-то хрень. Вот этот кусок с миллис надо вставить вместо КАЖДОЙ задержки в КАЖДОЙ функции, а не один раз поверх всего кода, как у вас

maksmkv
Offline
Зарегистрирован: 07.04.2013

Ок, спасибо. Переделаю. Еще один вопрос, когда пытаюсь считвыть кнопки функцией:

   digitalWrite(strobePin, LOW);  //
    digitalWrite(clockPin, LOW);
    digitalWrite(dataPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, 0x42);  // чтение данных
    delayMicroseconds(1);
     *data = shiftIn(DOUT, clockPin, LSBFIRST) + (shiftIn(DOUT, clockPin, LSBFIRST) << 8);
    digitalWrite(strobePin, HIGH);  //
    digitalWrite(clockPin, HIGH);
    digitalWrite(dataPin, HIGH);

 

Экран начинает на доли секунд мигать - как такое можно исправить???  СПАСИБО

 

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

О каком экране речь?

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

andriano пишет:

О каком экране речь?

Видимо ТС так называет шапочку из фольги...

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

Ну почему же! Оазис ЛЕД - кто ж его не знает.