Sadržaj:

Rotirajući nosač telefona: 7 koraka
Rotirajući nosač telefona: 7 koraka

Video: Rotirajući nosač telefona: 7 koraka

Video: Rotirajući nosač telefona: 7 koraka
Video: Lg K7 2017 не включается 2024, Juli
Anonim
Rotirajući nosač telefona
Rotirajući nosač telefona

Ova instrukcija nastala je u skladu sa projektnim zahtjevima Makecourse -a na Univerzitetu Južne Floride (www.makecourse.com).

Želite napraviti rotirajući držač za telefon kako biste mogli gledati sadržaj svog telefona u portretnom ili pejzažnom položaju bez potrebe da ga držite? Zatim, ne tražite dalje.

Za kreiranje ovog projekta trebat će vam:

- Arduino mikrokontroler i IDE

- USB kabel za učitavanje koda

- Oglasna ploča

- Žice za kratkospojnike

- LCD ekran

- Servo

- Stupac koji se može pričvrstiti na servo

- IR daljinski

- IC prijemnik

- 10k ohm otpornik

- Kenu Airframe+ telefonska štipaljka (ili nešto za držanje telefona na mjestu)

- 9 V baterija za prijenosno napajanje ili samo Arduino na USB pogon

Korak 1: Izgradite krug IC prijemnika

Izgradite krug IC prijemnika
Izgradite krug IC prijemnika
Izgradite krug IC prijemnika
Izgradite krug IC prijemnika

Prvo skočite GND i +5V s Arduina na naponske žice na vašoj ploči. Zatim preskočite svoj otpornik od 10 k ohma sa +5V naponske šine na izlazni pin fototranzistora vašeg IR prijemnika. Zatim upotrijebite kratkospojnik za spajanje na pin 11 na Arduinu s izlaznog pina IC prijemnika. Zatim upotrijebite dvije kratkospojne žice za slanje mase i +5V na odgovarajuće pinove na IR prijemniku. RC filter prikazan na gornjoj shemi nije potreban. Na kraju, nisam napravio shemu prikazanu u ovom koraku, a izvor za to je prisutan na slici.

Korak 2: Povežite servo, stupac i držač telefona

Povežite servo, stupac i držač telefona
Povežite servo, stupac i držač telefona
Povežite servo, stupac i držač telefona
Povežite servo, stupac i držač telefona
Povežite servo, stupac i držač telefona
Povežite servo, stupac i držač telefona

Sada, upotrijebite dvije kratkospojne žice za skok sa zemlje i +5V naponskih vodilica na matičnoj ploči u smeđe i crvene žice servo servera. Zatim pomoću jedne kratkospojne žice pričvrstite iglu 9 na Arduinu na narančastu žicu serva.

Zatim pričvrstite stupac na glavu servo uređaja kao što je prikazano na drugoj slici.

Na kraju, pričvrstite nešto za držanje telefona u koloni, poput Kenu Airframe+, kao što je prikazano na trećoj slici.

Korak 3: Povežite LCD ekran za očitavanje servo -a

Priključite LCD ekran za očitavanje servo signala
Priključite LCD ekran za očitavanje servo signala

Preskočite uzemljenje i +5V sa svojih šina za napajanje na odgovarajuće pinove na LCD ekranu. Takođe, preskočite iglice SDA i SCL sa LCD -a na Ardiuno. Arduino SDA i SCL pinovi mogu se prepoznati sa stražnje strane Arduino ploče i to su dva pina iznad AREF -a i uzemljenja iznad pina 13. SCL pin je najviši. Ovo omogućava LCD ekranu da očita trenutni položaj serva.

Korak 4: Upotrijebite kôd i biblioteke u prilogu za programiranje Arduina

Za programiranje Arduina upotrijebite kôd i biblioteke u prilogu
Za programiranje Arduina upotrijebite kôd i biblioteke u prilogu

Preuzmite datoteku RotatingMountCode.zip. Instalirajte Arduino IDE i raspakirajte preuzetu datoteku u Documents / Arduino. Obavezno kopirajte sadržaj fascikle mojih skica i biblioteka u fasciklu skice i biblioteke. Otvorite skicu ServoIRandLCD i postavite je na svoj Arduino.

Za objašnjenje koda pogledajte kasnije korake.

Korak 5: Priključite željeni izvor napajanja na Arduino i upotrijebite daljinski za okretanje nosača

Spojite željeni izvor napajanja na Arduino i upotrijebite daljinski za okretanje nosača!
Spojite željeni izvor napajanja na Arduino i upotrijebite daljinski za okretanje nosača!
Spojite željeni izvor napajanja na Arduino i upotrijebite daljinski za okretanje nosača!
Spojite željeni izvor napajanja na Arduino i upotrijebite daljinski za okretanje nosača!

Ili ostavite Arduino priključen na računalo ili ga isključite iz računara i upotrijebite bateriju od 9 V za napajanje Arduina istosmjernom strujom. Konačno, upotrijebite jeftini IC daljinski upravljač za upravljanje servo pogonom i stoga orijentaciju nosača telefona!

Broj 1 na daljinskom upravljaču trebao bi postaviti položaj servo na 0 stepeni, broj 2 na 90 stepeni, a broj 3 na 180 stepeni. U međuvremenu, tipke + i - na daljinskom upravljaču trebale bi povećati ili smanjiti kut serva za 1 stepen.

Napomena: Ako koristite drugačiji daljinski upravljač od onog koji je prikazan na slici, moguće je da se promijene IC kodovi koji odgovaraju različitim tipkama. Ako je tako, izmijenite skicu ServoIRandLCD tako da umjesto toga koristite te IR kodove.

Korak 6: Pročitajte ovo za objašnjenje izvornog koda

Pročitajte ovo za objašnjenje izvornog koda
Pročitajte ovo za objašnjenje izvornog koda
Pročitajte ovo za objašnjenje izvornog koda
Pročitajte ovo za objašnjenje izvornog koda

Izvorni kod za Arduino skicu možete pronaći ispod ili u prethodno priloženoj.zip datoteci. Potrebne biblioteke mogu se pronaći samo u prethodno priloženoj.zip datoteci u koraku 4.

Prvo što kôd radi je uključivanje neophodnih biblioteka potrebnih za pokretanje svih funkcija u skici. Zatim proglašava pin 9 na Arduinu kao signalni pin za servo koji podržava PWM. Takođe čini pin 11 na Arduinu iglom koja se koristi za IC prijemnik. Zatim deklarira cjelobrojnu varijablu koja se koristi za praćenje položaja servo u stupnjevima i postavlja je na 0 stupnjeva, u početku. Zatim instancira potrebne objekte za IRrecv objekt, servo objekt i myDisplay LCD objekt (koji je također konfiguriran u istoj liniji) tako da se ti objekti mogu kasnije koristiti.

Zatim, u funkciji postavljanja, serijski port se pokreće pri 9600 bita/sek, tako da se serijski monitor može koristiti za praćenje položaja serva po želji. On također povezuje myservo objekt na pin 9, pokreće IC prijemnik i inicijalizira LCD zaslon.

U funkciji glavne petlje, čije se tijelo izvodi samo ako je IR prijem primljen od IC prijemnika, IR prijemnik dekodira signal koji mu se šalje s IC daljinskog upravljača pomoću funkcije dekodiranja (& rezultata), a zatim ako naredbe određuju šta da podesite servo na ovisno o primljenoj IR vrijednosti. Funkcija pisanja se koristi za postavljanje servoa na odgovarajuće stupnjeve, a funkcija čitanja se koristi za pronalaženje trenutnog kuta serva i povećanje ili smanjenje prema potrebi.

Konačno, trenutni kut serva se šalje i na serijski monitor i na LCD ekran pomoću funkcije myservo.read (), a glavne petlje ponavljaju neograničeno dugo.

Izvorni kod:

#include // Arduino standardna biblioteka #include // IR biblioteka #include "Wire.h" //Wire.h za LCD (ponekad potrebno) #include "LiquidCrystal_I2C.h" // LCD biblioteka

#define servopin 9 // ovo definira pin 9 kao pin koji se koristi za servo upravljački vod (narančasta)

int RECV_PIN = 11; // IC foto-tranzistor šalje izlaz na pin 11

int currentAngle = 0; // deklariramo currentAngle cjelobrojnu varijablu i postavimo na 0

IRrecv unrecv (RECV_PIN); // instanciranje objekta IR prijemnika decode_results results; // instanciranje objekta decode_results. Ovaj objekt je odvojen od IC prijemnika.

Servo myservo; // instanciranje servo objekta pod nazivom 'myservo' // može se stvoriti najviše osam servo objekata

LiquidCrystal_I2C myDisplay (0x27, 16, 2); // instancirati LCD objekt i postaviti config

void setup () {

Serial.begin (9600); // pokretanje serijskog porta

myservo.attach (servopin); // priključuje servo na pin 9 na servo objekt

unrecv.enableIRIn (); // pokretanje prijemnika

myDisplay.init (); // inicijalizacija LCD -a

myDisplay.backlight (); // uključuje pozadinsko osvjetljenje LCD -a

}

void loop () {{100} {101}

if (unrecv.decode (& results)) // ako je primljen prijenos …

{Serial.print ("IR vrijednost primljena:");

Serial.println (results.value); // prikazana vrijednost primljena

// tumači primljene naredbe … if (results.value == 16724175) // 1 {// lijevo myservo.write (0); }

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

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

if (results.value == 16754775) //+ {// uvećanje currentAngle = myservo.read (); myservo.write (currentAngle + 1); } if (results.value == 16769055) //- {// smanjivanje currentAngle = myservo.read (); myservo.write (currentAngle - 1); }}

unrecv.resume (); // Primanje sljedeće vrijednosti

// Štampanje serijskog monitora Serial.print ("Trenutna pozicija serva:");

Serial.println (myservo.read ()); // ovo preuzima servo poziciju i šalje je serijskom monitoru

// LCD ispis myDisplay.clear ();

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

myDisplay.print (myservo.read ());

kašnjenje (200); // odgoda radi stabilizacije servo aktiviranja

}

Korak 7: Za pomoć pogledajte My Youtube video

Pogledajte moj video zapis s YouTubea koji nije naveden i koji u potpunosti raspravlja i prikazuje projekt ako imate pitanja!

Preporučuje se: