
Съдържание:
- Стъпка 1: Изградете веригата на IR приемника
- Стъпка 2: Свържете серво, колона и държач за телефон
- Стъпка 3: Свържете LCD дисплея за отчитане на серво
- Стъпка 4: Използвайте приложен код и библиотеки, за да програмирате Arduino
- Стъпка 5: Свържете желания източник на захранване към Arduino и използвайте дистанционното, за да завъртите монтажа
- Стъпка 6: Прочетете това за Обяснение на изходния код
- Стъпка 7: Гледайте My Youtube Video за помощ
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 14:36

Тази инструкция е създадена в изпълнение на проектните изисквания на Makecourse в Университета на Южна Флорида (www.makecourse.com).
Искате ли да направите въртяща се стойка за телефон, за да можете да преглеждате съдържанието на телефона си в портретна или пейзажна ориентация, без да се налага да я държите? Тогава не търсете повече.
За да създадете този проект, ще ви трябва:
- Микроконтролер Arduino и IDE
- USB кабел за качване на код
- Платформа
- Джъмперни проводници
- ЛСД дисплей
- Серво
- Колона, която може да се прикрепи към серво
- IR дистанционно
- IR приемник
- 10k ом резистор
- Kenu Airframe+ Phone Clip (или нещо, което да държи телефона на място)
- 9 V батерия за преносимо захранване или просто захранван от USB Arduino
Стъпка 1: Изградете веригата на IR приемника


Първо, скочете GND и +5V от Arduino към захранващите релси на вашата дъска. След това прескочете своя 10k ом резистор от захранващата шина +5V към изходния щифт на фототранзистора на вашия IR приемник. След това използвайте джъмпер проводник, за да се свържете към щифт 11 на Arduino от изходния щифт на IR приемника. След това използвайте два джъмперни проводника, за да изпратите маса и +5V към съответните щифтове на IR приемника. RC филтърът, показан на схемата по -горе, не е необходим. И накрая, не направих схемата, показана в тази стъпка, и източникът за нея присъства на снимката.
Стъпка 2: Свържете серво, колона и държач за телефон



Сега, използвайте два джъмперни проводника, за да скочите от земята и +5V от релсите за захранване в съответно кафявите и червените проводници на серво. След това използвайте един джъмпер проводник, за да прикрепите щифт 9 на Arduino към оранжевия проводник на сервото.
След това прикрепете колона към главата на серво, както е показано на втората снимка.
Накрая прикачете нещо, което да държи телефона към колоната, като Kenu Airframe+, както е показано на третата снимка.
Стъпка 3: Свържете LCD дисплея за отчитане на серво

Прескачайте земята и +5V от релсите за захранване към съответните щифтове на LCD дисплея. Също така, прескочете щифтовете SDA и SCL от LCD към Ardiuno. SDA и SCL щифтовете на Arduino могат да бъдат идентифицирани от задната страна на дъската на Arduino и са двата пина над AREF и Ground над щифт 13. SCL щифтът е най -високият. Това позволява на LCD дисплея да отчете текущата позиция на серво.
Стъпка 4: Използвайте приложен код и библиотеки, за да програмирате Arduino

Изтеглете файла RotatingMountCode.zip. Инсталирайте Arduino IDE и разархивирайте изтегления файл в Documents / Arduino. Уверете се, че копирате съдържанието на папките ми скици и библиотеки в папката си скици и библиотеки. Отворете скицата на ServoIRandLCD и я качете на вашия Arduino.
Вижте по -късните стъпки за обяснение на кода.
Стъпка 5: Свържете желания източник на захранване към Arduino и използвайте дистанционното, за да завъртите монтажа


Или оставете Arduino включен в компютъра или го изключете от компютъра и използвайте 9V батерия, за да осигурите DC захранване на Arduino. И накрая, използвайте евтино IR дистанционно, за да управлявате сервото и следователно ориентацията на стойката за телефон!
Номер 1 на дистанционното трябва да зададе позицията на серво на 0 градуса, номер 2 на 90 градуса и номер 3 на 180 градуса. Междувременно бутоните + и - на дистанционното трябва да увеличат или намалят ъгъла на серво съответно с 1 градус.
Забележка: Ако използвате различно IR дистанционно от това на снимката тук, възможно е IR кодовете, съответстващи на различни бутони, да бъдат променени. Ако е така, променете скицата на ServoIRandLCD, за да използвате тези IR кодове вместо това.
Стъпка 6: Прочетете това за Обяснение на изходния код


Изходният код за скицата на Arduino може да се намери по -долу или в прикачения по -рано.zip файл. Необходимите библиотеки могат да бъдат намерени само в прикачения по -рано.zip файл в стъпка 4.
Първото нещо, което кодът прави, е да включва необходимите библиотеки, необходими за изпълнение на всички функции в скицата. След това той обявява щифт 9 на Arduino за сигнален пин с активирана ШИМ за серво. Той също така прави щифт 11 на Arduino щифта, използван за IR приемника. След това декларира целочислена променлива, използвана за проследяване на позицията на серво в градуси и първоначално я задава на 0 градуса. След това инсталира необходимите обекти за IRrecv обект, серво обект и myDisplay LCD обект (който също е конфигуриран в същия ред), така че тези обекти могат да се използват по -късно.
След това в функцията за настройка серийният порт се стартира при 9600 бита/сек, така че серийният монитор може да се използва за проследяване на позицията на серво, ако желаете. Той също така прикрепя обекта myservo към щифт 9, стартира IR приемника и инициализира LCD дисплея.
Във функцията на основния цикъл, чието тяло се изпълнява само ако е получено инфрачервено предаване от IR приемника, IR приемникът декодира сигнала, изпратен до него от IR дистанционното, използвайки функцията декодиране (& резултати) и след това ако изразите определят какво за да настроите серво в зависимост от получената IR стойност. Функцията за запис се използва, за да настрои сервото на нейните подходящи степени, а функцията за четене се използва, за да намери текущия ъгъл на серво и да го увеличи или намали, ако е необходимо.
И накрая, текущият ъгъл на серво се изпраща както към серийния монитор, така и към LCD дисплея, използвайки функцията myservo.read (), а основните цикли се повтарят за неопределено време.
Програмен код:
#include // Стандартна библиотека на Arduino #включва // IR библиотека #включва "Wire.h" //Wire.h за LCD (понякога е необходимо) #include "LiquidCrystal_I2C.h" // LCD библиотека
#define servopin 9 // това определя щифт 9 като щифт, използван за проводника за управление на серво (оранжево)
int RECV_PIN = 11; // IR фототранзистор изпраща изход към пин 11
int currentAngle = 0; // декларира целочислена променлива currentAngle и зададена на 0
IRrecv unrecv (RECV_PIN); // инстанцира обект на IR приемник decode_results резултати; // създаване на обект decode_results. Този обект е отделен от IR приемника.
Servo myservo; // създаваме екземпляр на серво обект с име „myservo“// могат да бъдат създадени максимум осем серво обекта
LiquidCrystal_I2C myDisplay (0x27, 16, 2); // създаваме екземпляр на LCD обект и настройваме config
void setup () {
Serial.begin (9600); // стартиране на сериен порт
myservo.attach (servopin); // прикрепя серво на щифт 9 към серво обекта
unrecv.enableIRIn (); // стартиране на приемника
myDisplay.init (); // инициализира LCD
myDisplay.backlight (); // включване на LCD подсветката
}
void loop () {
if (unrecv.decode (& results)) // ако предаването е получено …
{Serial.print ("Получена IR стойност:");
Serial.println (results.value); // получена стойност на показване
// интерпретираме получените команди… if (results.value == 16724175) // 1 {// ляво 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); }}
unrecv.resume (); // Получаване на следващата стойност
// Отпечатване на сериен монитор Serial.print ("Текуща позиция на серво:");
Serial.println (myservo.read ()); // това извлича серво позицията и я изпраща на серийния монитор
// LCD печат myDisplay.clear ();
myDisplay.print ("Серво дег.:");
myDisplay.print (myservo.read ());
забавяне (200); // забавяне за стабилно задействане на сервото
}
Стъпка 7: Гледайте My Youtube Video за помощ

Вижте моя скрит видеоклип в YouTube, който изцяло обсъжда и демонстрира проекта, ако имате въпроси!
Препоръчано:
Бутон за въртящ се енкодер: 6 стъпки

Бутон за въртящ се енкодер: Това е въртящо се дистанционно управление, базирано на въртящ се енкодер. Той има следните функции: Батерия работи с много ниска консумация на ток, когато е активирана Автоматично активиране при завъртане на контрола Автоматичен сън след период на бездействие Конфигуриране
Таймер с Arduino и въртящ се енкодер: 5 стъпки

Таймер с Arduino и въртящ се енкодер: Таймерът е инструмент, често използван както в промишлени, така и в домакински дейности. Този монтаж е евтин и лесен за изработка. Също така е много гъвкав, като може да зареди програма, избрана според нуждите. Има няколко програми, написани от мен, за Ardui
Направи си сам въртящ се с два двигателя: 10 стъпки (със снимки)

Направи си сам въртящ се механизъм с два двигателя: Отначало винаги искам да имам грамофон, а наскоро установих, че е имало два двигателя с празен ход. Затова се чудех дали мога да направя въртящ се с тях. Без да се замислям, ще опитам! Принцип: Намаляването r
Как да използвате стъпков двигател като въртящ се енкодер и OLED дисплей за стъпки: 6 стъпки

Как да използвате стъпков двигател като въртящ се енкодер и OLED дисплей за стъпки: В този урок ще се научим как да проследяваме стъпките на стъпковия двигател на OLED дисплея. Гледайте демонстрационен видеоклип. Кредитът за оригиналния урок отива на потребителя на youtube " sky4fly "
Безкраен въртящ се въртящ момент: 3 стъпки

Безкраен въртящ се въртящ ток: Наскоро направих този дизайн за безкраен въртящ се връх, използвайки въртящ се магнит, за да създам вихрови ток в въртящия се връх. След няколко търсения не успях да намеря някой друг, използващ същия принцип за такова устройство, затова реших, че ще