Mündəricat:

Fırlanan Telefon Montajı: 7 addım
Fırlanan Telefon Montajı: 7 addım

Video: Fırlanan Telefon Montajı: 7 addım

Video: Fırlanan Telefon Montajı: 7 addım
Video: HURDALIĞIMDAKİ PARÇALARDAN İPHONE 7 PLUS TOPLADIM 2024, Noyabr
Anonim
Fırlanan Telefon Montajı
Fırlanan Telefon Montajı

Bu təlimat, Cənubi Florida Universitetindəki Makecourse -in layihə tələbinin yerinə yetirilməsi üçün yaradılmışdır (www.makecourse.com).

Telefonunuzun məzmununu tutmadan portret və ya landşaft istiqamətdə görmək üçün fırlanan bir telefon qurğusu etmək istəyirsiniz? Sonra, başqa bir şeyə baxma.

Bu layihəni yaratmaq üçün sizə lazım olacaq:

- Arduino Mikrokontrolör və IDE

- Kodu yükləmək üçün USB Kabel

- Çörək lövhəsi

- Jumper telləri

- LCD Ekran

- Servo

- Servoya qoşula bilən sütun

- IR Uzaqdan

- IR qəbuledicisi

- 10k ohm müqavimət

- Kenu Airframe+ Telefon Klipi (və ya telefonu yerində saxlamaq üçün bir şey)

- Portativ güc üçün 9 V Batareya və ya sadəcə USB ilə işləyən Arduino

Addım 1: IR Alıcı Dövrə qurun

IR qəbuledici dövrə qurun
IR qəbuledici dövrə qurun
IR Alıcı Dövrə qurun
IR Alıcı Dövrə qurun

Birincisi, Arduinodan çörək taxtanızdakı elektrik raylarına GND və +5V atlayın. Sonra, 10k ohm müqavimətinizi +5V elektrik rayından İR qəbuledici fototransistorunuzun çıxış pininə atlayın. Sonra, IR qəbuledicisinin çıxış pinindən Arduino -dakı pin 11 -ə qoşulmaq üçün bir keçid teli istifadə edin. Sonra, IR alıcısındakı müvafiq pinlərə torpaq və +5V göndərmək üçün iki keçid teli istifadə edin. Yuxarıdakı sxematik şəkildə göstərilən RC filtrinə ehtiyac yoxdur. Nəhayət, bu addımda göstərilən sxemi etmədim və bunun mənbəyi şəkildə mövcuddur.

Addım 2: Servo, Sütun və Telefon Tutucusunu bağlayın

Servo, Sütun və Telefon Tutucusunu bağlayın
Servo, Sütun və Telefon Tutucusunu bağlayın
Servo, Sütun və Telefon Tutucusunu bağlayın
Servo, Sütun və Telefon Tutucusunu bağlayın
Servo, Sütun və Telefon Tutucusunu bağlayın
Servo, Sütun və Telefon Tutucusunu bağlayın

İndi yerdən və +5V çörək taxtası elektrik raylarından sırasıyla qəhvəyi və qırmızı tellərə keçmək üçün iki keçid teli istifadə edin. Sonra, Arduino üzərindəki pin 9 -u servonun narıncı telinə bağlamaq üçün bir keçid teli istifadə edin.

Sonra, ikinci şəkildə göstərildiyi kimi servonun başına bir sütun əlavə edin.

Nəhayət, telefonu üçüncü şəkildə göstərildiyi kimi Kenu Airframe+kimi sütuna tutmaq üçün bir şey əlavə edin.

Addım 3: Servo Oxunması üçün LCD Ekranı bağlayın

Servo Oxunması üçün LCD Ekranı qoşun
Servo Oxunması üçün LCD Ekranı qoşun

Çörək taxtanızın elektrik raylarından +5V -ə keçərək LCD Ekrandakı müvafiq pinlərə keçin. Ayrıca, SDA və SCL pinlərini LCD -dən Ardiuno'ya atlayın. Arduino SDA və SCL pinləri Arduino lövhəsinin arxasından müəyyən edilə bilər və AREF və Ground pin 13 -dən yuxarı olan iki sancaqdır. SCL pin ən yüksəkdir. Bu, LCD ekranın cari servo mövqeyini oxumasına imkan verir.

Addım 4: Arduino proqramlaşdırmaq üçün əlavə edilmiş koddan və kitabxanalardan istifadə edin

Arduino Proqramlaşdırmaq üçün Əlavə Edilən Kod və Kitabxanalardan istifadə edin
Arduino Proqramlaşdırmaq üçün Əlavə Edilən Kod və Kitabxanalardan istifadə edin

RotatingMountCode.zip faylını yükləyin. Arduino IDE -ni quraşdırın və yüklənmiş faylı Documents / Arduino -da açın. Eskizlərim və kitabxana qovluğumun məzmununu eskizlər və kitabxana qovluğuna kopyaladığınızdan əmin olun. ServoIRandLCD eskizini açın və Arduino -ya yükləyin.

Kodun izahı üçün sonrakı addımlara baxın.

Addım 5: Arduinoya İstədiyiniz Güc mənbəyini bağlayın və Dağı Döndürmək üçün Uzaqdan istifadə edin

Arduinoya İstədiyiniz Güc mənbəyini qoşun və Dağı Döndürmək üçün Uzaqdan istifadə edin!
Arduinoya İstədiyiniz Güc mənbəyini qoşun və Dağı Döndürmək üçün Uzaqdan istifadə edin!
Arduinoya İstədiyiniz Güc mənbəyini qoşun və Dağı Döndürmək üçün Uzaqdan istifadə edin!
Arduinoya İstədiyiniz Güc mənbəyini qoşun və Dağı Döndürmək üçün Uzaqdan istifadə edin!

Arduino'yu ya kompüterinizə qoşun, ya da kompüterinizdən ayırın və Arduinoya DC gücü təmin etmək üçün 9V batareya istifadə edin. Nəhayət, servo və buna görə də telefon qurğusunun istiqamətini idarə etmək üçün ucuz bir IR uzaqdan istifadə edin!

Pultdakı 1 nömrə servo mövqeyini 0 dərəcəyə, 2 nömrəsini 90 dərəcəyə, 3 nömrəsini isə 180 dərəcəyə təyin etməlidir. Bu arada pultdakı + və - düymələri servonun açısını müvafiq olaraq 1 dərəcə artırmalı və ya azaltmalıdır.

Qeyd: Burada göstəriləndən fərqli bir IR Uzaqdan istifadə edirsinizsə, müxtəlif düymələrə uyğun olan IR kodlarının dəyişdirilməsi mümkündür. Əgər belədirsə, bu IR kodlarını istifadə etmək üçün ServoIRandLCD eskizini dəyişdirin.

Addım 6: Mənbə Kodunun Açıqlanması üçün bunu oxuyun

Mənbə Kodunun Açıqlanması üçün bunu oxuyun
Mənbə Kodunun Açıqlanması üçün bunu oxuyun
Mənbə Kodunun Açıqlanması üçün bunu oxuyun
Mənbə Kodunun Açıqlanması üçün bunu oxuyun

Arduino eskizinin mənbə kodunu aşağıda və ya əvvəllər əlavə edilmiş.zip faylında tapa bilərsiniz. Lazımi kitabxanalar yalnız 4 -cü addımda əvvəllər əlavə edilmiş.zip faylında tapıla bilər.

Kodun etdiyi ilk şey, eskizdəki bütün funksiyaları yerinə yetirmək üçün lazım olan kitabxanaları daxil etməkdir. Daha sonra, Arduino üzərindəki 9 pinini servo üçün PWM effektiv siqnal pimi olaraq elan edir. Arduino -da İQ alıcısı üçün istifadə olunan pin 11 -i də düzəldir. Sonra, servonun mövqeyini dərəcələrlə izləmək üçün istifadə olunan bir tamsayı dəyişən elan edir və əvvəlcə 0 dərəcəyə təyin edir. Daha sonra, IRrecv obyekti, bir servo obyekt və myDisplay LCD obyekti (eyni sətirdə konfiqurasiya edilmiş) üçün lazım olan obyektləri hazırlayır, beləliklə bu obyektlər sonradan istifadə oluna bilər.

Ardından, quraşdırma funksiyasında serial port 9600 bit/saniyədə işə salınır, buna görə də istəsəniz servo mövqeyini izləmək üçün serial monitordan istifadə oluna bilər. Ayrıca myservo obyektini 9 -cu pinə bağlayır, İQ alıcısını işə salır və LCD ekranı işə salır.

Bədəni yalnız İQ qəbuledicisindən bir İQ ötürülməsi alındıqda yerinə yetirilən əsas döngə funksiyasında İQ alıcısı, IR kodundan (və nəticələr) istifadə edərək İQ uzaqdan ona göndərilən siqnalın kodunu açar və sonra ifadələr nəyi müəyyən edərsə alınan servo dəyərini İQ -dən asılı olaraq təyin etmək. Yazma funksiyası servonun uyğun dərəcələrini təyin etmək üçün istifadə olunur və oxumaq funksiyası servonun cari açısını tapmaq və lazım olduqda artırmaq və ya azaltmaq üçün istifadə olunur.

Nəhayət, servonun mövcud açısı myservo.read () funksiyasından istifadə edərək həm seriyalı monitora, həm də LCD ekrana göndərilir və əsas döngələr qeyri -müəyyən müddət ərzində təkrarlanır.

Mənbə Kodu:

#daxil edin // Arduino standart kitabxanası #daxildir // IR kitabxanası #"Wire.h" //Wire.h üçün LCD (bəzən lazım olur) #"LiquidCrystal_I2C.h" daxil edin // LCD kitabxana

#deffine servopin 9 // bu, pin 9 -u servo idarəetmə qurğusu üçün istifadə olunan pin olaraq təyin edir (narıncı)

int RECV_PIN = 11; // IR foto-tranzistor çıxışını pin 11-ə göndərir

int currentAngle = 0; // currentAngle tam ədəd dəyişənini elan edin və 0 olaraq təyin edin

IRrecv irrecv (RECV_PIN); // IR qəbuledici obyektinin decode_results nəticələrini yaratmaq; // bir decode_results obyekti hazırlayın. Bu obyekt İQ alıcısından ayrıdır.

Servo xidməti; // 'myservo' adlı bir Servo obyekti hazırlayın // maksimum səkkiz servo obyekt yaradıla bilər

LiquidCrystal_I2C myDisplay (0x27, 16, 2); // LCD obyektini işə salın və konfiqurasiya qurun

boş quraşdırma () {

Serial.begin (9600); // seriya limanına başlayın

myservo.attach (servopin); // 9 nömrəli servo servo obyektə əlavə edir

irrecv.enableIRIn (); // qəbuledicini işə salın

myDisplay.init (); // LCD -ni işə salın

myDisplay.backlight (); // LCD arxa işığı yandırın

}

boşluq döngəsi () {

əgər (irrecv.decode (& nəticələr)) // ötürülmə alınsa…

{Serial.print ("IR dəyəri alındı:");

Serial.println (results.value); // ekran dəyəri alındı

// alınan əmrləri şərh edin… if (results.value == 16724175) // 1 {// left myservo.write (0); }

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

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

if (results.value == 16754775) //+ {// artım currentAngle = myservo.read (); myservo.write (currentAngle + 1); } if (results.value == 16769055) //- {// currentAngle = myservo.read () azalır; myservo.write (currentAngle - 1); }}

irrecv. resume (); // Növbəti dəyəri alın

// Serial monitor çapı Serial.print ("Cari servo mövqeyi:");

Serial.println (myservo.read ()); // bu servo mövqeyi alır və serial monitora göndərir

// LCD çap myDisplay.clear ();

myDisplay.print ("Servo dərəcə.:");

myDisplay.print (myservo.read ());

gecikmə (200); // servo hərəkətini sabit etmək üçün gecikmə

}

Addım 7: Yardım üçün Youtube videosuma baxın

Suallarınız olarsa layihəni tam müzakirə edən və nümayiş etdirən siyahıya alınmamış YouTube videosuma baxın!

Tövsiyə: