Большие часы на адресных светодиодах WS2812B

Вячеслав_45

★★✩✩✩✩✩
10 Июл 2020
72
64
Про дату переход на вывод даты в 269 строке
EepromTick()) там условие в самом начале
С остальным согласен, в будущем поправлю, но а пока задача стояла чтоб в 168-ю влезло
 
  • Лойс +1
Реакции: bort707

Вячеслав_45

★★✩✩✩✩✩
10 Июл 2020
72
64
@bort707,
Консультацию можно.
class button сам не писал, позаимствовал, так как не совсем разобрался с классами внёс изменения в виде static byte key так как нужен был флаг в виде 0 или 1 в строку 276. if (mode < 20 && button::key)
при нажатии любой кнопки, сделал как мог. Есть ли альтернатива, более правильная.
Хочу освоить классы, и есть ли смысл перевести например DigitOut в класс.
 

bort707

★★★★★★✩
21 Сен 2020
3,295
958
class button сам не писал, позаимствовал, так как не совсем разобрался с классами внёс изменения в виде static byte key так как нужен был флаг в виде 0 или 1 в строку 276. if (mode < 20 && button::key)
не очень понял, что вы хотели сделать. Этот key у вас один общий на все кнопки. Или вы так и хотели?
 

Вячеслав_45

★★✩✩✩✩✩
10 Июл 2020
72
64
@bort707,
Да так и хотел сделать, просто реализация правильная или как-то по другому надо было сделать
 

bort707

★★★★★★✩
21 Сен 2020
3,295
958
@bort707,
Да так и хотел сделать, просто реализация правильная или как-то по другому надо было сделать
Посмотрел, в принципе вроде ОК (хотя я сам имею небольшой опыт со статическими членами класса)
Только не вполне понял, зачем эта переменная имеет тип byte, если по смыслу это boolean
 

maksland

★★★✩✩✩✩
13 Янв 2019
615
144
Omsk
А я пока закажу платы под датчик и буду рисовать новый корпус... и универсальный (надеюсь скетч Вячеслава потом плавно перекочует на esp8266 :) )

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

Вложения

Изменено:

начинающий

★✩✩✩✩✩✩
13 Дек 2020
130
10
Здравствуйте уважаемые спецы по программированию. Созрел вопрос об упрощении корректировки точного времени в часах из #482 Можно ли к скетчу из #482 код , ссылка , прикрутить кнопку обнуления секунд (без прибавления минуты) ? Если да, то подскажите пожалуйста, что и в какой строке скетча нужно изменить либо что то добавить к уже имеющемуся скетчу? Или может кто нибудь возьмется подкорректировать скетч из #482 ? Уверен, благодарных будет много, не только я.
 
Изменено:

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
При нажатии кнопки установить секунды в нули, сложности нету. Указывайте не просто номер сообщения, а прикрепляйте ссылку, чтобы с мобильного проще было открыть, а не искать)
 
  • Красота! +2
Реакции: начинающий

начинающий

★✩✩✩✩✩✩
13 Дек 2020
130
10
О!, точно, тут думаю подойдет чтото вроде IF, если какая то из выше описаных кнопок нажата на время меньше или больше заданного программой, то обнулить секунды, иначе - ничего не делать или выполнить функцию по умолчанию. Думаю как то так, помогите реализовать в виде фрагмента скетча.
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
Если использовать удержание, то надо использовать библиотеку gyver button)
 
  • Красота! +2
Реакции: начинающий

начинающий

★✩✩✩✩✩✩
13 Дек 2020
130
10
но, вот в том то и проблема, что мои познания в программировании заканчиваются где то на уровне школьной программы по бейсику, поэтому и обратился за помощью к знающим специалистам. Ну или в крайнем случае может предусмотреть для этой функции отдельную кнопку, кнопок ведь не дефицит в стране, были бы свободные пины для ее подключения.
 
Изменено:

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
Тогда жди, может кто подскажет. Тут надо с ПК сидеть) Переделывать код)
Если просто обнулить при нажатии специальной для этого кнопки, то код будет простым)
 
  • Красота! +2
Реакции: начинающий

начинающий

★✩✩✩✩✩✩
13 Дек 2020
130
10
Если просто обнулить при нажатии специальной для этого кнопки, то код будет простым)
Вот думаю, что для минимизации трудоемкости по переделке кода, лучше конечно для этого дела задействовать отдельную кнопку, обозвать ее к примеру time reset. Прошу помощи у уважаемых гуру по программированию, если кто может, подправьте скетч под кнопку "обнуление секунд", пожалуйста, уверен, что многие форумчане обрадуются новому функционалу.
 
Изменено:

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
Оформи код соответствующим тэгом
void SecondReset() {
int buttonR = digitalRead(4);
if (buttonR == LOW) {
delay(100);
tmElements_t Now;
RTC.read(Now);
int second = Now.Second;
if (buttonR == LOW) {
Now.Second = 0;
}
RTC.write(Now);
}
}
Как-то так)
 
  • Красота! +2
Реакции: начинающий

начинающий

★✩✩✩✩✩✩
13 Дек 2020
130
10
Так правильно будет? Фрагмент кода из #482:
C++:
//======================================= Массив управляет кнопками с часами и минутами ===============================


void SecondReset() {

int buttonR = digitalRead(4);

if (buttonR == LOW) {

delay(100);

tmElements_t Now;

RTC.read(Now);

int second = Now.Second;

if (buttonR == LOW) {

Now.Second = 0;

}

RTC.write(Now);

}

}

void TimeAdjust() {

  int buttonH = digitalRead(2);

  int buttonM = digitalRead(3);

  if (buttonH == LOW || buttonM == LOW) {

    delay(100);//время реакции на нажатие

    tmElements_t Now;

    RTC.read(Now);

    int hour = Now.Hour;

    int minutes = Now.Minute;

    int second = Now.Second;

    if (buttonH == LOW) {

      if (Now.Hour == 23) {

        Now.Hour = 0;

      }

      else {

        Now.Hour += 1;

      };

    }

    else

    {

      if (Now.Minute == 59) {

        Now.Minute = 0;

      }

      else {

        Now.Minute += 1;

      };

    };

    RTC.write(Now);

  }

}


//Меняем эффекты

void fadeall() {

  for (int i = 0; i < NUM_LEDS; i++) {

    leds[i].nscale8(250);

  }

}
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
Без разницы куда вставлять) можно и так) подключай на любой свободный пин и пропиши его, я написал на D4
 
  • Красота! +2
Реакции: начинающий

начинающий

★✩✩✩✩✩✩
13 Дек 2020
130
10
ну что касается прописки номеров пинов тут проблем нет, просто макетка на работе, и о свободных пинах узнаю только завтра. Теперь пара вопросов по реализации: значит пины под кнопку задействовать только цифровые (Dn), хотя да, у кнопки ведь только два состояния единица и ноль, по любому цифра, удалять не нужно вдруг кому пригодится, второй вопрос о месте вставки блока опроса кнопки в фрагмент скетча: блок
void SecondReset() {
действительно может быть вставлен в любом месте скетча (разумеется не в разрыве отдельных программных блоков, а то каша получицца) или же есть какие то предпочтения, может вероятность правильной безотказной работы этого фрагмента кода все таки зависит от места где он расположен в теле основного скетча
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
Это все компилируется в машинный код, порядок функций не имеет значение)
 
  • Красота! +2
Реакции: начинающий

начинающий

★✩✩✩✩✩✩
13 Дек 2020
130
10
Что то с обнулением секунд не получается, посмотрел loop там ведь ни одна кнопка не прописана (хотел сделать по аналогии)
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@начинающий,
DSTcheck(); // Проверяем цветовые режимы
TimeAdjust(); // Проверяем время если сменилось на 1 цифру
 

начинающий

★✩✩✩✩✩✩
13 Дек 2020
130
10
@начинающий,
DSTcheck(); // Проверяем цветовые режимы
TimeAdjust(); // Проверяем время если сменилось на 1 цифру
И как туда воткнуть обнуление секунд, что то в этом блоке ни одна кнопка не описана, минуты, часы, смена цвета не въезжаю как прописать кнопку обнуления, подскажите пожалуйста.