Мазмұны:

Айналмалы телефон қондырғысы: 7 қадам
Айналмалы телефон қондырғысы: 7 қадам

Бейне: Айналмалы телефон қондырғысы: 7 қадам

Бейне: Айналмалы телефон қондырғысы: 7 қадам
Бейне: Өлді деп жерлемек болған еді. Бірақ Алланың қалауымен тірілген Бала 2024, Қараша
Anonim
Айналмалы телефон қондырғысы
Айналмалы телефон қондырғысы

Бұл нұсқаулық Оңтүстік Флорида университетінің Makecourse жобасының талаптарын орындау үшін жасалған (www.makecourse.com).

Телефонның мазмұнын ұстамай -ақ портреттік немесе альбомдық бағытта қарау үшін айналмалы телефон қондырғысын жасағыңыз келе ме? Содан кейін, басқаға қарамаңыз.

Бұл жобаны құру үшін сізге қажет:

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

- кодты жүктеуге арналған USB кабелі

- Нан тақтасы

- Jumper Wires

- СКД дисплей

- Серво

- Сервоға бекітілетін баған

- IR қашықтан басқару құралы

- IR қабылдағыш

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

- Kenu Airframe+ телефон клипі (немесе телефонды орнында ұстайтын нәрсе)

- портативті қуатқа арналған 9 В батарея немесе USB арқылы жұмыс істейтін Arduino

1 -қадам: IR қабылдағыш схемасын құрыңыз

IR қабылдағыш схемасын құрыңыз
IR қабылдағыш схемасын құрыңыз
IR қабылдағыш схемасын құрыңыз
IR қабылдағыш схемасын құрыңыз

Алдымен, Arduino -дан GND және +5V -ге өтіңіз. Содан кейін 10к Ом резисторды +5В қуат рельсінен ИҚ қабылдағыш фототранзисторының шығыс түйреуішіне өткізіңіз. Әрі қарай, Arduino 11 -ші түйреуішке IR қабылдағышының шығыс штырынан қосылу үшін өтпелі сымды қолданыңыз. Содан кейін, жерге тұйықталу және +5В инфрақызыл қабылдағыштың тиісті түйреуіштерін жіберу үшін екі өтпелі сымды қолданыңыз. Жоғарыдағы схемада суреттелген RC сүзгісі қажет емес. Ақырында, мен бұл қадамда көрсетілген схеманы жасамадым және оның көзі суретте бар.

2 -қадам: Серво, баған және телефон ұстағышын қосыңыз

Серво, баған және телефон ұстағышын қосыңыз
Серво, баған және телефон ұстағышын қосыңыз
Серво, баған және телефон ұстағышын қосыңыз
Серво, баған және телефон ұстағышын қосыңыз
Серво, баған және телефон ұстағышын қосыңыз
Серво, баған және телефон ұстағышын қосыңыз

Енді екі секіргіш сымды қолданып жерден және серуеннің қоңыр және қызыл сымдарына +5В нан тақтасының рельстерінен секіріңіз. Содан кейін, Arduino -дегі түйреуіш 9 -ды серво қызғылт сары сымына бекіту үшін бір өтпелі сымды қолданыңыз.

Содан кейін, екінші суретте көрсетілгендей серво басына баған бекітіңіз.

Ақырында, үшінші суретте көрсетілгендей, Kenu Airframe+сияқты телефонды бағанға ұстайтын нәрсені бекітіңіз.

3 -қадам: СКД дисплейін сервистік оқу үшін қосыңыз

Серві оқуы үшін СКД дисплейді қосыңыз
Серві оқуы үшін СКД дисплейді қосыңыз

Сыртқы дисплейдегі тиісті түйреуіштерге арналған тақтаның электр рельстерінен жерге +5 В секіріңіз. Сондай -ақ, SDA мен SCL түйреуіштерін СКД -ден Ardiuno -ға секіріңіз. Arduino SDA және SCL түйреуіштерін Arduino тақтасының артқы жағынан анықтауға болады, олар AREF пен Ground 13 -ші нүктенің үстіндегі екі түйреуіш. SCL түйреуіші - ең биік. Бұл СКД дисплейіне ағымдағы серво жағдайын оқуға мүмкіндік береді.

4 -қадам: Arduino бағдарламалауға қосылған код пен кітапханаларды қолданыңыз

Arduino бағдарламалауға қосылған код пен кітапханаларды пайдаланыңыз
Arduino бағдарламалауға қосылған код пен кітапханаларды пайдаланыңыз

RotatingMountCode.zip файлын жүктеңіз. Arduino IDE орнатыңыз және жүктелген файлды Documents / Arduino ішіне ашыңыз. Менің эскиздер мен кітапханалар қалтасының мазмұнын нобайлар мен кітапханалар қалтасына көшіргеніңізге көз жеткізіңіз. ServoIRandLCD эскизін ашып, оны Arduino -ға жүктеңіз.

Кодты түсіндіру үшін келесі қадамдарды қараңыз.

5 -қадам: Қажетті қуат көзін Arduino -ға қосыңыз және тауды айналдыру үшін қашықтан басқару пультін қолданыңыз

Қажетті қуат көзін Arduino -ға қосыңыз және тауды айналдыру үшін қашықтан басқару пультін қолданыңыз!
Қажетті қуат көзін Arduino -ға қосыңыз және тауды айналдыру үшін қашықтан басқару пультін қолданыңыз!
Қажетті қуат көзін Arduino -ға қосыңыз және тауды айналдыру үшін қашықтан басқару пультін қолданыңыз!
Қажетті қуат көзін Arduino -ға қосыңыз және тауды айналдыру үшін қашықтан басқару пультін қолданыңыз!

Arduino -ны компьютерге қосулы күйінде қалдырыңыз немесе оны компьютерден ажыратыңыз және Arduino -ға тұрақты ток беру үшін 9В батареяны қолданыңыз. Ақырында, серводы басқару үшін арзан инфрақызыл қашықтан басқару пультін қолданыңыз, сондықтан телефон қондырғысының бағыты!

Қашықтан басқару пультіндегі 1 нөмірі серво позициясын 0 градусқа, 2 санын 90 градусқа, 3 санын 180 градусқа орнатуы керек. Бұл ретте қашықтан басқару пультіндегі + және - түймелері серво бұрышын сәйкесінше 1 градусқа ұлғайту немесе азайту керек.

Ескерту: Егер сіз мұнда суретте көрсетілгеннен басқа IR қашықтан басқару пультін қолдансаңыз, әр түрлі түймелерге сәйкес келетін ИҚ кодтары өзгеруі мүмкін. Олай болса, сол IR кодтарын пайдалану үшін ServoIRandLCD нобайын өзгертіңіз.

6 -қадам: Мұны бастапқы кодты түсіндіру үшін оқыңыз

Мұны бастапқы кодты түсіндіру үшін оқыңыз
Мұны бастапқы кодты түсіндіру үшін оқыңыз
Мұны бастапқы кодты түсіндіру үшін оқыңыз
Мұны бастапқы кодты түсіндіру үшін оқыңыз

Arduino эскизінің бастапқы кодын төменде немесе бұрын тіркелген.zip файлында табуға болады. Қажетті кітапханаларды 4 -қадамда бұрын тіркелген.zip файлынан ғана табуға болады.

Кодтың бірінші әрекеті эскиздегі барлық функцияларды іске қосу үшін қажетті кітапханаларды қамтиды. Әрі қарай, ол Arduino-дағы 9-түйрікті PWM қолдайтын сигналдық түйреуіш деп хабарлайды. Ол сонымен қатар Arduino -да ИҚ қабылдағышы үшін пайдаланылатын түйреуішті жасайды. Әрі қарай, ол серво күйін градуспен қадағалау үшін пайдаланылатын бүтін айнымалы мәнді жариялайды және бастапқыда оны 0 градусқа орнатады. Содан кейін ол IRrecv объектісі, сервопривод және myDisplay СКД объектісі үшін қажетті нысандарды дайындайды (ол бір жолда конфигурацияланған), сондықтан бұл объектілерді кейінірек пайдалануға болады.

Әрі қарай, орнату функциясында сериялық порт 9600 бит/сек жылдамдықпен басталады, осылайша сериялық мониторды қажет болған жағдайда серво жағдайын қадағалау үшін пайдалануға болады. Ол сонымен қатар myservo объектісін 9 -пинге бекітеді, ИҚ қабылдағышты іске қосады және СКД дисплейін инициализациялайды.

Негізгі цикл функциясында, оның денесі ИҚ қабылдағыштан ИҚ жіберілген жағдайда ғана орындалады, ИҚ қабылдағышы декодтау (& нәтижелер) функциясын қолдана отырып ИҚ қашықтан басқару пультінен жіберілген сигналдың кодын шешеді, содан кейін егер операторлар нені анықтаса алынған ИҚ мәніне байланысты серводы орнатыңыз. Жазу функциясы сервоприводты тиісті дәрежеге қою үшін, ал оқу функциясы серваның ағымдағы бұрышын табу және қажет болған жағдайда оны ұлғайту немесе азайту үшін қолданылады.

Ақырында, серваның ағымдағы бұрышы myservo.read () функциясын қолдана отырып, сериялық мониторға да, СКД дисплейіне де жіберіледі, ал негізгі ілмектер шексіз қайталанады.

Бастапқы код:

#қосу // Arduino стандартты кітапханасы #қосу // ИҚ кітапханасы

#depine servopin 9 // бұл 9 түйреуішті серво басқару сымы үшін қолданылатын түйреуіш ретінде анықтайды (қызғылт сары)

int RECV_PIN = 11; // IR фото-транзисторы шығуды 11-ші пинге жібереді

int currentAngle = 0; // currentAngle бүтін айнымалысын жариялап, 0 мәніне қойыңыз

IRrecv irrecv (RECV_PIN); // decode_results нәтижелерінің инфрақызыл қабылдағыш объектісін құру; // decode_results нысанын жасаңыз. Бұл объект IR қабылдағыштан бөлек.

Сервистік қызмет; // 'myservo' деп аталатын Servo нысанын құрыңыз // максимум сегіз серво объектісін жасауға болады

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

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

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

myservo.attach (сервопин); // сервоприводқа түйреуішті 9 түйреуішке бекітеді

irrecv.enableIRIn (); // ресиверді іске қосыңыз

myDisplay.init (); // СКД инициализациялау

myDisplay.backlight (); // СКД артқы жарығын қосыңыз

}

void loop () {

if (irrecv.decode (& нәтижелер)) // егер берілсе …

{Serial.print («IR мәні алынды:»);

Serial.println (нәтижелер.мән); // дисплей мәні алынды

// алынған командаларды түсіндіріңіз… 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 («Ағымдағы серво позициясы:»);

Serial.println (myservo.read ()); // бұл серво позициясын шығарады және оны сериялық мониторға жібереді

// СКД басып шығару myDisplay.clear ();

myDisplay.print («Серво дәрежесі:»);

myDisplay.print (myservo.read ());

кешіктіру (200); // сервоприводты тұрақты ету үшін кідіріс

}

7 -қадам: Анықтама алу үшін менің Youtube бейнеңізді қараңыз

Егер сізде сұрақтар туындаса, жобаны толық талқылайтын және көрсететін менің YouTube тізіміне кірмеген бейнеролигімді қараңыз!

Ұсынылған: