Обсуждаем контроллеры компании Atmel.
Ответить

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Чт окт 18, 2018 13:52:24

Я правильно понял что вот этот кусок
Например: на часах 18:55, будильник 5:20
М _тек = 18 * 60 + 55 = 1135
М_буд = 5 * 60 + 20 = 320
Будет выглядеть примерно так верно?

Ht=bcd2bin(myhour);
Mt=bcd2bin(mymin);
St=Ht*60+Mt;
HAl1=bcd2bin(al1_h);
MAl1=bcd2bin(al1_m);
SAl1=HAl1*60+MAl1;

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пт окт 19, 2018 18:38:27

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

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пт окт 19, 2018 18:51:52

А какую анимацию можно сделать на сегментных индикаторах? Появление цифр посегментно? Да и памяти в мега 8 несколько процентов остается свободной насколько помнится.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пт окт 19, 2018 19:03:42

например как тут http://sxem.org/2-vse-stati/25-chasy/12 ... -termometr
а память можно освободить убрав например перевод времени с лета на зиму
Последний раз редактировалось Serzh2000 Пт окт 19, 2018 19:17:26, всего редактировалось 1 раз.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пт окт 19, 2018 19:13:01

Я бы такую анимацию за сбой в работе часов больше бы воспринял. Как наверное и 99% пользователей часов.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пт окт 19, 2018 19:16:00

Согласен с Martin76 .

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пт окт 19, 2018 19:16:44



Я делал их. Приедается постоянное мельтешение :lol:

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пт окт 19, 2018 20:51:44

Всякие визуальные "плюшки" хороши для конкуренции и в первую очередь с китайскими часами.

Я плавную смену показаний делал именно для сглаживания смены показаний особенно выраженной при боковом зрении.

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

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Сб окт 20, 2018 06:22:12

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

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Сб окт 20, 2018 08:32:42

Serzh2000 писал(а):...

Вам не пример, нужен, а принцип. Постановка задачи. ТЗ. Представить как это может делаться. Очевидно, что нужно периодически что то делать, чтобы получить световой эффект. Возьмите за основу автомат световых эффектов. Бегущие огни, бегущая тень. Настраивается таймер, к примеру на 200 мс. И каждые 200 мс сдвигать массив. Возьмём эффект, когда гаснут сегменты. Нужен массив с маской всех сегментов. И пропускаем через эту маску сегменты которые выводим на дисплей. Скажем, нужно гасить сегмент А, значит сбрасываем бит сегмента А в маске, накладываем по И массив сегментов и полученный результат выводим на дисплей.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Сб окт 20, 2018 08:49:22

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

// --------- что у нас будет в экранном буфере ? ------- (индикация отсрочки) ----------
void view_del(void) {
if (indicate == IND_CLOCK) { // день - месяц
digit_out[0] = mydel_h >> 4;
digit_out[1] = mydel_h & 0x0F;
digit_out[2] = mydel_m >> 4;
digit_out[3] = mydel_m & 0x0F;
}
} //----------



// --------- Расчет времени отсрочки ----------
void otsrochka(void){

unsigned char Ht, mydel_h, mydel_m, Mt, St, HAl1, MAl1, SAl1, delta, H_delta, M_delta;



Ht=bcd2bin(myhour);
Mt=bcd2bin(mymin);
St=Ht*60+Mt;
HAl1=bcd2bin(al1_h);
MAl1=bcd2bin(al1_m);
SAl1=HAl1*60+MAl1;
if (St>SAl1) SAl1=SAl1+(60*24);
delta=St-SAl1;
H_delta=delta/60;
M_delta=delta%60;
mydel_h=bin2bcd(H_delta);
mydel_m=bin2bcd(M_delta);

}//----------

В итоге на экран выводятся нули как правильно построить функцию
Заранее благодарю кто откликнется.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Вс окт 21, 2018 12:47:41

вот какая плюшка получилась.
с массивами не получается. не очень понимаю... гасить скажем сегменты ладно можно все по очереди , а как зажигать откуда узнать какой в индикаторе сегмент должен гореть скажем 2 (A+B+G+E+D) или другая цифра 1 (B+C) ?
Вложения
часы с рюшкой.rar
(170.44 KiB) Скачиваний: 338

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Вс окт 21, 2018 17:36:37

Отличный проект, спасибо Danko за "открытый код". Собрал часы в машину, для себя добавил вольтметр. Неделю потратил на чтение 130 страниц, но так и не прояснил вопрос про коррекцию в выключенном состоянии. Пару раз Danko упоминал про такую коррекцию, но вот сделал ли? Кто-нить кроме меня задавался таким вопросом?

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Вс окт 21, 2018 19:33:19

Для коррекции DS1307 придется заменить на M41T56.

M41T56 почти полностью совместима с DS в лучшую сторону. Там есть регистр коррекции. Изменяя содержимое регистра можно добавлять или удалять импульсы идущие от генератора к счетчикам.

DS1307 как и ее аналоги делит частоту кварца 32768 Гц на 32768 и секундные импульсы идут на счетчик секунд, в вот в M41T56 можно к 32768 импульсам добавить несколько (если часы отстают) или из последовательности импульсов удалить несколько импульсов - если спешат.

Правда эта функция мной реализована только в часах на мега168. Те которые на LCD.

т.к. в мега168 памяти больше, то в программе часов есть функция автораспознавания микросхем RTC.

Код:
//---------- распознавание микросхемы RTC ----------
tmp = rtc_read(62); // ячейка в которой хранится тип распознанной микросхемы
switch (tmp) {
   // если ранее микросхема была определена как DS1307
   case 0x0F:
      type_RTC = DS1307;
   break;

   // если ранее микросхема была определена как M41T56
   case 0xF0:
      type_RTC = M41T56;
   break;

   // если микросхема ранее не была распознана
   default:
      save_set_reg = rtc_read(0x07); // прочесть (сохранить) значение регистра управления
      rtc_write(0x07, 0b01000000); // установить бит 6 (в M41T56 это бит "FT", а в DS1307 пусто)
      tmp = rtc_read(0x07); // прочесть

      if (tmp) { type_RTC = M41T56; rtc_write(62, 0xF0);  } // если бит 6 установлен
      else     { type_RTC = DS1307; rtc_write(62, 0x0F);  } // у DS1307 бит 6 читается как 0

      rtc_write(0x07, save_set_reg); // восстановить содержимое регистра управления
}
//----------
Вложения
расчеты для M41T56.xls
(30 KiB) Скачиваний: 214

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пн окт 22, 2018 06:37:23

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

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Пн окт 22, 2018 20:12:19

В Советских электронных часах не было цифровой коррекции (за исключением наручных Электроника-5), но зато был подстроечный конденсатор.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Вт окт 23, 2018 06:36:15

Подстроечный конденсатор - тоже выход.
Но без термокомпенсации кварца в автомобильных часах, наверное, высокой точности хода не добиться.
Spark М300 не оборудован указателем температуры, что и сподвигло на сборку данных часов.
Установил 3 датчика - t в салоне, охлаждающей жидкости и наружнего воздуха.
Номер датчика индицирует RGB светодиод с порта D (4,5,6).
В режиме "без десятых долей" вместо округления засветил точку при десятых >= 0,5гр.
Вольтметр кажет средне-арифметическое от 64-х замеров.
Яркость зелёного индикатора при солнечном освещении в машине маловата (динамика, ОА, 0.56', в анодах ключи, в сегментах 220 Ом, без ULN).

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Вт окт 23, 2018 10:52:52

У китайцев легко можно купить изумрудно-зеленые индикаторы (PG) от 0,36 до 5 дюймов, с яркостью как у белых.

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Вт окт 23, 2018 11:32:25

Видимо, не умею искать - на запрос "pure green 0.56" выходит с десяток результатов, в основном продают партиями

Re: Часы-календарь-термометр (Mega8+DS1307+DS18B20+4LED)

Вт ноя 06, 2018 05:52:03

Уважаемый Danko.
Мне понравилась Ваша мысль
И в первую очередь для функции запрещающей в ночное время смену показаний. Оставить индикацию только времени.

потому как раним утром приоткрыв глаз охото увидеть время и перевернувшись на другой бок еще поспать.....
программист из меня не важный :shock: , помогите, что куда вставить в коде :dont_know:
Ответить