Страница 133 из 148

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

Добавлено: Чт окт 18, 2018 13:52:24
SeaWolf999
Я правильно понял что вот этот кусок
Например: на часах 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
Serzh2000
всем привет
как добавить анимацию при смене информации. в часах есть плавное тушение и зажигание индикатора, но этого маловато хотелось больше.
объясните или маленький пример покажите, очень хочется сделать.

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

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

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

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

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

Добавлено: Пт окт 19, 2018 19:13:01
Martin76
Я бы такую анимацию за сбой в работе часов больше бы воспринял. Как наверное и 99% пользователей часов.

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

Добавлено: Пт окт 19, 2018 19:16:00
ВНН
Согласен с Martin76 .

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

Добавлено: Пт окт 19, 2018 19:16:44
samand587
[uquote="Serzh2000",url="/forum/viewtopic.php?p=3485905#p3485905"]например как тут http://sxem.org/2-vse-stati/25-chasy/12 ... -termometr[/uquote]

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

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

Добавлено: Пт окт 19, 2018 20:51:44
Danko
Всякие визуальные "плюшки" хороши для конкуренции и в первую очередь с китайскими часами.

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

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

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

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

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

Добавлено: Сб окт 20, 2018 08:32:42
Demiurg
Serzh2000 писал(а):...
Вам не пример, нужен, а принцип. Постановка задачи. ТЗ. Представить как это может делаться. Очевидно, что нужно периодически что то делать, чтобы получить световой эффект. Возьмите за основу автомат световых эффектов. Бегущие огни, бегущая тень. Настраивается таймер, к примеру на 200 мс. И каждые 200 мс сдвигать массив. Возьмём эффект, когда гаснут сегменты. Нужен массив с маской всех сегментов. И пропускаем через эту маску сегменты которые выводим на дисплей. Скажем, нужно гасить сегмент А, значит сбрасываем бит сегмента А в маске, накладываем по И массив сегментов и полученный результат выводим на дисплей.

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

Добавлено: Сб окт 20, 2018 08:49:22
SeaWolf999
Народ помогите с функцией оставшегося времени до срабатывания будильника 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
Serzh2000
вот какая плюшка получилась.
с массивами не получается. не очень понимаю... гасить скажем сегменты ладно можно все по очереди , а как зажигать откуда узнать какой в индикаторе сегмент должен гореть скажем 2 (A+B+G+E+D) или другая цифра 1 (B+C) ?

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

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

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

Добавлено: Вс окт 21, 2018 19:33:19
Danko
Для коррекции 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); // восстановить содержимое регистра управления
}
//------------------------------------------------------------------------------------

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

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

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

Добавлено: Пн окт 22, 2018 20:12:19
Danko
В Советских электронных часах не было цифровой коррекции (за исключением наручных Электроника-5), но зато был подстроечный конденсатор.

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

Добавлено: Вт окт 23, 2018 06:36:15
cat_tAVR
Подстроечный конденсатор - тоже выход.
Но без термокомпенсации кварца в автомобильных часах, наверное, высокой точности хода не добиться.
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
Martin76
У китайцев легко можно купить изумрудно-зеленые индикаторы (PG) от 0,36 до 5 дюймов, с яркостью как у белых.

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

Добавлено: Вт окт 23, 2018 11:32:25
cat_tAVR
Видимо, не умею искать - на запрос "pure green 0.56" выходит с десяток результатов, в основном продают партиями

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

Добавлено: Вт ноя 06, 2018 05:52:03
Serzh2000
Уважаемый Danko.
Мне понравилась Ваша мысль
И в первую очередь для функции запрещающей в ночное время смену показаний. Оставить индикацию только времени.
потому как раним утром приоткрыв глаз охото увидеть время и перевернувшись на другой бок еще поспать.....
программист из меня не важный :shock: , помогите, что куда вставить в коде :dont_know: