Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение Danko »

А можно поточнее?
Показания встают либо на место одного датчика либо на место другого ?

или вообще куда угодно? т.е. на любое место "экрана"
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
m169
Открыл глаза
Сообщения: 46
Зарегистрирован: Сб ноя 20, 2010 15:47:40
Откуда: Кирово-Чепецк

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение m169 »

Danko писал(а):А можно поточнее?
Показания встают либо на место одного датчика либо на место другого ?

или вообще куда угодно? т.е. на любое место "экрана"


Доброго времени суток.
Показания встают либо на место одного датчика, либо на место другого. Переделывал скины, угадать не получилось.
Можешь сделать лучше? Сделай!
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение Danko »

Отрублю один датчик и посмотрю.

Будут изменения в коде отпишусь.

Данил.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Аватара пользователя
NickNI
Прорезались зубы
Сообщения: 237
Зарегистрирован: Ср май 19, 2010 11:15:36
Откуда: Украина

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение NickNI »

m169 писал(а):... Показания температуры, встают куда угодно...

На одном экземпляре часов, около пол года один датчик всегда с номером 1, и всегда на месте. :dont_know:
Для повторения ошибки сообщите более детально, когда при каких обстоятельствах переставляется?
После отключения/включения, после подключения/отключения второго, перезагрузки и т.п.? В общем,
чем больше деталей сообщите, тем скорее будет результат. :)
Жизнь - цепь, а мелочи в ней звенья. Нельзя звену не придавать значения!
m169
Открыл глаза
Сообщения: 46
Зарегистрирован: Сб ноя 20, 2010 15:47:40
Откуда: Кирово-Чепецк

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение m169 »

Danko писал(а):Отрублю один датчик и посмотрю.

Будут изменения в коде отпишусь.

Данил.


Доброго времени суток.
Берётся стандартный скин, один датчик смонтирован на плате. Смотрим, где прописались показания, переделываем скин и удивляемся, показания опять в другом месте. Если прописать в скине одно место, то проблем нет.
Можешь сделать лучше? Сделай!
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение Danko »

координаты каждого информационного поля (будь то время или дата или ...) хранятся в EEPROM памяти микроконтроллера и это не зависит ни от скина ни от языка скина.

приведу кусок кода

Код: Выделить всё

      //  показать темп.первого датчика в указанных координатах
      if (... && (devices > 0)) {
                      ...
      }

      //  показать темп.второго датчика в указанных координатах
      if (... && (devices > 1)) {
                      ...
      }
в devices хранится количество датчиков найденных при включении часов

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

После прошивке сделайте верификацию содержимого EEPROM.

А перед прошивкой Вы наверняка делаете полное стирание памяти МК.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
m169
Открыл глаза
Сообщения: 46
Зарегистрирован: Сб ноя 20, 2010 15:47:40
Откуда: Кирово-Чепецк

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение m169 »

Danko писал(а):координаты каждого информационного поля (будь то время или дата или ...) хранятся в EEPROM памяти микроконтроллера и это не зависит ни от скина ни от языка скина.

приведу кусок кода

Код: Выделить всё

      //  показать темп.первого датчика в указанных координатах
      if (... && (devices > 0)) {
                      ...
      }

      //  показать темп.второго датчика в указанных координатах
      if (... && (devices > 1)) {
                      ...
      }
в devices хранится количество датчиков найденных при включении часов

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

После прошивке сделайте верификацию содержимого EEPROM.

А перед прошивкой Вы наверняка делаете полное стирание памяти МК.

Доброго времени суток.
Часы работают как с одним датчиком, так и с двумя. Но подключив оба датчика и все, настроив, отключаем один датчик. Выключаем питание. Включаем питание. С вероятностью в 50% показания поменяются местами (датчик, который показывал дом, будет показывать улицу).
Можешь сделать лучше? Сделай!
Аватара пользователя
NickNI
Прорезались зубы
Сообщения: 237
Зарегистрирован: Ср май 19, 2010 11:15:36
Откуда: Украина

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение NickNI »

m169 писал(а):...С вероятностью в 50% показания поменяются местами (датчик, который показывал дом, будет показывать улицу).

В скинах, по умолчанию, которые идут с программой SkinEdit датчик №1 - улица. Не обязательно, просто как рекомендация: При редактировании скинов, учесть, что датчик, который будет подключен постоянно рано или поздно (перезагрузка, пропадания питания, e.t.c.) получит номер 1! Соответственно его расположение физическое приписывать туда же. При подключении второго датчика, если вдруг они поменяются местами в меню предусмотрен пункт "Номер датчика", где их можно поменять местами. Если у Вас датчик один и ему присвоен номер 1 то сдвинуть его с места сложновато.
Жизнь - цепь, а мелочи в ней звенья. Нельзя звену не придавать значения!
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение Danko »

m169 писал(а):Доброго времени суток.
Часы работают как с одним датчиком, так и с двумя. Но подключив оба датчика и все, настроив, отключаем один датчик. Выключаем питание. Включаем питание. С вероятностью в 50% показания поменяются местами (датчик, который показывал дом, будет показывать улицу).
Вот теперь я понял, что за эксперименты Вы проводите с часами. А я считал, что у Вас всего один датчик.

Николай уже все пояснил, а я от себя могу добавить, что поиск датчиком производится при включении (перезагрузке) часов и если будет найден один датчик пункт меню "номер датчика" будет неактивен (или попросту он исчезнет). И даже если при наличии двух датчиков через пункт меню Вы их поменяли местами, то при удалении одного после перезагрузки единственный датчик который принудительно был выставлен вторым программой будет установлен первым. И если в результате это у пользователя возникают неудобства, то для этого и была придумана программа редактор скинов.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
m169
Открыл глаза
Сообщения: 46
Зарегистрирован: Сб ноя 20, 2010 15:47:40
Откуда: Кирово-Чепецк

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение m169 »

Danko писал(а):
m169 писал(а):Доброго времени суток.
Часы работают как с одним датчиком, так и с двумя. Но подключив оба датчика и все, настроив, отключаем один датчик. Выключаем питание. Включаем питание. С вероятностью в 50% показания поменяются местами (датчик, который показывал дом, будет показывать улицу).
Вот теперь я понял, что за эксперименты Вы проводите с часами. А я считал, что у Вас всего один датчик.

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


Доброго времени суток.
Я рад, что мы поняли друг друга. Редактором скинов, не каждый раз удается угадать какой датчик куда встаёт, да и муторное это дело. Желательно решить этот вопрос программно, через меню пользователя.
Есть ещё одно замечание. Индикация активных будильников.
Я предлагаю отображать не количество включенных будильников в день, а количество оставшихся активных будильников на данный момент времени, но при нажатии кнопки (отображение количества включенных будильников) пусть отображается количество включенных будильников.
Можешь сделать лучше? Сделай!
m169
Открыл глаза
Сообщения: 46
Зарегистрирован: Сб ноя 20, 2010 15:47:40
Откуда: Кирово-Чепецк

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение m169 »

NickNI писал(а):
m169 писал(а):...С вероятностью в 50% показания поменяются местами (датчик, который показывал дом, будет показывать улицу).

В скинах, по умолчанию, которые идут с программой SkinEdit датчик №1 - улица. Не обязательно, просто как рекомендация: При редактировании скинов, учесть, что датчик, который будет подключен постоянно рано или поздно (перезагрузка, пропадания питания, e.t.c.) получит номер 1! Соответственно его расположение физическое приписывать туда же. При подключении второго датчика, если вдруг они поменяются местами в меню предусмотрен пункт "Номер датчика", где их можно поменять местами. Если у Вас датчик один и ему присвоен номер 1 то сдвинуть его с места сложновато.

Доброго времени суток.
Уважаемый Николай, а Вы сами это проверяли? Я проверял. Результат ноль.
Можешь сделать лучше? Сделай!
Аватара пользователя
NickNI
Прорезались зубы
Сообщения: 237
Зарегистрирован: Ср май 19, 2010 11:15:36
Откуда: Украина

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение NickNI »

m169 писал(а):Уважаемый Николай, а Вы сами это проверяли? Я проверял. Результат ноль.

:)) Да! Последний раз вчера. Первый примерно в марте месяце за 4 месяца до публикации статьи тут.
А еще точнее, тогда, когда было принято решение
не отображать пункт меню смены датчиков если датчик один. Вы сомневаетесь?

Давайте попробуем решить проблему...
Откорректировал скин для русского языка под первый датчик - комнатный. Если есть желание проверяйте.
Для чистоты, желательно скачать файл hex для русского языка из приведенного выше ресурса,
чтобы быть уверенным что используете последнюю версию.
После прошивки проверите на соответствие моему предыдущему сообщению.
eep_ru.zip
(569 байт) 333 скачивания

Предупреждая Ваш вопрос, о дате eep файла, отвечу сразу: Я использую украинский язык в часах.
Жизнь - цепь, а мелочи в ней звенья. Нельзя звену не придавать значения!
m169
Открыл глаза
Сообщения: 46
Зарегистрирован: Сб ноя 20, 2010 15:47:40
Откуда: Кирово-Чепецк

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение m169 »

NickNI писал(а):
m169 писал(а):Уважаемый Николай, а Вы сами это проверяли? Я проверял. Результат ноль.

:)) Да! Последний раз вчера. Первый примерно в марте месяце за 4 месяца до публикации статьи тут.
А еще точнее, тогда, когда было принято решение
не отображать пункт меню смены датчиков если датчик один. Вы сомневаетесь?

Давайте попробуем решить проблему...
Откорректировал скин для русского языка под первый датчик - комнатный. Если есть желание проверяйте.
Для чистоты, желательно скачать файл hex для русского языка из приведенного выше ресурса,
чтобы быть уверенным что используете последнюю версию.
После прошивки проверите на соответствие моему предыдущему сообщению.
Вложение eep_ru.zip больше недоступно

Предупреждая Ваш вопрос, о дате eep файла, отвечу сразу: Я использую украинский язык в часах.

Доброго времени суток.
Залил ваши файлы, всё встало на свои места. Высылаю папку с файлами которые я использовал.
Вложения
старая прошивка.rar
(13.68 КБ) 370 скачиваний
Можешь сделать лучше? Сделай!
Аватара пользователя
NickNI
Прорезались зубы
Сообщения: 237
Зарегистрирован: Ср май 19, 2010 11:15:36
Откуда: Украина

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение NickNI »

m169 писал(а):Залил ваши файлы, всё встало на свои места...

Отлично! :) Повторюсь: У Вас один датчик "прикручен" намертво к часам и Вы предполагаете использовать его, чаще всего, один.
Тогда в SkinEdit ставите возле записи "Дом" датчик #1 и не важно что там, для примера, -10. Если в процессе эксплуатации подключите второй и датчики поменяются местами, то поменяете в меню. Если один отключите, то достаточно выключить/включить и впаяный снова будет отображать квартиру. Я подкорректировал Ваш eep. Можете его использовать, все должно быть хорошо...
Вложения
ru_eep1.zip
(605 байт) 295 скачиваний
Жизнь - цепь, а мелочи в ней звенья. Нельзя звену не придавать значения!
m169
Открыл глаза
Сообщения: 46
Зарегистрирован: Сб ноя 20, 2010 15:47:40
Откуда: Кирово-Чепецк

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение m169 »

NickNI писал(а):
m169 писал(а):Залил ваши файлы, всё встало на свои места...

Отлично! :) Повторюсь: У Вас один датчик "прикручен" намертво к часам и Вы предполагаете использовать его, чаще всего, один.
Тогда в SkinEdit ставите возле записи "Дом" датчик #1 и не важно что там, для примера, -10. Если в процессе эксплуатации подключите второй и датчики поменяются местами, то поменяете в меню. Если один отключите, то достаточно выключить/включить и впаяный снова будет отображать квартиру. Я подкорректировал Ваш eep. Можете его использовать, все должно быть хорошо...

Доброго времени суток.
Это лечение симптома, а болезнь осталась.
Файлы *.hex одинаковы. Поэтому проверял *.eep. После правки в редакторе скинов, температура одиночного датчика встаёт не корректно.
Можешь сделать лучше? Сделай!
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение Danko »

И опять я ничего не могу понять.
У меня в часах два датчика. №1 - улица, № 2 - квартира. В меню датчики местами не менял. Скин нарисован для улицы - датч.№1 (-10 С), для квартиры - датч.№2 (+22 С)

1. Отключаю питание.
2. Отключаю датчик "квартира".
3. Включаю питание - на экране Уличный датчик на своем месте, на месте квартирного пусто.

4. Отключаю питание.
5. Подключаю датчик на место.
6. Включаю питание - на экране Уличный датчик на своем месте квартирный тоже.

7. Отключаю питание.
8. Отключаю датчик "улица".
9. Включаю питание - на экране Уличный датчик показывает температуру в квартире, а на месте квартирного пусто. И ЭТО НОРМАЛЬНО.

10. Отключаю питание.
11. Подключаю датчик на место.
12. Включаю питание - на экране Уличный датчик показывает температуру за окном, а квартирный соответственно в квартире.

Не могу понять, в чем проблема.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение Danko »

На практике проверил все скины. И стандартные и скины от m169.

Все скины отображаются правильно согласно заложенному в них интерфейсу.

И по сему дабы закрыть сей непонятный мне эксперимент проводимый m169 внесу поправки в описание устройства:

"При работе часов с одним датчиком обязательно нужно самостоятельно откорректировать скины, удалив из них второй ненужный датчик. При этом при редактировании скинов нужно учесть, что единственный датчик всегда будет первым. И не стоит обращать внимание, что в редакторе скинов у первого датчика показания температуры отрицательные. Это сделано только для визуального различия датчиков при редактировании."
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Аватара пользователя
nicolasomsk
Встал на лапы
Сообщения: 148
Зарегистрирован: Вс окт 23, 2011 13:27:09
Откуда: Россия. Омск
Контактная информация:

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение nicolasomsk »

Господа, извиняюсь дико за оффтоп, в этой ветке тема просто поднималась про OLED дисплей от Winstar. Так же проблема с русскими символами. Дело в том что я пытаюсь постигать азы программирования в графической среде Flowcode и "классическое" программирование мне пока чуждо. Если можно, взгляните на С код, который мне сгенерила программа (он под LCD Winstar 16*2) Все выходные на эксперименты убил уже:(((
Если что, то эт на тиньке 2313
Вложения
display.c
(10.67 КБ) 628 скачиваний
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение Danko »

С Flowcode вообще не знаком.

А что если добавить строку FCD_LCDDisplay0_Command(0x2A);

Код: Выделить всё

//Макрос компонента
   //Макрос компонента: LCDDisplay(0)::Старт
   FCD_LCDDisplay0_Start();

   FCD_LCDDisplay0_Command(0x2A);

   //Макрос компонента
   //Макрос компонента: LCDDisplay(0)::Вывод строки("±pe!")
   FCD_LCDDisplay0_PrintString("±pe!",7);
это не поможет?
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Аватара пользователя
nicolasomsk
Встал на лапы
Сообщения: 148
Зарегистрирован: Вс окт 23, 2011 13:27:09
Откуда: Россия. Омск
Контактная информация:

Re: Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Сообщение nicolasomsk »

Спасибо!
Вложения
DSCN0497.jpg
(137.26 КБ) 1048 скачиваний
Ответить

Вернуться в «AVR»