0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Используем библиотеки Arduino

Используем библиотеки Arduino

Библиотеки являются очень мощным инструментом при работе с Ардуино, особенно для новичка. Библиотека является файлом (набором файлов), содержащим точно такой же С++ код, на котором мы пишем скетч (иногда встречаются и ассемблерные вставки). Мы можем подключить библиотеку в свой код и использовать возможности, которые она даёт, а вариантов там весьма много: готовые “инструменты” для работы с внешними датчиками и модулями, для работы с внутренней периферией микроконтроллера (таймеры, АЦП, память), библиотеки различных математических инструментов и многое многое другое. Мой личный список интересных библиотек, составленный за годы работы с платформой, можно посмотреть здесь.

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

Установка ТВ библиотеки

Начните с загрузки Arduino IDE, затем нажмите:

Sketch → Include Library → Manage Libraries
(Эскиз → Включить библиотеку → Управление библиотеками)

В открывшемся окне библиотеки выберите строку поиска и введите «TV Text».

Когда поиск будет завершен, выберите библиотеку ТВ-текста «TV Text» и нажмите «установить» (англ. — install).

Последний шаг будет включать в себя открытие встроенного примера, чтобы мы могли проверить его. Нажмите:

File → Examples → TV Out → Demo PAL
(Файл → Примеры → TV Out → Demo PAL)

Сборка устройства

Этот проект использует макет, чтобы помочь подключить Arduino Uno к двум резисторам и композитному видеокабелю. Ардуино подключен к компьютеру для легкого программирования, а также для обеспечения питания, и как только настройка будет выполнена (как показано ниже), вы можете запрограммировать Arduino и включить телевизор.

Читать еще:  Bqs 5515 прошивка. Как нас находят

Если все идет по плану, у вас должно быть что-то похожее на экране телевизора, показанном ниже:

Это был первый урок из серии взаимодействия Ардуино и ТВ. Если мы получим хорошую обратную связь мы продолжим публикации уроков в данном направлении. Все отличных проектов.

Уроки и статьи, которые вас могут заинтересовать:

Отображение данных датчика DHT11 от Arduino на телевизоре Из этого урока вы узнаете, как отображать данные, например, датчика температуры…

Как подключить к Ардуино микро-сервопривод SG90? Отвечаем на вопрос о том, как можно подключить к Arduino микро-сервопривод…

Самые интересные Ардуино проекты Рассмотрены популярные, необычные и простые Ардуино проекты на самой популярной платформа…

Решение конфликтов

Иногда случается конфликт библиотек, который заключается в том, что IDE находит на компьютере несколько одинаковых библиотек. Об этом сообщается в логе компиляции предупреждением: “несколько библиотек найдено… используется то, не используется сё“. Если вы ставили некоторые библиотеки через менеджер (Скетч/Подключить библиотеки/Управлять библиотеками…), они будут воевать с библиотеками, установленными вручную в папку с программой. Где вообще лежат библиотеки?

  • Стандартные общие библиотеки – в папке с программой/libraries
    • 64-битная версия Windows – C:Program Files (x86)Arduinolibraries
    • 32-битная версия Windows – C:Program FilesArduinolibraries
  • Установленные через менеджер – ДокументыArduinolibraries
  • Библиотеки для конкретного ядра:
    • Стандартное ядро Arduino – C:Program Files (x86)Arduinohardwarearduinoavrlibraries
    • Другие ядра – C:UsersusernameAppDataLocalArduino15packagesядроhardwareплатформаверсияlibraries

Конфликтовать могут и ядра, поэтому решением всех проблем может стать чистая установка Arduino IDE с удалением остатков от предыдущей версии. Удаляем программу как программу, и вручную сносим папки:

  • Папка с программой
    • 64-битная версия Windows – C:Program Files (x86)Arduinolibraries
    • 32-битная версия Windows – C:Program FilesArduinolibraries
  • ДокументыArduino
  • C:UsersusernameAppDataLocalArduino15

Шаг 3. Пишем код (игру)

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

Читать еще:  Прошивка для bq 5030 через флеш тул

Начинаем с экрана приветствия, куда без него. Но тут встревает важный вопрос, как назвать сие чудо? Я пораскинул мозгами и придумал — Shimo. Звучит неплохо, даже технологично, по-китайски, конечно, но это не беда.

Дальше вернемся к самой игре. И снова сложный вопрос: какую игру делать? Так как я рукожоп не очень старательный и усердный человек, а также новичок, решил написать Пинг-понг.

Начинаем. Чертим линию через середину экрана с помощью TV.draw_line(60,0,60,96,1);. Появляется шарик ровно в центре экрана. Напишем функцию его движения void ballmove(int vel, int angle). Устанавливаем с помощью TV.set_pixel(x,y,1);, переменные я так и назвал.

Далее перед манипуляциями с шариком прописываем обновление экрана, а точнее, чтобы шарик не «наследил» на экране, поэтому при переходе на следующую позицию нужно закрашивать черным предыдущую. Для этого нам нужно прописать перед всем остальным TV.set_pixel(x,y,0);. После всех изменений переменных координат нужно прописать уже установку позиции и небольшую задержку — TV.delay(50);. Примерно вот так должно получиться:

Теперь о самих изменениях координат. Всего восемь направлений (1-8), переменная int angle. А там уже просто, в зависимости от поворота, отнимаем или прибавляем к переменным какую-либо часть от int velocity. Я сделал так:

Теперь движения ракеток. Здесь важное уточнение — я использовал только координаты по y, так как позиции ракеток по x не изменяются. Прописываем следующую функцию void racketsmove(). Далее рисуем ракетки, переменные int yb1, int yb2, TV.draw_line(10, yb1+8, 10, yb1-8, 1); и TV.draw_line(110, yb2+8, 110, yb2-8, 1);. Обновление экрана, то есть «без следа», аналогично случаю с шариком.

Управление ракетками производится с кнопок. Подключаем кнопки, пины 2 и 3 — первая ракетка, 4 и 5 — вторая ракетка. Проверяем нажатие кнопок и изменяем координаты.

Читать еще:  Маленький настенный кондиционер. Кондиционеры для маленьких комнат. Инверторный напольный кондиционер

Вот такая функция:

Сейчас снова вернемся к ball. Теперь пропишем его коллизию и отталкивание от стен и ракеток. Функция — void ballcol(). Для этого просто проверяем его местонахождение относительно объектов, а потом и его угол. Затем этот угол изменяем на другой. С углом легко угадать.

Угол отражения равен углу падения

Можно сделать некоторые физические исключения для определенных зон ракеток.

Самое сложное позади, можете успешно вздохнуть.

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

Начнем с таймера. Есть переменная секунд float ts (в ней хранится абсолютно все время), переменная int tm (количество минут, которые мы получаем из ts). Задаем значение tm операцией tm = ts/60;. И выводим значения на экран, TV.print(81,1,tm); TV.print(97,1,».»); TV.print(100,1,int(ts-(tm*60)));.

Продолжим. Функция рестарта, называем void restart(). Здесь мы возвращаем изначальные значения переменных.

Финал, система подсчета баллов, она чересчур проста. Открываем гугл и вбиваем «Правила игры в настольные теннис». Ищем, за что очки даются. Находим часть про штрафы, а дальше мы успешно находим следующее: «Очко считается выигранным, если противник не успеет отразить правильно посланный ему мяч после первого отскока». Назревает вопрос, как отсчитывать удары и прочее. А удары и не нужно отсчитывать, ведь наш пинг-понг с двухмерной графикой.

Мы спокойно находим выход из положения и, как всегда, просто проверяем координаты относительно боковых стенок. Если происходит столкновение, то начисляем балл игроку на противоположной стороне поля. Функция — void ballscount(). Когда выйдет таймер — мы сравниваем баллы первого игрока (переменная int c1) и второго игрока (переменная int c2), объявляем победителя, делаем задержку и вызываем рестарт.

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

Для ленивых я просто напишу весь код.

Всего 218 строк.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector