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, Srpanj
Anonim
Rotirajući nosač telefona
Rotirajući nosač telefona

Ova instrukcija nastala je u skladu s projektnim zahtjevima Makecoursea na Sveučilištu Južne Floride (www.makecourse.com).

Želite izraditi rotirajući držač za telefon kako biste mogli gledati sadržaj svog telefona u okomitom ili vodoravnom položaju bez potrebe za držanjem? Zatim, ne tražite dalje.

Za izradu ovog projekta trebat će vam:

- Arduino mikrokontroler i IDE

- USB kabel za prijenos koda

- Oglasna ploča

- Žice za kratkospojnike

- LCD zaslon

- Servo

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

- IR daljinski

- IC prijemnik

- 10k ohm otpornik

- Kenu Airframe+ telefonska kopča (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 sklop IC prijemnika
Izgradite sklop IC prijemnika
Izgradite sklop IC prijemnika
Izgradite sklop 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 s +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 IC 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: Spojite servo, stupac i držač telefona

Spojite servo, stupac i držač telefona
Spojite servo, stupac i držač telefona
Spojite servo, stupac i držač telefona
Spojite servo, stupac i držač telefona
Spojite servo, stupac i držač telefona
Spojite 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 stupcu, poput Kenu Airframe+, kao što je prikazano na trećoj slici.

Korak 3: Spojite LCD zaslon za očitavanje servo uređaja

Spojite LCD zaslon za očitavanje serva
Spojite LCD zaslon za očitavanje serva

Preskočite uzemljenje i +5V s tračnica za napajanje na odgovarajuće pinove na LCD zaslonu. Također, preskočite iglice SDA i SCL s LCD -a na Ardiuno. Arduino SDA i SCL pinovi mogu se identificirati 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. To omogućuje LCD zaslonu očitavanje trenutnog položaja serva.

Korak 4: Upotrijebite kôd i knjižnice u prilogu za programiranje Arduina

Za programiranje Arduina upotrijebite kôd i knjižnice u prilogu
Za programiranje Arduina upotrijebite kôd i knjižnice u prilogu

Preuzmite datoteku RotatingMountCode.zip. Instalirajte Arduino IDE i raspakirajte preuzetu datoteku u Documents / Arduino. Kopirajte sadržaj mape mojih skica i knjižnica u mapu skica i knjižnica. Otvorite skicu ServoIRandLCD i prenesite je na svoj Arduino.

Za objašnjenje koda pogledajte kasnije korake.

Korak 5: Spojite željeni izvor napajanja na Arduino i pomoću daljinskog upravljača zakrenite nosač

Spojite željeni izvor napajanja na Arduino i pomoću daljinskog upravljača zakrenite nosač!
Spojite željeni izvor napajanja na Arduino i pomoću daljinskog upravljača zakrenite nosač!
Spojite željeni izvor napajanja na Arduino i pomoću daljinskog upravljača zakrenite nosač!
Spojite željeni izvor napajanja na Arduino i pomoću daljinskog upravljača zakrenite nosač!

Ili ostavite Arduino priključen na računalo ili ga isključite iz računala i upotrijebite 9V bateriju 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 stupnjeva, broj 2 do 90 stupnjeva, a broj 3 do 180 stupnjeva. U međuvremenu bi tipke + i - na daljinskom upravljaču trebale povećati ili smanjiti kut serva za 1 stupanj.

Napomena: Ako koristite drugačiji daljinski upravljač od onog na slici ovdje, moguće je da se promijene IR kodovi koji odgovaraju različitim gumbima. 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 knjižnice mogu se pronaći samo u prethodno priloženoj.zip datoteci u 4. koraku.

Prvo što kod radi je uključivanje potrebnih knjižnica potrebnih za pokretanje svih funkcija u skici. Zatim proglašava pin 9 na Arduinu kao signalni pin za servo koji podržava PWM. Također č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 u početku ga postavlja na 0 stupnjeva. Zatim instancira potrebne objekte za IRrecv objekt, servo objekt i myDisplay LCD objekt (koji je također konfiguriran u istom retku) tako da se ti objekti mogu kasnije koristiti.

Zatim, u funkciji postavljanja, serijski port se pokreće pri 9600 bita/s, tako da se serijski monitor može koristiti za praćenje položaja servo -a ako je potrebno. Također priključuje objekt myservo 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, IC prijemnik dekodira signal koji mu se šalje s IC daljinskog upravljača pomoću funkcije dekodiranja (& rezultata), a zatim ako naredbe određuju što za podešavanje servo ovisno o primljenoj IR vrijednosti. Funkcija pisanja koristi se za postavljanje servoa na odgovarajuće stupnjeve, a funkcija čitanja 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 zaslon 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 knjižnica

#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; // deklarirati currentAngle cjelobrojnu varijablu i postaviti 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; // instancirati servo objekt 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čivanje pozadinskog osvjetljenja 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) //+ {// prirast 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

// Ispis serijskog monitora Serial.print ("Trenutni položaj serva:");

Serial.println (myservo.read ()); // ovo dohvaća položaj serva i šalje ga 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 na popisu i koji u potpunosti raspravlja i prikazuje projekt ako imate pitanja!

Preporučeni: