Помогите разобраться с библиотекой iarduino_RTC
- Войдите на сайт для отправки комментариев
Ну точнее там в принципе все понятно. Вот только почему-то функция binktime() у меня не работает. Экран у меня стандартный 2х16 ардуиновский с I2C. Программа для обычных часов лежит на многих сайтах и там в момент установки времени должен мигать выбранный параметр (секунды, минуты, часы или там что другое). Так вот сами часы работают. Правда повозицца немного с кварцем пришлось. У меня была микросхемка ds1307, купил кварц в Чип и Дип, собрал на макетке - не работает. Повозился, в итоге нашел на старом медиацентре часовой кварт, впаял и все заработало. Так вот часы работают, но при установке не мигает устанавливаемы параметр. Тут вроде темка была, но там автор написал, что мол сам решил и проблема была в ошибке, но не написал в какой. Вот кусочек, каксающийся установки времени:
// Функция управления кнопками: void Func_buttons_control(){ uint8_t i=0; // watch.blinktime(VAR_mode_SET); // мигаем устанавливаемым параметром (если VAR_mode_SET больше 0) //Если часы находятся в режиме установки даты/времени if(VAR_mode_SET){ // Если нажата кнопка UP watch.blinktime(VAR_mode_SET); if(digitalRead(PIN_button_UP )){ while(digitalRead(PIN_button_UP)){delay(50);} // ждём пока мы не отпустим кнопку UP switch (VAR_mode_SET){ // инкремент (увеличение) устанавливаемого значения /* сек */ case 1: watch.settime(0, -1, -1, -1, -1, -1, -1); break; /* мин */ case 2: watch.settime(-1, (watch.minutes==59?0:watch.minutes+1), -1, -1, -1, -1, -1); break; /* час */ case 3: watch.settime(-1, -1, (watch.Hours==23?0:watch.Hours+1), -1, -1, -1, -1); break; /* дни */ case 4: watch.settime(-1, -1, -1, (watch.day==31?1:watch.day+1), -1, -1, -1); break; /* мес */ case 5: watch.settime(-1, -1, -1, -1, (watch.month==12?1:watch.month+1), -1, -1); break; /* год */ case 6: watch.settime(-1, -1, -1, -1, -1, (watch.year==99?0:watch.year+1), -1); break; /* д.н.*/ case 7: watch.settime(-1, -1, -1, -1, -1, -1, (watch.weekday==6?0:watch.weekday+1) ); break; } } // Если нажата кнопка DOWN if(digitalRead(PIN_button_DOWN)){ while(digitalRead(PIN_button_DOWN)){delay(50);} // ждём пока мы её не отпустим switch (VAR_mode_SET){ // декремент (уменьшение) устанавливаемого значения /* сек */ case 1: watch.settime(0, -1, -1, -1, -1, -1, -1); break; /* мин */ case 2: watch.settime(-1, (watch.minutes==0?59:watch.minutes-1), -1, -1, -1, -1, -1); break; /* час */ case 3: watch.settime(-1, -1, (watch.Hours==0?23:watch.Hours-1), -1, -1, -1, -1); break; /* дни */ case 4: watch.settime(-1, -1, -1, (watch.day==1?31:watch.day-1), -1, -1, -1); break; /* мес */ case 5: watch.settime(-1, -1, -1, -1, (watch.month==1?12:watch.month-1), -1, -1); break; /* год */ case 6: watch.settime(-1, -1, -1, -1, -1, (watch.year==0?99:watch.year-1), -1); break; /* д.н.*/ case 7: watch.settime(-1, -1, -1, -1, -1, -1, (watch.weekday==0?6:watch.weekday-1) ); break; } } // Если нажата кнопка SET if(digitalRead(PIN_button_SET)){ while(digitalRead(PIN_button_SET)){ // ждём пока мы её не отпустим delay(10); if(i<200){i++;}else{lcd.clear();} // фиксируем, как долго удерживается кнопка SET, если дольше 2 секунд, то стираем экран } if(i<200){ // если кнопка SET удерживалась меньше 2 секунд VAR_mode_SET++; // переходим к следующему устанавливаемому параметру if(VAR_mode_SHOW==1 && VAR_mode_SET>3){VAR_mode_SET=1;} // возвращаемся к первому устанавливаемому параметру if(VAR_mode_SHOW==2 && VAR_mode_SET>7){VAR_mode_SET=4;} // возвращаемся к первому устанавливаемому параметру }else{ // если кнопка SET удерживалась дольше 2 секунд, то требуется выйти из режима установки даты/времени VAR_mode_SET=0; // выходим из режима установки даты/времени } } //Если часы находятся в режиме вывода даты/времени }else{ // Если нажата кнопка SET if(digitalRead(PIN_button_SET)){ while(digitalRead(PIN_button_SET)){delay(10); // ждём пока мы её не отпустим if(i<200){i++;}else{lcd.clear();} // фиксируем, как долго удерживается кнопка SET, если дольше 2 секунд, то стираем экран } if(i<200){ // если кнопка SET удерживалась меньше 2 секунд lcd.clear(); // стираем экран VAR_mode_SHOW=VAR_mode_SHOW==1?2:1; // меняем режим вывода: дата/время }else{ // если if(VAR_mode_SHOW==1){VAR_mode_SET=1;} // если установлен режим вывода времени, то устанавливаемый параметр - секунды if(VAR_mode_SHOW==2){VAR_mode_SET=4;} // если установлен режим вывода даты, то устанавливаемый параметр - день } } } }
Я еще сейчас попробую в порт пигающее время вывести, может это с экраном что не такт.
Поможите кто знает!
А в порту мигает?
Да, только что проверил. В порту мигает. Значит что-то с дисплеем. Может частоту какую надо задать. Не ту что по умолчанию?
Брось каку и не подбирай с полу что попало - это лучший способ с нею разобраться.
Брось каку и не подбирай с полу что попало - это лучший способ с нею разобраться.
А какой некакой надо пользоваться? Это мой первый опыт. Возьму любую некаку!
Ну и потом ведь в сущности дело не в этой библиотеке, а в дисплее. На порту то все мигает как положено.
Ну и потом ведь в сущности дело не в этой библиотеке, а в дисплее. На порту то все мигает как положено.
Так в сущности дело не в том мигает или нет, а в том, что гадость в проект тянуть не надо ни в каком случае, даже если и мигает.
Их много неплохих, возьми хоть вот эту. Ты же самую худшую выбрал.
Ну и потом ведь в сущности дело не в этой библиотеке, а в дисплее. На порту то все мигает как положено.
Так в сущности дело не в том мигает или нет, а в том, что гадость в проект тянуть не надо ни в каком случае, даже если и мигает.
Их много неплохих, возьми хоть вот эту. Ты же самую худшую выбрал.
Это вы к тому, что сама микросхема барахло? Ну может. Но сейчас другой нет. А купить другую в режиме само изоляции если через алиэкспресс, то долго, если в магазине в городе, то далеко ехать и штрафануть могут. Те дорого. Или все таки библиотеку другую посмотреть. Просто я вот не пойму. Тут то в данном конкретном случае как ситуацию исправить? Другой дисплей попробовать? У меня 4х срочный есть. Или таки другой частотой помигать попробовать?
А про эту библиотеку - ну, почитай же, наконец, сколько и каких предупреждений выдаёт тебе компилятор при её компиляции. Неужели не пропало желание её использовать?
Да вот с утра пытаюсь найти и все в эту библиотеку упирается. Да и никаких сообщений при компиляции вроде нет.
Вот поковырял я с библиотекой DS1307. Вроде все просто. Но там вообще нет функции мигания времени.
В общем что-то получилось. Правда пришлось залезть в библиотеку и увидеть, что частота задается не 1Гц, а 1000. Соответственно когда ставлю 200-500 мигает. Но все равно странно. Скажем на 200 2 раза мигнет (опять таки по ощущениям раз в секунду) т следующие 2 секунды горит не мигая. А если скажем ставлю 500, то наоборот мигнет 2 раза, а потом 2 секунды не горит вообще сегмент. Т.е. такое ощущение, что этот параметр не частоту мигания задает. Но вот что - так и не понял. Поковыряю еще, но в принципе я уже при редактировании времени сделал надпись в правом верхнем углу что меняется.
Наверное ты очень страусов любишь!
Почитаю.
Но все таки ни одного примера библиотеки ты не привёл где бы было мигание. Но выступаешь уверенно! Есть у меня друг такой. Всегда в полицию/милицию попадает.
Xomyc - судя по проблемам с миганием - у вас наверняка в программе куча задержек, из-за которых код в loop() проходит цикл секунду или две. Кнопки в программе хорошо работают, не подтормаживают? - или чтобы сработали, приходится нажимать и удерживать?
Я чёт не понял, ты решил похамить немного? Я подсказал тебе, что у тебя дерьмовая библиотека на которую компилятор ругается матом, подсказал как увидеть сообщения компилятора, которых ты не видишь (и теряешь много полезной информации) - и это твоё "спасибо"?
Ну, ладно, разбирайся тогда сам в своих проблемах. Если чего не поймёшь, то вот на этом сайте всё написано - почитай.
Я чёт не понял, ты решил похамить немного? Я подсказал тебе, что у тебя дерьмовая библиотека на которую компилятор ругается матом, подсказал как увидеть сообщения компилятора, которых ты не видишь (и теряешь много полезной информации) - и это твоё "спасибо"?
Ну, ладно, разбирайся тогда сам в своих проблемах. Если чего не поймёшь, то вот на этом сайте всё написано - почитай.
Ну я был предельно вежлив, а вот твои посты немного скажем так вольные. Все таки мы на брудершафт не пили. Но спасибо я сказал. И еще раз скажу спасибо.
Xomyc - судя по проблемам с миганием - у вас наверняка в программе куча задержек, из-за которых код в loop() проходит цикл секунду или две. Кнопки в программе хорошо работают, не подтормаживают? - или чтобы сработали, приходится нажимать и удерживать?
Вот код, что у меня в итоге получилось. Но как я писал, основу писал не я. Она лежит на многих сайтах. Я переделал, чтобы часы с датой на одном экране лежали и установку 2 будильников и их отработку.