Самодельный калькулятор
Привет всем.
Кажется, я уже где-то писал, что на мой взгляд большая проблема для тех, кто любит что-то мастерить на микроконтроллерах (в т.ч. 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».
На этом все.


