Mundarija:

Aylanadigan telefon o'rnatish: 7 qadam
Aylanadigan telefon o'rnatish: 7 qadam

Video: Aylanadigan telefon o'rnatish: 7 qadam

Video: Aylanadigan telefon o'rnatish: 7 qadam
Video: iPhone14pro samsung narxlari. Telefon narxlari. Telefonlar narxi Телефон айфон нархлари 2024, Iyul
Anonim
Aylanadigan telefon tog'i
Aylanadigan telefon tog'i

Bu ko'rsatma Janubiy Florida universitetining Makecourse loyihasi talablarini bajarish uchun yaratilgan (www.makecourse.com).

Telefoningiz tarkibini portret yoki landshaft yo'nalishida ushlab turmasdan ko'rishingiz uchun aylanadigan telefon o'rnatgichini yasashni xohlaysizmi? Keyin, boshqa qaramang.

Ushbu loyihani yaratish uchun sizga kerak bo'ladi:

- Arduino mikrokontroller va IDE

- Kodni yuklash uchun USB kabeli

- Non paneli

- Jumper simlari

- LCD displey

- Servo

- Servoga biriktirilishi mumkin bo'lgan ustun

- IR masofadan boshqarish pulti

- IQ qabul qiluvchisi

- 10 k Ohm qarshilik

- Kenu Airframe+ telefon klipi (yoki telefonni ushlab turadigan narsa)

Portativ quvvat uchun 9 V batareya yoki USB orqali ishlaydigan Arduino

1 -qadam: IQ qabul qilgich sxemasini yarating

IQ qabul qilgich sxemasini yarating
IQ qabul qilgich sxemasini yarating
IQ qabul qilgich sxemasini yarating
IQ qabul qilgich sxemasini yarating

Birinchidan, Arduino -dan GND va +5V -ni non panelidagi elektr relslariga o'tkazing. Keyin, 10k ohmli rezistorni +5V kuchlanishli relsdan IQ qabul qiluvchi fototransistorining chiqish piniga o'tkazing. Keyin, Arduino -dagi 11 -pinni IQ qabul qilgichining chiqish pinidan ulash uchun o'tish simini ishlating. Keyin, IQ qabul qilgichidagi tegishli pimlarga topraklama va +5V yuborish uchun ikkita o'tish simini ishlating. Yuqoridagi sxemada tasvirlangan RC filtri kerak emas. Va nihoyat, men bu bosqichda ko'rsatilgan sxemani qilmadim va uning manbasi rasmda mavjud.

2 -qadam: Servo, ustun va telefon ushlagichini ulang

Servo, ustun va telefon ushlagichini ulang
Servo, ustun va telefon ushlagichini ulang
Servo, ustun va telefon ushlagichini ulang
Servo, ustun va telefon ushlagichini ulang
Servo, ustun va telefon ushlagichini ulang
Servo, ustun va telefon ushlagichini ulang

Endi, erdan va +5V kuchlanishli relslardan o'tish moslamasining jigarrang va qizil simlariga o'tish uchun ikkita o'tish simini ishlating. Keyin, bitta o'tish simidan foydalanib, Arduino -dagi 9 -pinni servoning to'q sariq simiga ulang.

Keyin, ikkinchi rasmda ko'rsatilgandek, servo boshiga ustun bog'lang.

Nihoyat, uchinchi rasmda ko'rsatilgandek, telefonni Kenu Airframe+kabi ustunga ushlab turish uchun biror narsa biriktiring.

3 -qadam: Servo o'qish uchun LCD displeyni ulang

Servo o'qish uchun LCD displeyni ulang
Servo o'qish uchun LCD displeyni ulang

Tarmoqli panjaradan erga va +5V ga o'tib, LCD displeyidagi tegishli pimlarga o'ting. Bundan tashqari, SDA va SCL pinlarini LCD displeydan Ardiuno -ga o'tkazing. Arduino SDA va SCL pinlari Arduino kartasining orqa qismidan aniqlanishi mumkin va bu AREF va Ground 13 -pin ustidagi ikkita pin. SCL -pin eng baland. Bu LCD displeyga joriy servo holatini o'qishga imkon beradi.

4 -qadam: Arduino dasturlash uchun biriktirilgan kod va kutubxonalardan foydalaning

Arduino dasturlash uchun biriktirilgan kod va kutubxonalardan foydalaning
Arduino dasturlash uchun biriktirilgan kod va kutubxonalardan foydalaning

RotatingMountCode.zip faylini yuklab oling. Arduino IDE -ni o'rnating va yuklangan faylni Documents / Arduino -ga oching. Mening eskizlarim va kutubxonalarim tarkibini eskizlar va kutubxonalar papkasiga nusxalashingizga ishonch hosil qiling. ServoIRandLCD eskizini oching va Arduino -ga yuklang.

Kodni tushuntirish uchun keyingi qadamlarni ko'ring.

5 -qadam: Arduino -ga kerakli quvvat manbasini ulang va tog'ni aylantirish uchun masofadan boshqarish pultidan foydalaning

Arduino -ga kerakli quvvat manbasini ulang va tog'ni aylantirish uchun masofadan boshqarish pultidan foydalaning!
Arduino -ga kerakli quvvat manbasini ulang va tog'ni aylantirish uchun masofadan boshqarish pultidan foydalaning!
Arduino -ga kerakli quvvat manbasini ulang va tokni aylantirish uchun masofadan boshqarish pultidan foydalaning!
Arduino -ga kerakli quvvat manbasini ulang va tokni aylantirish uchun masofadan boshqarish pultidan foydalaning!

Arduino -ni kompyuterga ulangan holda qoldiring yoki uni kompyuterdan uzing va Arduino -ni doimiy quvvat bilan ta'minlash uchun 9V batareyadan foydalaning. Nihoyat, servo va shuning uchun telefonni o'rnatish yo'nalishini boshqarish uchun arzon IR masofadan boshqarish pultidan foydalaning!

Masofadan boshqarish pultidagi 1 raqami servo holatini 0 darajaga, 2 raqamini 90 darajaga va 3 raqamini 180 darajaga o'rnatishi kerak. Shu bilan birga, masofadan boshqarish pultidagi + va - tugmalari servo burchagini mos ravishda 1 gradusga oshirishi yoki kamaytirishi kerak.

Eslatma: Agar siz bu erda tasvirlanganidan farqli o'laroq IR masofadan boshqarish pultidan foydalansangiz, turli tugmalarga mos keladigan IR kodlari o'zgartirilishi mumkin. Agar shunday bo'lsa, uning o'rniga IR kodlarini ishlatish uchun ServoIRandLCD eskizini o'zgartiring.

6 -qadam: Buni manba kodini tushuntirish uchun o'qing

Buni manba kodini tushuntirish uchun o'qing
Buni manba kodini tushuntirish uchun o'qing
Buni manba kodini tushuntirish uchun o'qing
Buni manba kodini tushuntirish uchun o'qing

Arduino eskizining manba kodini quyida yoki ilgari biriktirilgan.zip faylida topish mumkin. Kerakli kutubxonalarni faqat 4 -qadamda ilgari biriktirilgan.zip faylida topish mumkin.

Kod bajaradigan birinchi narsa, eskizdagi barcha funktsiyalarni bajarish uchun zarur bo'lgan kutubxonalarni o'z ichiga oladi. Keyinchalik, Arduino-dagi 9-pinni servo uchun PWM-ni yoqadigan signal pimi deb e'lon qiladi. Bundan tashqari, u Arduino -dagi 11 -pinni IQ qabul qilgich uchun ishlatiladi. Keyinchalik, u servo holatini gradusda kuzatib borish uchun ishlatiladigan butun sonli o'zgaruvchini e'lon qiladi va uni dastlab 0 darajaga o'rnatadi. Keyin, u IRrecv obyekti, servo ob'ekt va myDisplay LCD obyekti uchun kerakli ob'ektlarni ishga tushiradi (u ham xuddi shu satrda konfiguratsiya qilingan), bu ob'ektlardan keyinroq foydalanish mumkin bo'ladi.

Keyinchalik, sozlash funktsiyasida ketma -ket port 9600 bit/soniyada boshlanadi, shuning uchun ketma -ket monitor, agar kerak bo'lsa, servo holatini kuzatib borishi mumkin. Shuningdek, u myservo ob'ektini 9 -pinga ulaydi, IQ qabul qiluvchini ishga tushiradi va LCD displeyni ishga tushiradi.

Asosiy tsikl funktsiyasida, uning tanasi faqat IQ qabul qiluvchidan IQ uzatilishi qabul qilingan taqdirda bajariladi, IQ qabul qiluvchisi IQ masofadan boshqarish pultidan yuborilgan signalni dekodlash (va natijalar) funktsiyasidan foydalanib dekodlaydi, keyin esa bayonotlar nima ekanligini aniqlasa. qabul qilingan IQ qiymatiga qarab servo rejimini sozlash. Yozish funktsiyasi servoni kerakli darajaga o'rnatish uchun, o'qish funktsiyasi esa servoning joriy burchagini topish va kerak bo'lganda uni oshirish yoki kamaytirish uchun ishlatiladi.

Nihoyat, servoning joriy burchagi ketma -ket monitorga ham, LCD displeyga ham myservo.read () funksiyasi yordamida yuboriladi va asosiy halqalar cheksiz takrorlanadi.

Manba kodi:

#include // Arduino standart kutubxonasi #o'z ichiga // IR kutubxonasi #"Wire.h" //Wire.h uchun LCD (ba'zida kerak bo'ladi) #"LiquidCrystal_I2C.h" ni qo'shing // LCD kutubxona

#define servopin 9 // bu 9 -pinni servo boshqaruv chizig'i uchun ishlatiladigan pin sifatida belgilaydi (to'q sariq)

int RECV_PIN = 11; // IQ foto-tranzistor chiqishni 11-pinga yuboradi

int currentAngle = 0; // currentAngle tamsayı o'zgaruvchisini e'lon qiling va 0 ga o'rnating

IRrecv irrecv (RECV_PIN); // IQ qabul qiluvchining ob'ektini decode_results natijalarini yaratish; // decode_results ob'ektini yaratish. Bu ob'ekt IQ qabul qiluvchidan alohida.

Xizmat ko'rsatish xizmati; // "myservo" nomli Servo ob'ektini ishga tushiring // maksimal sakkizta servo ob'ektni yaratish mumkin

LiquidCrystal_I2C myDisplay (0x27, 16, 2); // LCD ob'ektini ishga tushiring va konfiguratsiyani o'rnating

bo'sh o'rnatish () {

Serial.begin (9600); // ketma -ket portni ishga tushiring

myservo.attach (servopin); // servo ob'ektga 9 -pinli servo biriktiriladi

irrecv.enableIRIn (); // qabul qilgichni ishga tushiring

myDisplay.init (); // LCD -ni ishga tushirish

myDisplay.backlight (); // LCD orqa nuri yoqish

}

void loop () {

if (irrecv.decode (& natijalar)) // agar uzatish qabul qilingan bo'lsa …

{Serial.print ("IR qiymati qabul qilindi:");

Serial.println (natijalar qiymati); // qabul qilingan qiymat

// olingan buyruqlarni sharhlang … if (results.value == 16724175) // 1 {// left myservo.write (0); }

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

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

if (results.value == 16754775) //+ {// increment currentAngle = myservo.read (); myservo.write (joriyAngle + 1); } if (results.value == 16769055) //- {// oqimi kamayadi currentAngle = myservo.read (); myservo.write (currentAngle - 1); }}

irrecv.resume (); // Keyingi qiymatni oling

// Serial monitorni chop etish Serial.print ("Hozirgi servo holati:");

Serial.println (myservo.read ()); // bu servo holatini oladi va ketma -ket monitorga yuboradi

// LCD bosib chiqarish myDisplay.clear ();

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

myDisplay.print (myservo.read ());

kechikish (200); // servo harakatini barqaror qilish uchun kechiktirish

}

7 -qadam: Yordam uchun Youtube videoimni ko'ring

Agar sizda biron bir savol bo'lsa, loyihani to'liq muhokama qiladigan va namoyish etadigan, ro'yxatga olinmagan YouTube videoimni ko'ring!

Tavsiya: