İçindekiler:

Dönen Telefon Bağlantısı: 7 Adım
Dönen Telefon Bağlantısı: 7 Adım

Video: Dönen Telefon Bağlantısı: 7 Adım

Video: Dönen Telefon Bağlantısı: 7 Adım
Video: Telefona uzaktan bağlanıp her şeyi gösteren uygulama! - AirDroid 2024, Kasım
Anonim
Dönen Telefon Bağlantısı
Dönen Telefon Bağlantısı

Bu talimat, Güney Florida Üniversitesi'ndeki (www.makecourse.com) Makecourse'un proje gereksinimini yerine getirmek için oluşturulmuştur.

Telefonunuzun içeriğini tutmak zorunda kalmadan dikey veya yatay yönde görüntüleyebilmeniz için dönen bir telefon montajı yapmak ister misiniz? Sonra, başka yere bakma.

Bu projeyi oluşturmak için ihtiyacınız olacak:

- Arduino Mikrodenetleyici ve IDE

- Kodu yüklemek için USB Kablosu

- Ekmek tahtası

- Jumper Telleri

- LCD ekran

- Servo

- Servoya takılabilen kolon

- IR Uzaktan

- IR Alıcı

- 10k ohm direnç

- Kenu Airframe+ Telefon Klipsi (veya telefonu yerinde tutacak bir şey)

- Taşınabilir güç veya sadece USB ile çalışan Arduino için 9 V Pil

Adım 1: IR Alıcı Devresini Oluşturun

IR Alıcı Devresini Oluşturun
IR Alıcı Devresini Oluşturun
IR Alıcı Devresini Oluşturun
IR Alıcı Devresini Oluşturun

İlk olarak, Arduino'dan GND ve + 5V'yi breadboard'unuzdaki güç raylarına atlayın. Ardından, 10k ohm'luk direncinizi +5V güç rayından IR alıcı fototransistörünüzün çıkış pinine atlayın. Ardından, IR alıcısının çıkış pininden Arduino'daki pin 11'e bağlanmak için bir atlama teli kullanın. Ardından, IR alıcısındaki ilgili pinlere toprak ve +5V göndermek için iki atlama kablosu kullanın. Yukarıdaki şemada gösterilen RC filtresi gerekli değildir. Son olarak, bu adımda gösterilen şemayı yapmadım ve bunun kaynağı resimde mevcut.

Adım 2: Servo, Sütun ve Telefon Tutucuyu bağlayın

Servo, Kolon ve Telefon Tutucuyu bağlayın
Servo, Kolon ve Telefon Tutucuyu bağlayın
Servo, Sütun ve Telefon Tutucuyu bağlayın
Servo, Sütun ve Telefon Tutucuyu bağlayın
Servo, Kolon ve Telefon Tutucuyu bağlayın
Servo, Kolon ve Telefon Tutucuyu bağlayın

Şimdi, zeminden ve devre tahtası güç raylarının +5V'sinden sırasıyla servonun kahverengi ve kırmızı kablolarına atlamak için iki atlama teli kullanın. Ardından, Arduino'daki pim 9'u servonun turuncu kablosuna bağlamak için bir atlama teli kullanın.

Ardından, ikinci resimde gösterildiği gibi servonun başına bir sütun takın.

Son olarak, üçüncü resimde gösterildiği gibi, Kenu Airframe+ gibi telefonu sütuna tutacak bir şey takın.

Adım 3: Servo Okuma için LCD Ekranı Bağlayın

Servo Okuma için LCD Ekranı Bağlayın
Servo Okuma için LCD Ekranı Bağlayın

Breadboard güç raylarınızdan LCD Ekrandaki ilgili pinlere zemin ve +5V atlayın. Ayrıca, LCD'den SDA ve SCL pinlerini Ardiuno'ya atlayın. Arduino'nun SDA ve SCL pinleri, Arduino kartının arkasından tanımlanabilir ve AREF üzerindeki iki pin ve pin 13'ün üzerindeki Ground pinidir. SCL pini en yüksek olanıdır. Bu, LCD ekranın mevcut servo pozisyonunu okumasını sağlar.

Adım 4: Arduino'yu Programlamak için Ekli Kodu ve Kitaplıkları Kullanın

Arduino'yu Programlamak için Ekli Kodu ve Kitaplıkları Kullanın
Arduino'yu Programlamak için Ekli Kodu ve Kitaplıkları Kullanın

RotatingMountCode.zip dosyasını indirin. Arduino IDE'yi kurun ve indirilen dosyayı Documents\Arduino içine açın. Eskizlerim ve kitaplıklar klasörünün içeriğini eskizler ve kitaplıklar klasörünüze kopyaladığınızdan emin olun. ServoIRandLCD taslağını açın ve Arduino'nuza yükleyin.

Kod açıklaması için sonraki adımlara bakın.

Adım 5: İstenen Güç Kaynağını Arduino'ya Bağlayın ve Montajı Döndürmek için Uzaktan Kumandayı Kullanın

İstediğiniz Güç Kaynağını Arduino'ya Bağlayın ve Montajı Döndürmek için Uzaktan Kumandayı Kullanın!
İstediğiniz Güç Kaynağını Arduino'ya Bağlayın ve Montajı Döndürmek için Uzaktan Kumandayı Kullanın!
İstediğiniz Güç Kaynağını Arduino'ya Bağlayın ve Montajı Döndürmek için Uzaktan Kumandayı Kullanın!
İstediğiniz Güç Kaynağını Arduino'ya Bağlayın ve Montajı Döndürmek için Uzaktan Kumandayı Kullanın!

Arduino'yu bilgisayarınıza takılı bırakın veya bilgisayarınızdan çıkarın ve Arduino'ya DC güç sağlamak için 9V pil kullanın. Son olarak, servoyu ve dolayısıyla telefon montajının yönünü kontrol etmek için ucuz bir IR uzaktan kumanda kullanın!

Uzaktan kumandadaki 1 sayısı servo konumunu 0 dereceye, sayı 2 ila 90 derece ve sayı 3 ila 180 dereceye ayarlamalıdır. Bu arada uzaktan kumanda üzerindeki + ve - düğmeleri servonun açısını sırasıyla 1 derece artırmalı veya azaltmalıdır.

Not: Burada gösterilenden farklı bir IR Uzaktan Kumanda kullanıyorsanız, çeşitli düğmelere karşılık gelen IR kodları değişmiş olabilir. Öyleyse, bunun yerine bu IR kodlarını kullanmak için ServoIRandLCD çizimini değiştirin.

Adım 6: Kaynak Kodu Açıklaması İçin Bunu Okuyun

Kaynak Kodu Açıklaması İçin Bunu Okuyun
Kaynak Kodu Açıklaması İçin Bunu Okuyun
Kaynak Kodu Açıklaması İçin Bunu Okuyun
Kaynak Kodu Açıklaması İçin Bunu Okuyun

Arduino taslağının kaynak kodu aşağıda veya daha önce eklenmiş.zip dosyasında bulunabilir. Gerekli kitaplıklar yalnızca 4. adımda önceden eklenen.zip dosyasında bulunabilir.

Kodun yaptığı ilk şey, çizimdeki tüm işlevleri çalıştırmak için gerekli kitaplıkları dahil etmektir. Ardından, Arduino'daki pin 9'u servo için PWM etkin sinyal pini olarak ilan eder. Ayrıca Arduino'daki pin 11'i IR alıcısı için kullanılan pin yapar. Ardından, servonun konumunu derece cinsinden takip etmek için kullanılan bir tamsayı değişkeni bildirir ve başlangıçta 0 dereceye ayarlar. Ardından, bir IRrecv nesnesi, bir servo nesnesi ve myDisplay LCD nesnesi (aynı satırda yapılandırılmıştır) için gerekli nesneleri başlatır, böylece bu nesneler daha sonra kullanılabilir.

Ardından, kurulum işlevinde, seri port 9600 bit/sn'de başlatılır, böylece istenirse servo konumunu izlemek için seri monitör kullanılabilir. Ayrıca myservo nesnesini pim 9'a bağlar, IR alıcısını başlatır ve LCD ekranı başlatır.

Gövdesi yalnızca IR alıcısından bir IR iletimi alındığında yürütülen ana döngü işlevinde, IR alıcısı, kod çözme(&sonuçlar) işlevini kullanarak IR uzaktan kumandadan kendisine gönderilen sinyalin kodunu çözer ve ardından if ifadeleri neyin ne olduğunu belirler. alınan IR değerine bağlı olarak servoyu ayarlamak için. Yazma işlevi, servoyu uygun derecelere ayarlamak için kullanılır ve okuma işlevi, servonun mevcut açısını bulmak ve gerektiğinde onu artırmak veya azaltmak için kullanılır.

Son olarak, servonun mevcut açısı myservo.read() işlevi kullanılarak hem seri monitöre hem de LCD ekrana gönderilir ve ana döngüler süresiz olarak yinelenir.

Kaynak kodu:

#include //Arduino standart kitaplığı#include //IR kitaplığı #include "Wire.h" //LCD için Wire.h (bazen gereklidir) #include "LiquidCrystal_I2C.h" //LCD kitaplığı

#define servopin 9 //bu, pin 9'u servo kontrol kablosu (turuncu) için kullanılan pin olarak tanımlar

int RECV_PIN = 11; //IR foto-transistör çıkışı pin 11'e gönderir

int akımAçı = 0; //currentAngle tamsayı değişkenini bildir ve 0'a ayarla

IRrecv geri dönüş(RECV_PIN); //bir IR alıcı nesnesi başlat decode_results sonuçları; //bir decode_results nesnesini örnekle. Bu nesne IR alıcısından ayrıdır.

Servo myservo; //'myservo' adında bir Servo nesnesi oluşturun //en fazla sekiz servo nesnesi oluşturulabilir

LiquidCrystal_I2C myDisplay(0x27, 16, 2); //LCD nesnesini başlat ve yapılandırmayı ayarla

geçersiz kurulum() {

Seri.başla(9600); // seri bağlantı noktasını başlat

myservo.attach(servopin); // pin 9'daki servoyu servo nesnesine bağlar

irrecv.enableIRIn(); // alıcıyı başlat

myDisplay.init(); //LCD'yi başlat

myDisplay.backlight(); //LCD arka ışığını aç

}

boşluk döngüsü () {

if (irrecv.decode(&sonuçlar)) //iletim alındıysa…

{ Serial.print("Alınan IR değeri: ");

Serial.println(sonuçlar.değer); // alınan değeri göster

//alınan komutları yorumla… if (results.value == 16724175) //1 { //left myservo.write(0); }

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

if (sonuçlar.değer == 16743045) //3 { //sağ myservo.write(180); }

if (results.value == 16754775) //+ { //artırma currentAngle = myservo.read(); myservo.write(currentAngle + 1); } if (results.value == 16769055) //- { //akımAçı azaltma = myservo.read(); myservo.write(currentAngle - 1); } }

irrecv.özgeçmiş(); // Sonraki değeri al

//Seri monitör yazdır Serial.print("Mevcut servo konumu: ");

Serial.println(myservo.read()); //bu servo pozisyonunu alır ve seri monitöre gönderir

//LCD yazdır myDisplay.clear();

myDisplay.print("Servo derecesi: ");

myDisplay.print(myservo.read());

gecikme(200); // servo çalıştırmayı kararlı hale getirmek için gecikme

}

7. Adım: Yardım için Youtube Videomu İzleyin

Herhangi bir sorunuz varsa, projeyi tamamen tartışan ve gösteren listelenmemiş YouTube videomu izleyin!

Önerilen: