Обсуждаем все темы о применении электроники в моддинге (радиодетали, паяльники, принципиальные схемы, монтажные платы, микросхемы, светодиоды, LCD и т.д.)
единственный вопрос, который вставал передо мной при желании собрать подобный девайс - почему ж циферки такие маленькие??? =) ведь цифры - это единственное, что важно =) и куда удобне иметь возможность видеть их с любого расстояния
Проблемма опять в нехватке памяти контроллера, чтобы это реализовать придется выкинуть большую часть знакогенератора (малыми латинскими буквами уже пришлось пожертвовать) и оставить только цифры. И графическое оформление здесь тоже по этой причине не реализовано. Планирую в следующем проекте поставить дополнительно EEPROM (которых у меня полно завалялось) или применить PIC16F876 (потому что тоже имеется в наличии). Но это потом. Доделаю пока этот термометр (думаю, как корпусок не "убогий" сделать.)
можно же ничего не выкидывать, просто написать элементарную процедуру масштабирования при выводе. в одном направлении увеличивать вообще халява - просто один и тот же байт несколько раз выводить на разные строки. в другом уже сложнее, там уже с битами операции, но тоже реально
Свободной памяти совсем не осталось. Поэтому все же придется что либо выкинуть, вероятнее всего латинским шрифтом совсем придется пожертвовать, оставить только русский.
Про масштабирование ничего не понял (просто еще не думал, как сделать большие буквы). Если знаете как - подскажите подробней.
ну мне когда захотелось в три раза цифру увеличить, я её по горизонтали в памяти растянул, то есть если скажем у единички первый байт сверху был 00001000 то я его в памяти сделал 00000000 00001110 00000000 (просто неохота было голову ломать как её по битам растягивать, да и не надо было - памяти-то у меня осовободилось не хило, когда я всю графику из оригинальной прошивки убрал), а по вертикали - заставил процедуру вывода выводить эти три байта не один раз, как было в оригинале для маленькой цифры, а три раза, но каждый раз увеличивая счётчик строки на 1.
я кстати про большие цифры упомнянул не потому что буду собирать ваш термометр =) я так, ради интереса и теории для.
Как старый PIC-ман, замечу, что писать на С для таких мелких камней - одно расстройство. Память уходит в никуда. Толпами.
Что бы сделал я.
Если уж перейти на ассемблер тяжко - вообще отказаться от букв. Какой смысл в слове "Термометр !" ? И так ясно, что это не штангенциркуль.
Второе. Если все же хочется букв - пишите по-английски. В подавляющем большинстве английские слова гораздо короче, чем русские.
Иными словами, я бы просто выводил большие цифры температуры и какую-нибудь иконку "дом/наружка".
Ну а возвращаясь к ассемблеру, вот :
английский знакогенератор, поддержка протокола MatrixOrbital, вывод показаний с четырех DS18B20 и PCF8583 уместились в 1300 байт.
С Вами абсолютно согласен, что С съедает много памяти.
Память можно конечно с экономить, отказавшись от знакогенератора всех неиспользуемых букв. Причем экономия памяти не зависит от длины слова, а в первую очередь зависит от количества символов (букв) в знакогенераторе.
Выкинув примерно под 80% знакогенератора можно уже заняться и реализацией вывода показаний температуры большими буквами.
Можно конечно и программу оптимизировать. Я тупо продублировал функции работы с 1-wire, чтобы считывать показания со второго датчика, так было быстрее и без лишних умственных усилий.