Obsah:

Otočný držiak telefónu: 7 krokov
Otočný držiak telefónu: 7 krokov

Video: Otočný držiak telefónu: 7 krokov

Video: Otočný držiak telefónu: 7 krokov
Video: Otočný držák mobilu na zápěstí 2024, November
Anonim
Otočný držiak telefónu
Otočný držiak telefónu

Tento pokyn bol vytvorený ako splnenie projektovej požiadavky Makecourse na University of South Florida (www.makecourse.com).

Chcete vytvoriť otočný držiak telefónu, aby ste mohli zobrazovať obsah telefónu na výšku alebo na šírku bez toho, aby ste ho museli držať? Potom už nehľadajte.

Na vytvorenie tohto projektu budete potrebovať:

- Mikrokontrolér Arduino a IDE

- Kábel USB na odoslanie kódu

- Breadboard

- Prepojovacie vodiče

- Displej LCD

- Servo

- Stĺpec, ktorý je možné pripevniť k servu

- IR diaľkové ovládanie

- IR prijímač

- odpor 10 kOhm

- Drak Kenu+ klip na telefón (alebo niečo, čo drží telefón na mieste)

- 9 V batéria pre prenosné napájanie alebo len Arduino napájané USB

Krok 1: Zostavte obvod IR prijímača

Zostavte obvod IR prijímača
Zostavte obvod IR prijímača
Zostavte obvod IR prijímača
Zostavte obvod IR prijímača

Najprv preskočte GND a +5 V z Arduina na napájacie koľajnice na vašom doske. Potom preskočte odpor 10 kOhm z napájacej lišty +5 V na výstupný pin fototranzistora infračerveného prijímača. Ďalej sa prepojovacím káblom pripojte k pinu 11 na Arduine z výstupného kolíka infračerveného prijímača. Potom pomocou dvoch prepojovacích vodičov odošlite uzemnenie a +5 V na príslušné kolíky infračerveného prijímača. RC filter zobrazený v schéme vyššie nie je potrebný. Nakoniec som v tomto kroku nevytvoril schému a zdroj pre ňu je na obrázku.

Krok 2: Pripojte servo, stĺpik a držiak telefónu

Pripojte servo, stĺpik a držiak telefónu
Pripojte servo, stĺpik a držiak telefónu
Pripojte servo, stĺpik a držiak telefónu
Pripojte servo, stĺpik a držiak telefónu
Pripojte servo, stĺpik a držiak telefónu
Pripojte servo, stĺpik a držiak telefónu

Teraz pomocou dvoch prepojovacích káblov preskočte zo zeme a +5 V napájacích koľajníc nepájivého poľa do hnedého a červeného vodiča serva. Potom jedným prepojovacím káblom pripevnite kolík 9 na Arduine k oranžovému vodiču serva.

Potom pripevnite stĺpik k hlave serva, ako je znázornené na druhom obrázku.

Nakoniec pripevnite niečo, čo drží telefón k stĺpiku, napríklad Kenu Airframe+, ako je znázornené na treťom obrázku.

Krok 3: Pripojte LCD displej k odčítaniu serva

Pripojte LCD displej k odčítaniu serva
Pripojte LCD displej k odčítaniu serva

Skočte na zem a +5 V z napájacích koľajničiek vášho dosky na príslušné kolíky na LCD displeji. Tiež preskočte kolíky SDA a SCL z LCD na Ardiuno. Piny Arduino SDA a SCL je možné identifikovať zo zadnej strany dosky Arduino a sú to dva kolíky nad AREF a uzemnenie nad kolíkom 13. Pin SCL je najvyšší. To umožňuje LCD displeju načítať aktuálnu polohu serva.

Krok 4: Na programovanie Arduina použite kód a knižnice priložené

Na programovanie Arduina použite kód a knižnice priložené
Na programovanie Arduina použite kód a knižnice priložené

Stiahnite si súbor RotatingMountCode.zip. Nainštalujte Arduino IDE a rozbaľte stiahnutý súbor do priečinka Documents / Arduino. Nezabudnite skopírovať obsah priečinka moje náčrty a knižnice do priečinka náčrty a knižnice. Otvorte skicu ServoIRandLCD a nahrajte ju do svojho Arduina.

Vysvetlenie kódu nájdete v ďalších krokoch.

Krok 5: Pripojte požadovaný zdroj napájania k Arduinu a pomocou diaľkového ovládača otočte držiak

Pripojte požadovaný zdroj napájania k Arduinu a pomocou diaľkového ovládača otočte držiak!
Pripojte požadovaný zdroj napájania k Arduinu a pomocou diaľkového ovládača otočte držiak!
Pripojte požadovaný zdroj napájania k Arduinu a pomocou diaľkového ovládača otočte držiak!
Pripojte požadovaný zdroj napájania k Arduinu a pomocou diaľkového ovládača otočte držiak!

Buď nechajte Arduino zapojené do počítača, alebo ho odpojte od počítača a použite 9V batériu na zabezpečenie jednosmerného prúdu pre Arduino. Nakoniec použite lacné IR diaľkové ovládanie na ovládanie serva a tým aj orientácie držiaka telefónu!

Číslo 1 na diaľkovom ovládači by malo nastaviť polohu serva na 0 stupňov, číslo 2 až 90 stupňov a číslo 3 až 180 stupňov. Medzitým by tlačidlá + a - na diaľkovom ovládači mali zväčšiť alebo zmenšiť uhol serva o 1 stupeň.

Poznámka: Ak použijete iný IR diaľkový ovládač, než je tu zobrazený, je možné, že sa IR kódy zodpovedajúce rôznym tlačidlám zmenia. Ak je to tak, upravte skicu ServoIRandLCD, aby namiesto toho používala tieto IR kódy.

Krok 6: Prečítajte si vysvetlenie zdrojového kódu

Prečítajte si toto pre vysvetlenie zdrojového kódu
Prečítajte si toto pre vysvetlenie zdrojového kódu
Prečítajte si toto pre vysvetlenie zdrojového kódu
Prečítajte si toto pre vysvetlenie zdrojového kódu

Zdrojový kód náčrtu Arduino nájdete nižšie alebo v predtým priloženom súbore.zip. Požadované knižnice nájdete iba v predtým priloženom súbore.zip v kroku 4.

Prvá vec, ktorú kód robí, je zahrnúť potrebné knižnice potrebné na spustenie všetkých funkcií v skici. Ďalej vyhlasuje kolík 9 na Arduine za signálny pin PWM pre servo. To tiež robí z kolíka 11 na Arduine pin použitý pre IR prijímač. Ďalej deklaruje celočíselnú premennú používanú na sledovanie polohy serva v stupňoch a pôvodne nastaví na 0 stupňov. Potom vytvorí inštanciu požadovaných objektov pre objekt IRrecv, servo objekt a objekt myDisplay LCD (ktorý je tiež nakonfigurovaný v rovnakom riadku), aby bolo možné tieto objekty použiť neskôr.

Ďalej sa vo funkcii nastavenia spustí sériový port s rýchlosťou 9600 bitov/s, takže v prípade potreby je možné použiť sériový monitor na sledovanie polohy serva. Pripojí tiež objekt myservo na pin 9, spustí IR prijímač a inicializuje LCD displej.

Vo funkcii hlavnej slučky, ktorej telo sa vykonáva iba vtedy, ak je z infračerveného prijímača prijatý infračervený prenos, infračervený prijímač dekóduje signál, ktorý mu bol odoslaný z infračerveného diaľkového ovládača, pomocou funkcie dekódovania (& výsledkov) a potom ak príkazy určujú, čo na nastavenie serva v závislosti od prijatej hodnoty IR. Funkcia zápisu sa používa na nastavenie servo na príslušné stupne a funkcia čítania sa používa na nájdenie aktuálneho uhla serva a jeho prípadné zvýšenie alebo zníženie.

Nakoniec sa aktuálny uhol serva odošle na sériový monitor aj na LCD displej pomocou funkcie myservo.read () a hlavné slučky sa opakujú neobmedzene dlho.

Zdrojový kód:

#include // Arduino standard library #include // IR library #include "Wire.h" //Wire.h for LCD (sometimes needed) #include "LiquidCrystal_I2C.h" // LCD library

#define servopin 9 // toto definuje pin 9 ako pin použitý pre kábel ovládania serva (oranžový)

int RECV_PIN = 11; // IR foto-tranzistor posiela výstup na pin 11

int currentAngle = 0; // deklarujte celočíselnú premennú currentAngle a nastavte ju na 0

IRrecv unbcv (RECV_PIN); // inštancia objektu IR prijímača decode_results results; // inštancia objektu decode_results. Tento objekt je oddelený od infračerveného prijímača.

Servo myservo; // inštancia objektu Servo s názvom 'myservo' // // je možné vytvoriť maximálne osem objektov typu servo

LiquidCrystal_I2C myDisplay (0x27, 16, 2); // inštancia objektu LCD a nastavenie konfigurácie

neplatné nastavenie () {

Serial.begin (9600); // spustenie sériového portu

myservo.attach (servopin); // pripevní servo na kolíku 9 k objektu serva

unbcv.enableIRIn (); // spustenie prijímača

myDisplay.init (); // inicializácia LCD

myDisplay.backlight (); // zapnite podsvietenie LCD

}

prázdna slučka () {

if (unbcv.decode (& results)) // ak bol prenos prijatý …

{Serial.print ("Prijatá hodnota IR:");

Serial.println (results.value); // prijatá zobrazená hodnota

// interpretovať prijaté príkazy … if (results.value == 16724175) // 1 {// left myservo.write (0); }

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

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

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

unbcv.resume (); // Prijatie ďalšej hodnoty

// Tlač sériového monitora Serial.print ("Aktuálna poloha serva:");

Serial.println (myservo.read ()); // toto zistí polohu serva a pošle ho na sériový monitor

// LCD print myDisplay.clear ();

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

myDisplay.print (myservo.read ());

oneskorenie (200); // oneskorenie, aby bolo ovládanie servo stabilné

}

Krok 7: Pomoc nájdete na mojom videu YouTube

Ak máte akékoľvek otázky, pozrite si moje nezaradené video na YouTube, ktoré plne diskutuje a predvádza projekt!

Odporúča: