Мазмуну:

Телефонду айлантуу: 7 кадам
Телефонду айлантуу: 7 кадам

Video: Телефонду айлантуу: 7 кадам

Video: Телефонду айлантуу: 7 кадам
Video: Телефон катып жатат эмне кылуу керек? ASANOV MOBILE 2024, Июль
Anonim
Телефонду айлантуу
Телефонду айлантуу

Бул көрсөтмө Түштүк Флорида университетинин Макекурстун долбоорунун талабын аткаруу үчүн түзүлгөн (www.makecourse.com).

Телефондун мазмунун кармай албай туруп, портрет же пейзаж багытында көрүү үчүн, айланма телефон орноткуңуз келеби? Андан кийин, мындан ары карабаңыз.

Бул долбоорду түзүү үчүн, сизге керек болот:

- Arduino микроконтроллери жана IDE

- USB кабели кодду жүктөө үчүн

- Нан тактасы

- Jumper Wires

- LCD дисплей

- Серво

- Сервого тиркеле турган мамыча

- IR Remote

- IR алуучу

- 10k Ом каршылыгы

- Kenu Airframe+ Phone Clip (же телефонду кармап турган нерсе)

- портативдүү кубат үчүн 9 В батарея же жөн гана USB менен иштеген Arduino

1 -кадам: IR алуучу микросхемасын куруу

IR алуучу микросхемасын куруңуз
IR алуучу микросхемасын куруңуз
IR алуучу микросхемасын куруңуз
IR алуучу микросхемасын куруңуз

Биринчиден, Arduinoдон GND жана +5V секирип, нан тактаңыздагы электр рельсине өтүңүз. Андан кийин, 10к Ом резисторуңузду +5В электр темир жолунан IR кабыл алуучу фототранзисторуңуздун чыккычына чейин секирип коюңуз. Андан кийин, IR кабылдагычтын чыккычынан Arduino 11 -пинге туташуу үчүн секирүүчү зымды колдонуңуз. Андан кийин, IR кабылдагычтын тиешелүү казыктарына жерге жана +5В жөнөтүү үчүн эки секиргич зымдарды колдонуңуз. Жогорудагы схемада сүрөттөлгөн RC чыпкасынын кереги жок. Акырында, мен бул кадамда көрсөтүлгөн схеманы жасаган жокмун жана анын булагы сүрөттө бар.

2 -кадам: Серво, Колонна жана Телефон кармагычты туташтырыңыз

Серво, Колонна жана Телефон кармагычты туташтырыңыз
Серво, Колонна жана Телефон кармагычты туташтырыңыз
Серво, Колонна жана Телефон кармагычты туташтырыңыз
Серво, Колонна жана Телефон кармагычты туташтырыңыз
Серво, Колонна жана Телефон кармагычты туташтырыңыз
Серво, Колонна жана Телефон кармагычты туташтырыңыз

Эми, жерден секирип өтүү үчүн эки секиргич зымды колдонуңуз жана 5В нан панелинин электр рельстерин, тиешелүүлүгүнө жараша, сервонун күрөң жана кызыл зымдарына салыңыз. Андан кийин, Arduinoдогу 9 пинти сервонун кызгылт сары зымына бекитүү үчүн бир секирүүчү зымды колдонуңуз.

Андан кийин, экинчи сүрөттө көрсөтүлгөндөй, сервонун башына мамыча тиркеңиз.

Акыр -аягы, үчүнчү сүрөттө көрсөтүлгөндөй, телефонду Kenu Airframe+сыяктуу мамыга кармоо үчүн бир нерсе тиркеңиз.

3 -кадам: Servo Readout үчүн LCD дисплейди туташтырыңыз

Серводон окуу үчүн ЖК дисплейди туташтырыңыз
Серводон окуу үчүн ЖК дисплейди туташтырыңыз

Жерге өтүү жана +5В панелдик электр рельстериңизден ЖК дисплейиндеги тиешелүү казыктарга чейин. Ошондой эле, SDA жана SCL төөнөгүчтөрүн ЖКдан Ardiunoго өтүңүз. Arduino SDA жана SCL төөнөгүчтөрү Arduino тактасынын арткы бетинен аныкталышы мүмкүн жана AREFтин үстүндөгү эки пин жана пин 13төн жогору. Бул LCD дисплей учурдагы servo абалын окуп берет.

4 -кадам: Arduino программасына тиркелген кодду жана китепканаларды колдонуңуз

Arduino программасына тиркелген кодду жана китепканаларды колдонуңуз
Arduino программасына тиркелген кодду жана китепканаларды колдонуңуз

RotatingMountCode.zip файлын жүктөп алыңыз. Arduino IDE орнотуп, жүктөлгөн файлды Documents / Arduino ичине ачыңыз. Эскиздерим менен китепканаларымдын мазмунун эскиздер жана китепканалар папкасына көчүргөнүңүздү текшериңиз. ServoIRandLCD эскизин ачып, аны Arduinoго жүктөңүз.

Код түшүндүрмөсү үчүн кийинки кадамдарды караңыз.

5 -кадам: Ардуиного керектүү энергия булагын туташтырыңыз жана тоону айлантуу үчүн пультту колдонуңуз

Каалаган энергия булагын Arduino менен туташтырып, тоону айлантуу үчүн пультту колдонуңуз!
Каалаган энергия булагын Arduino менен туташтырып, тоону айлантуу үчүн пультту колдонуңуз!
Каалаган энергия булагын Arduino менен туташтырып, тоону айлантуу үчүн пультту колдонуңуз!
Каалаган энергия булагын Arduino менен туташтырып, тоону айлантуу үчүн пультту колдонуңуз!

Же Arduino компьютериңизге туташтырылган бойдон калтырыңыз же аны компьютериңизден ажыратыңыз жана Arduinoго DC кубатын берүү үчүн 9В батареяны колдонуңуз. Акыр -аягы, серво көзөмөлдөө үчүн арзан IR пультун колдонуңуз, демек, телефонду орнотуунун багыты!

Алыстан башкаруу пультунда 1 саны серво позициясын 0 градуска, 2 санын 90 градуска, 3 санын 180 градуска коюушу керек. Ал арада пульттагы + жана - баскычтары сервонун бурчун 1 градуска көбөйтүшү же азайтышы керек.

Эскертүү: Эгерде сиз бул жерде сүрөттөлгөндөн башка IR Remote колдонсоңуз, анда ар кандай баскычтарга тиешелүү IR коддору өзгөрүшү мүмкүн. Андай болсо, анын ордуна ошол IR коддорун колдонуу үчүн ServoIRandLCD эскизин өзгөртүңүз.

6 -кадам: Булакты коддун түшүндүрмөсү үчүн окуңуз

Булак кодунун түшүндүрмөсү үчүн муну окуңуз
Булак кодунун түшүндүрмөсү үчүн муну окуңуз
Булак кодунун түшүндүрмөсү үчүн муну окуңуз
Булак кодунун түшүндүрмөсү үчүн муну окуңуз

Arduino эскизинин баштапкы кодун төмөндө же мурда тиркелген.zip файлынан тапса болот. Керектүү китепканаларды 4 -кадамда мурда тиркелген.zip файлында гана табууга болот.

Эң биринчи нерсе, код эскиздеги бардык функцияларды иштетүү үчүн керектүү китепканаларды камтыйт. Андан кийин, ал Arduino'догу 9-пинти PWM иштетилген сигналдын пини деп тааныйт. Ал ошондой эле IR кабыл алгыч үчүн колдонулган Arduino пин 11 пин түзөт. Андан кийин, сервонун абалын даражада көзөмөлдөө үчүн колдонулган бүтүн сан өзгөрмөсүн жарыялайт жана башында 0 градуска коёт. Андан кийин, ал IRrecv объектиси, сервоприём жана myDisplay LCD объектиси үчүн керектүү объекттерди жаратат (бул ошол эле сапта конфигурацияланган), ошондуктан бул объектилерди кийинчерээк колдонууга болот.

Андан кийин, орнотуу функциясында, сериялык порт 9600 бит/сек менен башталат, андыктан сериялык монитор каалаган учурда сервонун абалын көзөмөлдөө үчүн колдонулушу мүмкүн. Ал ошондой эле myservo объектисин 9 -пинге тиркейт, IR кабылдагычты иштетет жана ЖК дисплейин баштайт.

Негизги цикл функциясында, анын органы IR кабыл алгычтан IR өткөрүмү алынганда гана аткарылат, IR алуучу IR алыстан келген декодду декоддоо (& жыйынтыктары) функциясын колдонуу менен чечет, андан кийин эгер билдирүүлөр эмнени аныктай турган болсо алынган IR маанисине жараша сервону коюуга. Жазуу функциясы сервону тиешелүү даражага коюу үчүн колдонулат, ал эми окуу функциясы сервонун учурдагы бурчун табуу жана аны зарылдыгына жараша көбөйтүү же азайтуу үчүн колдонулат.

Акырында, сервонун учурдагы бурчу myservo.read () функциясын колдонуп сериялык мониторго жана ЖК дисплейге жөнөтүлөт жана негизги циклдер белгисиз кайталанат.

Булак коду:

#кошуу // Arduino стандарттык китепканасы #кошуу // IR китепканасы #"Wire.h" //Wire.h үчүн LCD (кээде керек) #"LiquidCrystal_I2C.h" кошуу // LCD китепкана

#define servopin 9 // бул pin 9ду servo control lead үчүн колдонулган пин катары аныктайт (кызгылт сары)

int RECV_PIN = 11; // IR фото-транзистору 11-пинге чыгарууну жөнөтөт

int currentAngle = 0; // currentAngle бүтүн сан өзгөрмөсүн жарыялап, 0гө коюңуз

IRrecv irrecv (RECV_PIN); // IR алуучунун объектисин чечүү decode_results; // decode_results объектисин түзүңүз. Бул объект IR алуучудан өзүнчө.

Servo myservo; // "myservo" аттуу Servo объектисин түзүңүз // максимум сегиз servo объект түзсө болот

LiquidCrystal_I2C myDisplay (0x27, 16, 2); // LCD объектисин түзүп, конфигурацияны орнотуңуз

жараксыз орнотуу () {

Serial.begin (9600); // сериялык портту баштоо

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

irrecv.enableIRIn (); // ресиверди баштоо

myDisplay.init (); // LCDди баштоо

myDisplay.backlight (); // LCD арткы жарыгын күйгүзүү

}

void loop () {

if (irrecv.decode (& results)) // эгерде трансфер кабыл алынса…

{Serial.print ("IR мааниси алынды:");

Serial.println (results.value); // дисплей мааниси алынды

// алынган командаларды чечмелеңиз … if (results.value == 16724175) // 1 {// left myservo.write (0); }

if (results.value == 16718055) // 2 {// middle myservo.write (90); }

if (results.value == 16743045) // 3 {// right myservo.write (180); }

if (results.value == 16754775) //+ {// increment currentAngle = myservo.read (); myservo.write (currentAngle + 1); } if (results.value == 16769055) //- {// азайтуу currentAngle = myservo.read (); myservo.write (currentAngle - 1); }}

irrecv.resume (); // Кийинки маанини алыңыз

// Сериялык мониторду басып чыгаруу Serial.print ("Учурдагы servo абалы:");

Serial.println (myservo.read ()); // бул серво позициясын алат жана сериялык мониторго жөнөтөт

// ЖК басуу myDisplay.clear ();

myDisplay.print ("Servo deg.:");

myDisplay.print (myservo.read ());

кечигүү (200); // сервопродукцияны туруктуу кылуу үчүн кечигүү

}

7 -кадам: Жардам алуу үчүн Youtube видеомду көрүңүз

Суроолоруңуз болсо, долбоорду толугу менен талкуулаган жана көрсөткөн менин тизмеленбеген YouTube видеомду көрүңүз!

Сунушталууда: