Оглавление:

Поворотное крепление для телефона: 7 шагов
Поворотное крепление для телефона: 7 шагов

Видео: Поворотное крепление для телефона: 7 шагов

Видео: Поворотное крепление для телефона: 7 шагов
Видео: Обзор автомобильных держателей для телефона 2024, Июль
Anonim
Поворотное крепление для телефона
Поворотное крепление для телефона

Это руководство было создано во исполнение требований проекта Makecourse в Университете Южной Флориды (www.makecourse.com).

Хотите сделать поворотное крепление для телефона, чтобы можно было просматривать содержимое телефона в портретной или альбомной ориентации, не удерживая его? Тогда не смотрите дальше.

Для создания этого проекта вам понадобятся:

- Микроконтроллер Arduino и IDE

- USB-кабель для загрузки кода

- Макетная плата

- Провода перемычки

- ЖК дисплей

- сервопривод

- Колонна, которую можно прикрепить к сервоприводу

- ИК-пульт

- ИК-приемник

- резистор 10 кОм

- Kenu Airframe + Phone Clip (или что-то, что удерживает телефон на месте)

- Батарея 9 В для портативного питания или только Arduino с питанием от USB

Шаг 1. Соберите схему ИК-приемника

Постройте схему ИК-приемника
Постройте схему ИК-приемника
Постройте схему ИК-приемника
Постройте схему ИК-приемника

Сначала подключите GND и + 5V от Arduino к шинам питания на макете. Затем подключите резистор 10 кОм с шины питания + 5 В к выходному контакту фототранзистора ИК-приемника. Затем используйте перемычку для подключения к контакту 11 на Arduino от выходного контакта ИК-приемника. Затем с помощью двух перемычек отправьте заземление и + 5 В на соответствующие контакты ИК-приемника. RC-фильтр, изображенный на схеме выше, не нужен. Наконец, я не делал схему, показанную на этом этапе, и исходный код для нее представлен на картинке.

Шаг 2. Подключите сервопривод, колонку и держатель телефона

Подключите сервопривод, колонку и держатель телефона
Подключите сервопривод, колонку и держатель телефона
Подключите сервопривод, колонку и держатель телефона
Подключите сервопривод, колонку и держатель телефона
Подключите сервопривод, колонку и держатель телефона
Подключите сервопривод, колонку и держатель телефона

Теперь используйте две перемычки, чтобы перейти от земли и + 5 В шин питания макетной платы к коричневому и красному проводам сервопривода соответственно. Затем с помощью одной перемычки прикрепите контакт 9 Arduino к оранжевому проводу сервопривода.

Затем прикрепите колонку к головке сервопривода, как показано на втором рисунке.

Наконец, прикрепите что-нибудь, чтобы удерживать телефон на колонке, например, Kenu Airframe +, как показано на третьем рисунке.

Шаг 3: Подключите ЖК-дисплей для считывания сервопривода

Подключите ЖК-дисплей для считывания сервопривода
Подключите ЖК-дисплей для считывания сервопривода

Подключите заземление и + 5 В от шин питания макетной платы к соответствующим контактам на ЖК-дисплее. Кроме того, переместите контакты SDA и SCL с ЖК-дисплея на Ardiuno. Контакты SDA и SCL Arduino можно определить с задней стороны платы Arduino: это два контакта над AREF и заземление над контактом 13. Контакт SCL - самый высокий. Это позволяет ЖК-дисплею считывать текущее положение сервопривода.

Шаг 4: Используйте код и библиотеки, прикрепленные для программирования Arduino

Используйте код и библиотеки, прикрепленные для программирования Arduino
Используйте код и библиотеки, прикрепленные для программирования Arduino

Загрузите файл RotatingMountCode.zip. Установите Arduino IDE и разархивируйте загруженный файл в Documents / Arduino. Убедитесь, что вы скопировали содержимое папки с моими эскизами и библиотеками в папку с эскизами и библиотеками. Откройте эскиз ServoIRandLCD и загрузите его в свой Arduino.

См. Последующие шаги для объяснения кода.

Шаг 5: Подключите желаемый источник питания к Arduino и используйте пульт дистанционного управления для поворота крепления

Подключите желаемый источник питания к Arduino и используйте пульт дистанционного управления для поворота крепления!
Подключите желаемый источник питания к Arduino и используйте пульт дистанционного управления для поворота крепления!
Подключите требуемый источник питания к Arduino и используйте пульт дистанционного управления для поворота крепления!
Подключите требуемый источник питания к Arduino и используйте пульт дистанционного управления для поворота крепления!

Либо оставьте Arduino подключенным к компьютеру, либо отключите его от компьютера и используйте батарею 9 В для подачи постоянного тока на Arduino. Наконец, используйте дешевый ИК-пульт для управления сервоприводом и, следовательно, ориентацией крепления для телефона!

Номер 1 на пульте дистанционного управления должен установить положение сервопривода на 0 градусов, номер 2 на 90 градусов и номер 3 на 180 градусов. Между тем кнопки + и - на пульте дистанционного управления должны увеличивать или уменьшать угол сервопривода на 1 градус соответственно.

Примечание. Если вы используете другой ИК-пульт, отличный от изображенного здесь, возможно, изменились ИК-коды, соответствующие различным кнопкам. Если это так, измените эскиз ServoIRandLCD, чтобы вместо этого использовать эти ИК-коды.

Шаг 6. Прочтите это для объяснения исходного кода

Прочтите это для объяснения исходного кода
Прочтите это для объяснения исходного кода
Прочтите это для объяснения исходного кода
Прочтите это для объяснения исходного кода

Исходный код скетча Arduino можно найти ниже или в ранее прикрепленном файле.zip. Необходимые библиотеки можно найти только в ранее прикрепленном файле.zip на шаге 4.

Первым делом в код включены библиотеки, необходимые для запуска всех функций в скетче. Затем он объявляет вывод 9 на Arduino как сигнальный вывод с ШИМ для сервопривода. Он также делает вывод 11 на Arduino контактом, используемым для ИК-приемника. Затем он объявляет целочисленную переменную, используемую для отслеживания положения сервопривода в градусах, и изначально устанавливает для нее значение 0 градусов. Затем он создает экземпляры требуемых объектов для объекта IRrecv, сервообъекта и объекта myDisplay LCD (который также настраивается в той же строке), чтобы эти объекты можно было использовать позже.

Затем в функции настройки последовательный порт запускается со скоростью 9600 бит / сек, поэтому при желании можно использовать монитор последовательного порта для отслеживания положения сервопривода. Он также прикрепляет объект myservo к контакту 9, запускает ИК-приемник и инициализирует ЖК-дисплей.

В функции основного цикла, тело которой выполняется только в том случае, если ИК-передача получена от ИК-приемника, ИК-приемник декодирует сигнал, отправленный ему с ИК-пульта, с помощью функции декодирования (& результатов), а затем операторы if определяют, что установить сервопривод в зависимости от полученного значения IR. Функция записи используется для установки сервопривода в соответствующие градусы, а функция чтения используется для определения текущего угла сервопривода и увеличения или уменьшения его по мере необходимости.

Наконец, текущий угол сервопривода отправляется как на последовательный монитор, так и на ЖК-дисплей с помощью функции myservo.read (), и основные циклы повторяются бесконечно.

Исходный код:

#include // Стандартная библиотека Arduino # include // ИК-библиотека #include "Wire.h" //Wire.h для ЖК-дисплея (иногда требуется) #include "LiquidCrystal_I2C.h" // ЖК-библиотека

#define servopin 9 // это определяет контакт 9 как контакт, используемый для вывода сервоуправления (оранжевый)

int RECV_PIN = 11; // ИК-фототранзистор отправляет выходной сигнал на вывод 11

int currentAngle = 0; // объявляем целочисленную переменную currentAngle и устанавливаем в 0

IRrecv irrecv (RECV_PIN); // создать экземпляр объекта ИК-приемника decode_results results; // создать экземпляр объекта decode_results. Этот объект находится отдельно от ИК-приемника.

Сервомашина; // создание экземпляра сервообъекта с именем 'myservo' // можно создать максимум восемь сервообъектов

LiquidCrystal_I2C myDisplay (0x27, 16, 2); // создаем объект LCD и настраиваем конфигурацию

void setup () {

Serial.begin (9600); // запускаем последовательный порт

myservo.attach (сервопин); // присоединяет сервопривод на выводе 9 к сервообъекту

irrecv.enableIRIn (); // запускаем приемник

myDisplay.init (); // инициализируем ЖК-дисплей

myDisplay.backlight (); // включаем подсветку ЖК-дисплея

}

void loop () {

if (irrecv.decode (& results)) // если передача получена…

{Serial.print ("Получено значение IR:");

Serial.println (результат.значение); // отображаем полученное значение

// интерпретировать полученные команды… if (results.value == 16724175) // 1 {// left myservo.write (0); }

if (results.value == 16718055) // 2 {// средний myservo.write (90); }

if (results.value == 16743045) // 3 {// правильно myservo.write (180); }

if (results.value == 16754775) // + {// увеличить currentAngle = myservo.read (); myservo.write (currentAngle + 1); } if (results.value == 16769055) // - {// уменьшить currentAngle = myservo.read (); myservo.write (currentAngle - 1); }}

irrecv.resume (); // Получаем следующее значение

// Последовательный монитор print Serial.print ("Текущая позиция сервопривода:");

Serial.println (myservo.read ()); // это извлекает положение сервопривода и отправляет его на последовательный монитор

// ЖК-печать myDisplay.clear ();

myDisplay.print ("Сервопривод:");

myDisplay.print (myservo.read ());

задержка (200); // задержка для стабилизации срабатывания сервопривода

}

Шаг 7. Посмотрите мое видео на Youtube, чтобы получить помощь

Если у вас есть вопросы, посмотрите мое частное видео на YouTube, в котором подробно обсуждается и демонстрируется проект!

Рекомендуемые: