RadioNoob

RadioNoob

На Пикабу
754 рейтинг 4 подписчика 1 подписка 2 поста 0 в горячем
3

Arduino без вложений. Proteus [2]

Как работать с протеусом мы разобрались в первом посте.

Теперь попробуем сделать что-нибудь, что делают новички на ардуино. Запрограммируем микроконтроллер на работу с матрицей светодиодов через микросхему Max7219. Собственно, подобный шилд часто можно встретить в наборе новичка.

Напоминаю: подробная инструкция по работе с протеусом присутствует в первом посте.

У микросхемы есть несколько контактных групп, а именно:

Красным - контакты ввода
Зеленым - контакты вывода столбца на матрицу
Синим - контакты выбора столбца, который именно мы будем вводить (микросхема сама бегает плюсом по этой контактной группе, а мы на самом деле заполняем ее внутренние буферы)

Для данного проекта мы будем использовать цифровые выводы 2, 3 и 4.

Соединяем микроконтроллер с микросхемой:
Цифровой выход 2 (4-я нога) с DIN (DataIN)

Цифровой выход 3 (5-я нога) с LOAD

Цифровой выход 4 (6-я нога) с CLK (Clock)

А так же соединяем саму микросхему с матрицей: 

зеленую группу с зеленой, синюю с синей (на первом скриншоте они выделены).

Настало время написать программу (ссылка на полный листинг программы в конце поста). 

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

Первым делом создадим виртуальную область, в которую будем "выводить изображение" для последующего копирования его на микросхему-матрицу - это БУФЕР (buf).

Так же создадим то, что мы будем выводить в буфер, я решил на первый раз обойтись пиктограммами 8х8 в нужном количестве. Создал массив im (от сокращенного image), и заполнил его всем знакомыми буквами ("Pikabu ").

Так же на скриншоте ниже я подробно описал несколько дополнительных переменных, которые я использовал для работы.

А вот и то самое расстояние между пиктограммами:

Основная функция программы - loop, она выполняется раз за разом, пока питание будет подключено.

Сначала нам надо понять где мы. Если мы в конце конкретной пиктограммы - перейдем на следующую. Если мы в конце всех пиктограмм - перейдем на первую.

Затем нам можно уже работать с буфером, сдвигаем его на 1 столбец влево. После чего мы должны заполнить последний столбец новыми данными. Если расстояние между пиктограммами еще не прошло - заполняем последний столбец пустотой, а если сейчас очередь пиктограммы - заполняем последний столбец буфера нужным столбцом пиктограммы.

(нынешнего*)

И так, после заливки программы и запуска, я обнаружил, что массив смещен на 1 строку циклично вниз. Да, именно строку, ибо матрица по умолчанию повернута на 90 градусов по часовой.

"Покурив мануалы" (даташит) я быстро обнаружил проблему: оказалось что вывод DP выполняет роль нулевого контакта, в то время как А - 1, B - 2 и т.д.

Быстро поменяв контакты местами, я решил проблему.

Элементарная бегущая строка на одной матрице готова!


Можно было использовать библиотеку для работы с Max7219 - MaxMatrix, однако, данный код (из листинга) мне показался достаточно прозрачным, чтобы его использовать.


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


Листинг: http://pastebin.com/qxvSV3yL


С вами был RadioNoob, специально для

Показать полностью 11
6

Программирование Arduino бесплатно и любой сложности.

Так как в последнее время все больше постов с "дешевыми" радиодеталями для ардуино с Али начали вылезать в горячее, решил сделать несколько статей о том, как можно все это попробовать не вкладываясь вообще и не паля микросхемы почем зря.

Сегодня покажу как запустить элементарный пример ардуино - Blink. Мигание светодиодом.

И так, Proteus.
Proteus - платный пакет программ для проектирования устройств практически любой сложности и дальнейшей разметки печатных плат. Естественно этот пакет есть на торрентах, если хотите. Есть даже на общеизвестном закрывающемся торренте. Я использую версию 7.8

Из пакета нам потребуется только программа ISIS.

1. Запускаем ISIS. Он нас приветствует невзрачным серым окном.

2. Для того чтобы начать работать с одним из микроконтроллеров ардуины - нам надо добавить этот микроконтроллер в панель компонентов.

Для этого нам надо нажать кнопку с буквой P (выделено красным), дважды щелкнуть мышкой по белой панели компонентов (выделено оранжевым), или же нажать на клавишу английской буквы P на клавиатуре .

3. Открывается окно добавления компонентов. Различных наименований в 7-й версии более 16 тысяч. Нам же нужен всего один. Вводим название Atmega328 в ключевых словах и видим сокращенный список компонентов. Кликаем по ATMEGA328P. Атмегу328 я выбрал потому что она стоит в Arduino nano, которую я использую.

4. Одного микроконтроллера нам будет мало. Добавим в набор еще и светодиод. Вводим led в ключевых словах, выбираем раздел оптоэлектроники, выбираем понравившийся светодиод. Тут есть 2 вида компонентов, те, что графически отображают свою работу (зеленый светодиод загорится зеленым), и те, что отображают работу чисто схематически (загорится красный квадрат, который сигнализирует о работе у схематического светодиода).

5. Закрываем окно выбора компонентов. Теперь нам надо разобраться с выводами микроконтроллера. Выводы ардуино им не соответствуют, но в интернете и в даташитах (от английского datasheet) легко можно найти распиновку.

Посмотрев программу-образец Blink, я знаю, что нам требуется 13-й вывод ардуино для управления светодиодом.

Сверяем с распиновкой. И так, 13-й "digital pin" ардуины соответствует PB5 микроконтроллера, в Proteus обозначенной 19-й ногой.

6. Соединяем 19-ю ногу микроконтроллера с "входом" (анод) светодиода, а "выход" (катод) светодиода заземляем. Землю мы находим в "Terminals Mode". Соединение происходит с помощью инструмента "карандаш", который по умолчанию выделен, кликая на точки соединения.

7. Пришло время для программирования  открытия проекта-примера в IDE Arduino.

IDE Arduino можно скачать на сайте https://www.arduino.cc/en/Main/Software , она распространяется бесплатно.

Нам требуется проект Blink, который находится в Basics.

При нажатии на название проекта - он откроется в новом окне.

8. Выбираем "нашу арудину". Плата: Ардуино нано, Процессор: АТмега328. После чего жмем кнопку "Проверить", которая выделена на предыдущем скриншоте и имеет изображение галки.

9. Теперь нам нужен HEX файл, который IDE Arduino нам собрала.

Найти его можно в папке Application Data - Local - Temp - buildМНОГОЦИФРОБУКВ.

Для быстрого попадания в данную папку можно проделать следующие шаги:

а) Открыть любую папку

б) В строку адреса ввести %appdata% и нажать клавишу ввода (строка адреса выделена на скриншоте)

в) Затем перейти на папку "вверх" и в папку Local, нас засунуло в "AppData->Roaming", а нам нужен "AppData->Local"

г) Затем, отсортировав список по дате найти недавно измененную папку. Для этого надо выбрать вариант отображения таблицей. Это можно сделать в специальном меню выбора, или же просто зажав ctrl покрутить колесико.

Я свой проект "проверял" в 6:13, по этому быстро нашел нужную папку.

В данной папке нам нужен только .hex файл, в нашем случае он называется "Blink.ino.hex".

Копируем его куда-нибудь на быстродоступное место, например в корень диска C.

10. Теперь нам надо в Proteus'е дважды кликнуть на микроконтроллер, чтобы открылось окно ввода параметров компонента. В поле Program  File выбираем наш скопированный файл.

Затем, для нашего примера выбираем следующее поле (CLKDIV8) как "(1)Unprogrammed", это позволит увеличить быстродействие симуляции.

11. Запускаем симуляцию нажатием кнопки в левом нижнем углу. Наслаждаемся работой первого запрограммированного микроконтроллера.

Замечу, что если выбрать CLKDIV8 как "(0)Programmed" - 1 секунда симуляции у меня равнялась примерно 16 секундам реального времени, а в описанном примере всего 2-м секундам.

Вот и подошел вводный пост к завершению.

Следующий пост будет уже о программировании матрицы светодиодов с микросхемой Max7219. Он уже не будет так разжеван, хотя описанные здесь шаги будут в любом проекте.

Жду замечаний и советов.

С вами был RadioNoob, специально для Пикабу.

Показать полностью 13
Отличная работа, все прочитано!

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества

Недвижимость и ремонт

Теги

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

Сообщества