Простой pov дисплей на базе arduino

Содержание

Простой POV дисплей на базе Arduino

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

Шаг 1: Компоненты, необходимые для выполнения проекта

Для изготовления POV дисплея понадобится:
– Микроконтроллер Arduino UNO + среда разработки Arduino IDE
– Программа Processing (при использовании компьютера для последовательной передачи данных)
– Android устройство (при использовании Android приложения для последовательной передачи данных)
– Bluetooth модуль
– 8 x светодиодов любого цвета
– 8 x 220 Ом резисторов
– 9В DC двигатель
– 9В батарея.

Шаг 2: Электрическая схема

Шаг 3: Загрузка Arduino скетча

Скетч позволяет записывать текст по вашему выбору с предварительно запрограммированными буквами. Вам просто необходимо вызвать функцию printLetter(), записать букву или цифру по вашему выбору между скобками. Количество вводимых букв и цифр не ограничено.

Вы также можете использовать приложение Processing или Android приложения, просто кликнув на блоках, которые появляются в обоих приложениях для отрисовки вашей собственной формы, которая будет мгновенно отображаться на вашем POV дисплее благодаря Bluetooth для беспроводной последовательной передачи данных. Вместо записи букв и цифр между скобками функции printLetter (), вы можете записать printLetter(shape);

Шаг 4: Приложение Processing (Последовательное соединение с ПК)

Для тех, кто не знает, что такое Processing:

Processing представляет собой язык программирования, среду разработки и онлайн сообщество. Начиная с 2001 года, Processing развивает компьютерную грамотность, связанную с технологией визуального искусства. Данный язык первоначально был создан как программный блокнот для набросков кода и для того, чтобы научить основам компьютерного программирования с визуальным контекстом; далее Processing превратился в среду разработки для профессионалов. В настоящее время существует сотни тысяч студентов, художников, дизайнеров, исследователей, и энтузиастов, которые используют Processing для обучения, создания прототипов и опытных образцов.

Я зачастую использую Processing для создания приложений, которые позволяют связываться с Arduino через последовательно соединение Serial Communication.

Приложение Processing позволяет начертить любую форму по вашему выбору, нажав на белый блок. При этом вы увидите результат на вашем POV дисплее, даже если он вращается с большой скоростью.

Для использования приложения Processing вам необходимо настроить bluetooth на вашем компьютере. Если bluetooth уже настроен, то пропустите данный шаг. Однако вам необходимо изменить COM порт в вашем скетче Processing на соответствующий порт вашего bluetooth адаптера. В качестве адаптера можно использовать встроенный Bluetooth модуль или внешнюю bluetooth заглушку (проверьте, что она совместима с вашей операционной системой).

Далее необходимо подключить bluetooth модуль к Arduino, т.е. перейти в менеджер Bluetooth Manager на вашем компьютере и кликнуть на “Add a connection” (Добавить соединение) или нечто подобное, и далее выбрать соответствующее устройство.

После состыковки модулей вам необходимо получить номер COM порта, который используется Bluetooth модулем Arduino при подключении к вашему компьютеру, далее открыть “POV_processing” и под функцией “Void setup()” заменить “COM40” на номер соответствующего COM порта, который вы получили.

Шаг 5: Android приложение (Последовательное соединение с Android устройством)

Для управления POV дисплеем я запрограммировал Android приложение, используя комплект разработки Android Studio Development Kit. Несмотря на то, что данное приложение может работать на почти всех Android устройствах (смартфонах, планшетах и т.д.), примите к сведению, что корректность работы гарантируется на устройствах, с версией android не ниже JellyBean 4.2.

Простой pov дисплей на базе arduino

GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.

Clone with HTTPS

Use Git or checkout with SVN using the web URL.

Downloading

Want to be notified of new releases in AlexGyver/POV_display ?

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio

Latest commit

Files

Permalink

TypeNameLatest commit messageCommit time
Failed to load latest commit information.
POV_display
images
libraries
schemes
.gitattributes
LICENSE
Pixel.exe
README.md
proj_img.jpg

POV вращающийся дисплей своими руками

Вращающийся дисплей Особенности:

  • Собран из доступных компонентов, на адресной ленте WS2812
  • Разрешение 10 градусов
  • Плавный разгон и торможение (уменьшение нагрузки на редуктор и муфту)
  • Воспроизведение 9-кадровой анимации (Arduino NANO/UNO/MINI)
  • На Arduino MEGA влезет около 80 кадров анимации
  • Подробности в видео: https://youtu.be/RL3j-3fyWM8

ВНИМАНИЕ! Если это твой первый опыт работы с Arduino, читай инструкцию

  • libraries – библиотеки проекта. Заменить имеющиеся версии
  • POV_display – прошивка
  • images – исходники картинок
  • schemes – схемы подключения

Материалы и компоненты

Ссылки оставлены на магазины, с которых я закупаюсь уже не один год

Почти все компоненты можно взять в магазине WAVGAT по первым ссылкам

  • Arduino NANO 328p – искать
  • https://ali.ski/tI7blh
  • https://ali.ski/O4yTxb
  • https://ali.ski/6_rFIS
  • https://ali.ski/gb92E-
  • Адресная лента (под нарезку)
  • https://ali.ski/crrqi1
  • https://ali.ski/2I3be
  • Купить в РФ, 60 свет/метр, 30 свет/метр
  • Black PCB / White PCB – цвет подложки ленты, чёрная / белая. В видео была чёрная
  • 1m/5m – длина ленты в метрах (чтобы заказать 2 метра, берите два заказа 1m, очевидно)
  • 30/60/74/96/100/144 – количество светодиодов на 1 метр ленты. В видео использовалась лента 60 диодов на метр
  • IP30 лента без влагозащиты (как на видео)
  • IP65 лента покрыта силиконом
  • IP67 лента полностью в силиконовом коробе
  • Постфикс ECO – лента чуть более низкого качества, меньше меди, на длинной ленте будет сильно проседать яркость
  • Лента как на видео: White PCB 144. Берите IP30
  • Датчик Холла https://ali.ski/R0w7s или такой https://ali.ski/zBqc8
  • Мотор https://ali.ski/6Ynot3
  • Повышайка https://ali.ski/PL0ghf
  • Мосфет модуль (вместо голого фета) https://ali.ski/D2_DMh
  • Штекер https://www.chipdip.ru/product/sp20-6.35s-n
  • Гнездо https://www.chipdip.ru/product/st-008s-04
  • Блок питания 5V – любой зарядник для смартфона
  • Транзисторы, конденсаторы, кнопки и резисторы – в ЛЮБОМ магазине радиодеталей

Вам скорее всего пригодится

Как скачать и прошить

  • Первые шаги с Arduino – ультра подробная статья по началу работы с Ардуино, ознакомиться первым делом!
  • Скачать архив с проектом

На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP

  • Установить библиотеки в
    C:Program Files (x86)Arduinolibraries (Windows x64)
    C:Program FilesArduinolibraries (Windows x86)
  • Подключить Ардуино к компьютеру
  • Запустить файл прошивки (который имеет расширение .ino)
  • Настроить >

Настройки в коде

В: Как скачать с этого грёбаного сайта?
О: На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP

В: Скачался какой то файл .zip, куда его теперь?
О: Это архив. Можно открыть стандартными средствами Windows, но думаю у всех на компьютере установлен WinRAR, архив нужно правой кнопкой и извлечь.

В: Я совсем новичок! Что мне делать с Ардуиной, где взять все программы?
О: Читай и смотри видос http://alexgyver.ru/arduino-first/

В: Вылетает ошибка загрузки / компиляции! О: Читай тут: https://alexgyver.ru/arduino-first/#step-5

В: Сколько стоит?
О: Ничего не продаю.

Вопросы по этому проекту

В: Подойдёт ли обычная RGB лента?
О: Нет.

LED-матрица 8×8

Матричный светодиодный индикатор состоит из нескольких рядов и столбцов светодиодов, которыми можно управлять по отдельности или группами.

Светодиодные матрицы бывают одноцветными, двухцветными и RGB (позволяют получать любой цвет). /p>

Очень популярна разновидность матричного индикатора, имеющего восемь рядов и восемь столбцов с красными или зелёными светодиодами (общее число 64). Все светодиоды в матрице соединены по схеме с общим катодом.

Принципиальная схема выглядит немного запутано.

Fritzing: led matrix display

Если смотреть с обратной стороны матрицы, вывод 1 будет находиться справа внизу. Иногда у вывода можно увидеть маленькую цифру 1. Либо имеется дополнительная выемка на стороне матрицы. Выводы нумеруются в направлении по часовой стрелке (если смотреть со стороны выводов), то есть вывод 8 находится слева внизу, а вывод 16 — справа вверху.

Если смотреть со стороны матрицы, то первый вывод будет в левом нижнем углу, затем нумерация идёт против часовой стрелки.

Пробное подключение

У матрицы шестнадцать выводов, что представляет определённую проблему при прототипировании. Приходится задействовать практически все выводы платы. Но так как все светодиоды в матрице независимы, мы можем поиграться с одной. Соединим матрицу с платой по следующей схеме: вывод 9 от матрицы соединяем с выводом 2 на плате, а вывод 13 от матрицы с GND через резистор.

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

В реальных проектах мы должны соединить все выводы матрицы. Так как их шестнадцать, то кроме цифровых портов нам нужно задействовать и аналоговые, которые могут работать как цифровые. В этом случае порт A0 становится 14, A1 – 15 и т.д. Соединив все выводы матрицы, можно включить нужный светодиод, подавая HIGH на вывод ряда и LOW на вывод столбца. Включим светодиод из второй строки и первой колонки.

07.Display: RowColumnScanning

В состав Android IDE входит пример для светодиодной матрицы File | Examples | 07.Display | RowColumnScanning. Суть в следующем – с помощью двух потенциометров считываем показания с аналоговых выводов в интервале от 0 до 7. Показания от первого потенциометра указывают на вывод из ряда, а от второго на вывод из колонки матрицы. Таким образом, мы можем крутить ручки двух потенциометров и выбирать, какой светодиод из матрицы следует включить.

Я предлагаю упростить пример. Уберём потенциометры и удалим функцию readSensors() из скетча. Теперь, чтобы включить любой светодиод, нужно указать номер ряда и номер колонки в двумерном массиве и подать на него LOW.

Включим светодиоды по диагонали.

Бегущие огни

Модифицируем скетч, чтобы создать анимацию бегущих огней (источник).

Создаём битовую карту для символов

Можно заранее подготовить некоторые наборы включённых и выключенных светодиодов для отображения символов. Сделаем карту для символов A, B, C, D, E.

Управление через сдвиговый регистр

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

Находим выводы 1 и 16 с помощью мультиметра

Если у вашей LED-матрицы нет маркировки, то определить выводы 1 и 16 можно с помощью мультиметра. Включите его в режим прозвонки диодов и приставьте щупы к крайним выводам в разных комбинациях. Одна из комбинаций включит светодиод (5 ряд, 8 столбец). Красный щуп укажет на первый вывод, чёрный – на 16.

Матрица с драйвером MAX7219

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

Благодаря применению SPI модуль имеет только пять выводов: питание, земля и три цифровых вывода.

Модули можно соединять между собой, получая большое табло.

Сначала попробуем вариант включения любого светодиода матрицы вручную. В коде используются несколько функций. Для одиночного модуля вызываем функцию maxSingle(). Если используется несколько модулей, то уберите комментарии с вызовов функций maxAll(), maxOne().

При вызове функции maxSingle() в первом аргументе указываем номер ряда, во втором число в степени двойки – 1, 2, 4, 8 и т.д.

Драйвер MAX7219 и библиотека LedControl

Управлять светодиодной матрицей можно не только самостоятельно, но и с помощью различных библиотек. Одна из таких библиотек LedControl (не обновляется с 2015 года). Библиотека доступна через менеджер библиотек (LedControl by Eberhard Fahle Version 1.0.6).

Основные функции библиотеки: setLed(), setRow(), setColumn().

Синтаксис функции setLed():

В параметре add указывается адрес матрицы. Если матрица одна, то значение должно быть равно 0.

Параметр row отвечает за ряд, параметр col за столбец. Параметр state отвечает за состояние светодиода: true или 1 включает его, а false или 0 – выключает.

Функции setRow(addr, row, value) и setCol(addr, column, value) работают непосредственно с рядами или столбцами.

Скетч с применением библиотеки. Будет запущена небольшая анимация.

Хотя в предыдущем примере использовались порты 2, 3 и 4, принято для матрицы использовать порты 9 (CS), 11 (DIN), 13 (CLK) или другие варианты. Ещё один скетч, который будет поочерёдно выводить смайлики трёх видов: грустный, нейтральный, весёлый.

Дополнительные материалы для изучения библиотеки доступны на отдельном сайте.

Визуальный редактор

Рассмотрим ещё один пример создания бегущей строки со словами “Я ❤ кота”. Символы для фразы уже подготовлены. Вы можете создать собственные символы и добавить в код.

Редактор для создания собственных символов для матрицы с драйвером MAX7219

Простой pov дисплей на базе arduino

Плата расширения Arduino TFT

Arduino TFT – это плата расширения для Ардуино, которая содержит TFT-экран с подсветкой и разъем для карты памяти формата microSD. С помощью специальной библиотеки TFT на экран можно выводить текст, изображения или геометрические фигуры.

Расположение внешних выводов платы расширения соответствует специальным разъемам на Arduino Esplora и Arduino Robot, что облегчает подключение экрана к этим устройствам. Однако, TFT-дисплей можно использовать с любой моделью Ардуино.

Библиотека TFT включается в состав среды разработки Ардуино. начиная с версии 1.0.5.

Библиотека

Библиотека Arduino TFT разработана на основе библиотек Adafruit GFX и Adafruit ST7735, и значительно расширяет их возможности. Библиотека GFX в основном содержит процедуры отрисовки графики, в том время, как ST7735 – функции для взаимодействия с TFT-экраном. Те дополнения библиотек, которые касаются Ардуино, спроектированы таким образом, чтобы максимально соответствовать API языка Processing.

Библиотека имеет обратную совместимость, что позволяет вам использовать в программах функции Adafruit (подробнее о них см. здесь).

Методы библиотеки TFT опираются на функции библиотеки SPI, поэтому во всех программах, работающих с TFT-экраном, должна быть объявлена библиотека SPI. Соответственно, при работе с SD-картой памяти – необходимо объявить библиотеку SD.

Организация экрана

По умолчанию экран имеет горизонтальную ориентацию, соответственно, его ширина – больше, чем высота. Верхняя часть экрана находится с той стороны платы, где указана надпись “SD CARD”. При такой ориентации, разрешение экрана составляет 160 х 128 пикселей.

Систему координат дисплея лучше всего представить в виде сетки, каждая ячейка которой является отдельным пикселем. Местоположение пикселя задается парой координат. Точка в левом верхнем углу экрана будет иметь координаты 0,0. Если эта точка сместится в верхний правый угол, то ее координаты будут равны 0, 159; в левый нижний угол – 127,0; в правый нижний – 127, 159.

Дисплей можно использовать и в вертикальном положении (также известном как “портретная ориентация”). Для этого достаточно вызвать функцию setRotation(0), после чего оси x и y поменяются местами. После вызова этого метода, функции screen.width() и screen.right() станут возвращать уже другие значения.

Цвета

Экран позволяет передавать цвет глубиной 16 бит. Красная и синяя составляющие цвета могут принимать 32 различных значения (разрядность 5 бит), а зеленая составляющая – 64 значения (разрядность 6 бит). Однако, с целью совместимости с другими программами, библиотека все равно работает с 8-битными значениями красного, зеленого и синего каналов (0 – 255), пропорционально масштабируя их в необходимый диапазон.

Аппаратный и программный интерфейс SPI – что лучше?

Организовать работу с TFT-экраном можно двумя способами. Первый способ – использовать аппаратную шину SPI Ардуино, второй – вручную объявить расположение необходимых выводов. С точки зрения функциональности экрана, нет никакой разницы между первым и вторым способом. Однако скорость работы аппаратного интерфейса SPI значительно выше.

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

Подключение экрана

Подключение к Arduino Esplora

На лицевой стороне Arduino Esplora есть специальный разъем для подключения экрана. Вставьте экран Ардуино в этот разъем так, чтобы синяя надпись “SD Card” была расположена возде порта USB.

Подключение к другим платам Ардуино

Чтобы узнать, как подключать экран к другим моделям Ардуино, прочтите это руководство.

Пишем первую программу

Для начала работы с TFT-экраном, сперва попробуем написать программу, которая будет отрисовывать простую линию. После этого напишем программу, формирующую 2 цветных прямоугольника, пересекающие экран по горизонтали.

В примерах вначале будут приведены листинги программ для Arduino Uno, Leonardo и др. моделей. Листинги для Arduino Esplora будут приведены ниже.

Итак, в начале программы, объявим выводы Ардуино, которые будут использоваться для взаимодействия с экраном, импортируем необходимые библиотеки и создадим экземпляры основных классов библиотеки TFT:

В блоке setup() необходимо запустить библиотеку функцией begin() и очистить экран, установив черный цвет фона с помощью функции background().

В блоке loop(), для отрисовки прямой линии на экране необходимо вызвать функцию line(). Функция line() принимает четыре аргумента: начальные координаты x и y, конечные координаты x и y. Чтобы нарисовать прямоугольник, необходимо вызвать функцию rect(), которая также принимает четыре параметра: координаты x и y левого верхнего угла, ширина и высота прямоугольника в пикселях. Между вызовами этих функций можно изменить цвет выводимой фигуры с помощью функций stroke() или fill(). Функция stroke() изменяет цвет линии или контура геометрической фигуры, а функция fill() – изменяет цвет заливки фигуры. После вызова функции noStroke() библиотека не будет отрисовывать границы выводимых фигур. Чтобы отменить действие этой функции, достаточно вызвать метод stroke().

Структура программы для Arduino Esplora практически ничем не отличается. В Arduino Esplora предусмотрен отдельный разъем для подключения TFT-экрана, поэтому выводы, взаимодействующие с ним, заданы аппаратно и не подлежат изменению. В программе в этом случае необходимо использовать специальный класс EsploraTFT для работы с экраном.

Именно поэтому в программе не нужно указывать выводы Ардуино, которые будут взаимодействовать с экраном; эта информация автоматически содержится внутри создаваемого объекта:

Перемещения по экрану

Иллюзия движения или анимация создается путем быстрого стирания и отрисовки изображения на экране. При использовании языка Processing на мощном компьютере, для очистки экрана и отрисовки картинки в новой позиции можно вызывать функцию background() перед каждым вызовом функции draw(). Однако производительность Arduino, по сравнению с настольным ПК, весьма ограничена, поэтому выполнение функции background() из библиотеки TFT занимает определенное время.

В условиях ограниченного быстродействия, для создания иллюзии движения лучше проверять положение объекта в цикле loop(). Если положение объекта изменилось, то необходимо закрасить его фоновым цветом, а затем перерисовать объект в новой позиции. Благодаря тому, что в данном случае обновляется не весь экран, а лишь некоторые его пиксели, процесс обновления картинки ускоряется и создается иллюзия движения.

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

В цикле loop() мы вначале обновляем позицию точки, добавляя к переменным x и y величину направления движения. После этого проверяем, отличается ли текущее и предыдущее положение точки. Если отличается, то стираем предыдущую точку, закрашивая ее фоновым цветом, а затем рисуем новую точку в необходимой позиции. Если точка “долетает” до границы экрана – инвертируем направление движения.

Версия этой программы для Arduino Esplora приведена ниже:

Выводим текст

В библиотеке TFT содержится базовый шрифт для вывода текста на экран. По умолчанию, размер символов составляет 5х8 пикселей (5 – в ширину, 8 – в высоту). В библиотеке предусмотрена возможность изменения размера шрифта на 10×16, 15×24 или 20×32. Для получения дополнительной информации о шрифтах см. страницу Adafruit о работе с графическими примитивами.

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

В этом же блоке отобразим на экране статический текст, который не будет меняться в процессе работы программы. С помощью функции setTextSize() можно увеличить размер шрифта, чтобы выделить на экране самые важные элементы. Динамический текст, который будет отображаться на экране, должен храниться в символьном массиве. Упросить работу с массивами позволяет класс String.

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

Тот же самый код для Arduino Esplora:

Выводим изображение из файла, находящегося на SD-карте памяти

Библиотека TFT позволяет считывать .bmp-файлы с SD-карты памяти и выводить их содержимое на экран. Причем отображаемые картинки могут не соответствовать разрешению TFT-экрана (160×128). Следует иметь ввиду, что Ардуино не может модифицировать изображения, поэтому все необходимые манипуляции с графическими файлами (такие, как масштабирование, обрезка и т.д.) необходимо сделать до их “заливки” на SD-карту.

В следующем примере показана работа с графическим файлом “arduino.bmp”, расположенном в корне SD-карты памяти, и содержащим изображение размером 160×128 пикселей. В программе осуществляется считывание файла и вывод его на экран с помощью библиотеки TFT.

Помимо уже знакомых вам библиотек, в этом примере понадобится подключить еще одну библиотеку – SD. Также необходимо объявить вывод CS, связанный с разъемом SD-карты.

Класс PImage используется для загрузки изображения (этот класс может также использоваться для проверки формата графического файла на предмет его совместимости с библиотекой TFT).

После того, как файл будет прочитан, Ардуино выведет изображение в указанных вами координатах. В данном случае картинка будет выведена, начиная с левого верхнего угла экрана.

Тот же самый код для Arduino Esplora: :

Что дальше?

Теперь, когда вы разобрались с принципами работы дисплея, загляните в справку по библиотеке TFT – там вы найдете информацию об API библиотеки, а также дополнительные примеры кода. Для получения дополнительной технической информации, см. страницу с описанием платы расширения Arduino TFT. Также не помешает посетить страницу с описанием графической библиотеки Adafruit – там можно найти дополнительную информацию о функциях, не освещенных в данном руководстве.

Arduino часы на LCD TFT 3,5″

Сегодня я хочу поделится инструкцией по изготовления оригинальных часов с датчиком температуры. В качестве контролера Arduino Uno. Для отображения часов, даты и температуры я буду использовать цветной LCD TFT экран. Экран использует много контактов Arduino, поэтому мы обойдемся без модуля RTC.

Для реализации данного проекта нам понадобится:
– Arduino Uno
– LCD TFT 3.5” Shield для подключения к Arduino Uno
– Датчик температуры ds18b20
– Резистор 4.7 Ком 0.25 Вт
– Резистор 62 Ом 2 шт
– Аккумулятор Ni-Mn, 1.2V, 1000mA 6 шт
– Синий светодиод 5мм 4 шт
– Фанера толщиной 10 мм
– Немного тонкого пластика или картона
– Наждачная бумага
– Электролобзик
– Термоклей
– Паяльник
– Припой, канифоль
– Изолента
– Двусторонний скотч
– Соединительные провода
– Акриловая краска
– Красители для акриловой краски
– Дрель
– Сверла по дереву 5 мм и 3 мм
– Саморезы по дереву 3 х 30 мм

Шаг 1 Подготовка экрана.
Для начала возьмем экран, перед установкой его необходимо немного подготовить. В моем случае он выглядит так:

У вас он может немного отличаться, их много разновидностей. Подсветка экрана запитана через стабилизатор на 3.3 вольта и резистор от 5 вольт с Arduino. Это хорошо видно на фото:

Такая схема делает не возможным управление подсветкой, а оно пригодится, делать меньше яркость на ночь, например. Для осуществления возможности контроля яркости разрезаем дорожку около резистора и припаиваем провод соединяющий выход стабилизатора напряжения и резистор. Приклеиваем сверху изоленту, чтобы не было случайных КЗ. Потом мы разрежем этот провод и подключим к Arduino или просто поставим выключатель в разрыв. В итоге должно получится так:

Теперь экран готов к установке

Шаг 2 Подготовка Arduino Uno.
Экран использует много контактов Arduino, кроме этого на плате с экраном часто размещают слот под SD карту. Еще одна проблема заключается в том, что при соединении экрана и Arduino оставшиеся выводы Arduino становятся не доступны. Поэтому надо выбирать аналог Arduino Uno с подготовленными дополнительными посадочными гнездами для выводов. Таким образом мы сможем припаять гребенку к свободным выводам в обратную сторону. Итак, мы откажемся от слота SD карты в пользу свободных выводов. Распаиваем в обратную сторону следующие выводы: D0, D1, D10, D11, D12, D13, A5. Также с обратной стороны нам понадобятся выводы +5 вольт, GND, RES. Для питания будем использовать Ni-Mn аккумуляторы, и будет необходимо их заряжать, для этих целей припаиваем провода к разъему питания Arduino, таким образом мы сможет и заряжать аккумуляторы и питать Arduino во время зарядки. В конечном итоге получаем следующее:

Можно перейти к корпусу.

Шаг 3 Изготовление корпуса.
Начнем с изготовления корпуса для наших часов. За основу возьмем фанеру толщиной 10 мм. Форма может быть разной и, если вам не понравилась выбранная мною форма, вы можете изготовить шаблон и вырезать своей формой. Но если вы решили сделать такой же, как и у меня, тогда распечатываем следующую картинку на любом принтере в масштабе 100%:

Вырезаем распечатанный шаблон по внешнему краю. Прикладываем шаблон к фанере, очерчиваем и вырезаем, на этот раз из фанеры, две такие детали. В первой детали необходимо вырезать прямоугольник размером нашего экрана. Для этого размещаем экран посередине нашей заготовки, обратите внимание, ориентировать по середине надо сам экран, плата на которой находится наш экран не симметрична. Поэтому посередине размещаем сам экран, а очерчивает по размерам платы и вырезаем в заготовке этот прямоугольник:

Далее необходимо соединить экран и Arduino Uno. Прикладываем к нашей заготовке и отмечаем на фанере места вырезов под USB порт и разъем питания Arduino. Используя нож прорезаем по отмеченным линиям, но не до конца, а на только на нужную глубину:

Кладем заготовку из фанеры на ровную поверхность, внутрь кладем экран. Ровная поверхность нужна чтобы экран и передняя часть заготовки находилась в одной плоскости. Обратите внимание чтобы вырезы под USB и разъем питания Arduino совпадали с их фактическим расположением. Используя термоклеевой пистолет приклеиваем экран к фанере, заодно можно приклеить и провода подсветки, чтобы их случайно не выдрать:

С лицевой стороны будет выглядеть так:

Покрываем нашу заготовку акриловой краской. Я выбрал акриловою краску так как она не пахнет и быстро сохнет. Используя колер придаем белой краске нужный нам цвет. Мне нравится фиолетовый. Вы можете покрасить в любой понравившийся вам цвет:

Теперь переходим ко второй заготовке, в ней необходимо вырезать прямоугольник размером 75 мм на 35 мм, для доступа к выводам Arduino. А также надо сделать пять отверстия диаметром 5 мм для светодиодов. И прорезь для выключателя. И отверстия 3 мм под саморезы. Также, как и первую заготовку красим вторую:

Для соединения этих частей из фанеры той же толщины изготовим два прямоугольники размером 20 мм на 40 мм и один квадрат со стороной 20 мм. И просверливаем в них отверстия 3 мм под саморезы:

Шаг 4 Электрика.
Ставим Arduino на место:

Прикручиваем наши соединительные прямоугольники как показано на фото:

Берем аккумуляторы, спаиваем их последовательно по три штуки, выводим провода и скручиваем изолентой. Размещаем их в нижних частях лицевой заготовки, с обратной стороны и приклеиваем на термоклей. Провод от минусового контакта разъема питания Arduino припаиваем к минусу первой тройки аккумуляторов. Плюс от первой тройки припаиваем к минусу второй тройки аккумуляторов. Плюс от второй тройки паяем к одному из контактов выключателю. Провод от плюсового контакта разъема питания Arduino паяем ко второму контакту выключателя. Проше говоря: все аккумуляторы должны быть соединены последователь, минус от них припаян к минусу разъема питания Arduino, а плюс через выключатель к плюсу разъема питания:

Переходим к задней части. В проделанные отверстия вставляем светодиоды и фиксируем их термоклеем. Спаиваем их параллельно по два светодиода и не забываем про резисторы на плясовой провод. Минус от светодиодов подключаем к GND, плюс к D11 Arduino.

В верхнее отверстие вставляем датчик температуры ds18b20. Он обладает высокой точностью измерения, погрешность не более 0,5 °C. Датчик откалиброван при изготовлении, какой-либо дополнительной настройки не требуется. Диапазон измерения температуры -55 … + 125 °C. Есть два режима работы: с внешним источником питания и «паразитного питания». Мы будем использовать внешнее питание, так как при этом он работает стабильнее. Подключение следующее:

Так же фиксируем его термоклеем. В конечном итоге должно получится следующее:

Контакт DQ датчика температуры подключаем к D10 Arduino. Не забудьте припаять подтягивающий резистор между DQ и +5(VDD).
Перед окончательной сборкой еще раз проверьте чтобы все было припаяно и подключено:

Шаг 5 Собираем все вместе.
Аккуратно, чтобы не порвать провода, переворачивает заднюю часть и кладем ее на лицевую часть. В местах крепления соединительных прямоугольников проделываем отверстия и вкручиваем саморезы, соединяя таким образом обе части:

Теперь из тонкого пластика вырезаем полости толщиной 35 мм. На двусторонний скотч клеим эти полости по кругу на боковины наших часов:

Также из тонкого пластика вырезаем внутренние элементы бумажного шаблона и наклеиваем их на лицевую сторону часов:

Для зарядки аккумуляторов и работы часов во время зарядки необходим блок питания напряжением 7.2 – 8 V, с ограничение тока в 600 mA. Если у вас будут другие аккумуляторы, то и блок питания нужно подбирать другой, главное чтобы ток зарядки не превышал 10% от емкости аккумуляторов.

На этом сборка закончена, осталось только отредактировать и записать скетч.

Шаг 6 Подготовка среды и заливка скетча.
Для редактирования и заливки скетча вначале надо установить Arduino IDE с официального сайта:
www.Arduino.cc.

Затем установить следующие библиотеки. Для работы с экраном библиотека UTFT:

Для подключения датчика температуры библиотека OneWire:

Для установки этих библиотек распакуйте архивы и поместите распакованные файлы в папку «libraries», находящуюся в папке с установленной Arduino IDE. Или не распаковывая скачанные архивы, в среде Arduino IDE выберите меню Скетч – Подключить библиотеку. В самом верху выпадающего списка выберите пункт «Добавить .Zip библиотеку». Не забудьте после всего этого перезагрузить Arduino IDE. Скетч для часов:

Датчик температуры работает по протоколу One Wire и имеет уникальный адрес для каждого устройства – 64-разрядный код. Чтобы каждый раз не искать этот адрес, подключаем датчик к Arduino, заливаем в нее скетч находящийся в меню Файл – Примеры – Dallas Temperature – OneWireSearch. Далее запускаем Инструменты – Монитор порта. Arduino должна найти наш датчик, написать его адрес и текущие показания температуры. Копируем или просто записываем адрес вашего датчика. Открываем скетч Ard_LCD_TFT_Term, ищем строку:

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

RoboHobby

Детали для моделирования роботов

Категории товаров

Поиск товаров

Программирование

Уроки

Оплата и доставка

Урок 5. Вывод информации на OLED дисплей

Это пятый урок из цикла «Знакомство с Arduino». В этом уроке Вы научитесь основам работы с OLED дисплеем.

Для урока Вам понадобится следующие детали:

  • Arduino Nano;
  • беспаечная макетная плата (она же breadboard);
  • провода типа папа-папа;
  • дисплей OLED 0.96».

Также Вам понадобится скачать и установить библиотеки Adafruit_GFX и Adafruit_SSD1306 и среду Arduino IDE. Если не знаете/забыли как это сделать, то вернитесь к уроку по среде Arduino IDE.

После установки необходимых библиотек, для OLED 128 × 64 нужно отредактировать файл Adafruit_SSD1306.h. Найдите строки:

И раскомментируйте строчку #define SSD1306_128_64. Должно получиться так:

Если у нужно пользоваться дисплеем 128 × 32 или 96 × 16 тогда раскомментируйте нужную строку, а остальные закомментируйте.

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

Давайте научимся основам работы с OLED дисплеями. Мы изучим их подключение к Arduino и основные команды для работы с ними. В наших примерах рассмотрим принципы вывода информации на OLED.

OLED дисплеи подключаются к Arduino по стандартному интерфейсу I2C (есть модели, которые подключаются по SPI). Подключите OLED к Arduino, воспользовавшись следующими схемами:

Электрическая принципиальная схема:

Схема подключения на макетной плате:

Так, дисплей мы подключили, а как же на него вывести информацию? Давайте начнём с классического примера из программирования: вывести на экран «Hello, world!».

Итак, схема у нас уже собрана. Подключите модуль Arduino к компьютеру. Далее откройте среду разработки Arduino IDE. Вам нужно только записать в Arduino следующую программу:

Текст программы:

При помощи директивы #include мы подключаем необходимые для работы с OLED библиотеки. Функция setup() запускается однократно при запуске программы. В ней мы инициализируем дисплей, а также выставляем все необходимые настройки (цвет текста (display.setTextColor(WHITE)), его размер (display.setTextSize(1)) и устанавливаем местоположение курсора, откуда мы начнём выводить наше сообщение (команда display.setCursor(0, 0)). После того, как мы настроили OLED, можно выводить на экран наше сообщение. Для этого при помощи команды display.print («Hello, world!») мы записываем наше сообщение в буфер, а затем выводим его непосредственно на экран (команда display.display()). Обратите внимание, весь текстовая информация сначала помещается в буфер, а затем при помощи команды .display() она отображается на экране (т.е. нужные пиксели загораются). Функция loop() вызывается после функции setup(). Функция представляет собой бесконечный цикл, в котором выполняется пользовательская программа. В ней при мы ничего не делаем, т.к. нам просто нужно было вывести сообщение однократно, что мы и сделали в setup().

Когда программа успешно записана в Arduino, на OLED в верхнюю строчку будет выведено наше сообщение «Hello, world!». Мы выполнили поставленную задачу.

Существует большое количество функций, которые позволяют добавить свои краски при выводе информации на OLED. Одной из таких «фишек» является автоматическое прокручивание текста в различные стороны (scrolling).

Давайте попробуем прокручивать наше сообщение поочерёдно слева направо и затем справа налево. Запишите в модуль Arduino Nano следующую программу:

Читайте также:  Автомат световой день
Рейтинг
( Пока оценок нет )
Загрузка ...
Adblock
detector