13

Самодельный калькулятор

Привет всем.

Кажется, я уже где-то писал, что на мой взгляд большая проблема для тех, кто любит что-то мастерить на микроконтроллерах (в т.ч. Arduino) – это отсутствие идей для проектов. Помигали светодиодиком, хочется двигаться дальше, но куда? Поэтому я иногда выкладываю тут свои поделки, может кто-то захочет повторить.

Основные принципы - это должно быть максимально бюджетно, чтобы оставалось на уровне простого развлечения, и хоть немного оригинально. Поэтому ниже будут справочно указаны цены, в которые это все обходится. Точнее обошлось мне на момент покупки.

Сегодня мы будем делать микрокалькулятор.

Мозги калькулятора на микроконтроллере STC8H8K64U в устаревшем корпусе DIP на 40 контактов. Такие уже не выпускают, но они еще продаются на Али меньше чем по 100 рублей за штуку. В принципе, можно использовать версию в любом корпусе, но с таким работать приятнее.

Семисегментный индикатор на 8 разрядов на MAX7219 продается там же готовый с управлением по SPI. 108 рублей.

Кнопки тоже есть у китайцев. Я использовал готовые сборки из четырех кнопок. 5 штук по 4 кнопки каждый. 60 рублей за одну сборку. Если честно, то кнопки мне не понравились сами по себе.

И еще бокс для трех батареек ААА за 104 рубля уже на Озоне.

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

Итак, схема конструкции

Схема

Схема

Все очень примитивно. Это просто подключение кнопок и индикатора к микроконтроллеру. Есть еще компорт для прошивки. Здесь же хотел сначала добавить два светодиода, на которые я хотел вывести знак минус для отрицательных чисел и индикатор записи в регистр памяти. Но в итоге я их не стал делать, а вывел сигналы в старший разряд индикатора. Просто потому что два светодиода вживую смотрелись довольно плохо и не наглядно. Соответственно максимальное число на индикаторе будет +- 9999999. Меньше чем обычно, но достаточно. Минус – это будет привычная средняя палочка в восьмом разряде, а память – это точка там же. И буква «Е» в случае переполнения или ошибки.

Когда я написал здесь предыдущее предложение, то вспомнил, что никак не обыграл деление на ноль. Вернулся, доделал.

Получилось вот так:

Вид спереди

Вид спереди

Кнопочка сверху – сброс микроконтроллера. Используется для заливки прошивки. Ну или просто как сброс, если хочется. Остальные кнопки имеют стандартный смысл.

С обратной стороны как обычно паутинка. На этот раз небольшая.

Вид с обратной стороны

Вид с обратной стороны

Бокс с батарейками приклеен на суперклей.

Прошивка и схема в хорошем качестве, если кому интересно, здесь: https://github.com/viktand/calculator

Хотя логика калькулятора кажется довольно примитивной, но на практике это оказалось неожиданно трудно. Пришлось повозиться с тем, чтобы правильно выводить на индикатор числа в процессе их ввода и после вычислений. Особенно разочаровало преобразование между long и double, приводящее к тому, что вместо, например, «4.5» калькулятор показывал «4.499999».

На этом все.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества