Obsah:

Otočný držák telefonu: 7 kroků
Otočný držák telefonu: 7 kroků

Video: Otočný držák telefonu: 7 kroků

Video: Otočný držák telefonu: 7 kroků
Video: Zamykatelný držák telefonu / locking smartphone bracket 2024, Červenec
Anonim
Otočný držák telefonu
Otočný držák telefonu

Tento instruktážní dokument byl vytvořen v rámci splnění projektového požadavku Makecourse na University of South Florida (www.makecourse.com).

Chcete vytvořit otočný držák telefonu, abyste mohli prohlížet obsah telefonu na výšku nebo na šířku, aniž byste jej museli držet? Pak už nehledejte.

K vytvoření tohoto projektu budete potřebovat:

- Mikrokontrolér Arduino a IDE

- USB kabel pro nahrání kódu

- prkénko

- Propojovací vodiče

- LCD displej

- Servo

- Sloupek, který lze připojit k servu

- IR dálkové ovládání

- IR přijímač

- odpor 10 kOhm

- drak Kenu+ klip na telefon (nebo něco, co drží telefon na místě)

- 9 V baterie pro přenosné napájení nebo jen Arduino napájené USB

Krok 1: Sestavte obvod přijímače IR

Sestavte obvod přijímače IR
Sestavte obvod přijímače IR
Sestavte obvod přijímače IR
Sestavte obvod přijímače IR

Nejprve přeskočte GND a +5V z Arduina na napájecí lišty na vašem prkénku. Poté přeskočte odpor 10 kOhm z napájecí lišty +5 V na výstupní pin fototranzistoru přijímače IR. Dále se propojovacím vodičem připojte ke kolíku 11 na Arduinu z výstupního pinu IR přijímače. Poté pomocí dvou propojovacích vodičů odešlete zem a +5 V na příslušné piny na IR přijímači. RC filtr zobrazený ve schématu výše není nutný. Nakonec jsem v tomto kroku schéma neuvedl a jeho zdroj je na obrázku.

Krok 2: Připojte servo, sloupec a držák telefonu

Připojte servo, sloupec a držák telefonu
Připojte servo, sloupec a držák telefonu
Připojte servo, sloupec a držák telefonu
Připojte servo, sloupec a držák telefonu
Připojte servo, sloupec a držák telefonu
Připojte servo, sloupec a držák telefonu

Nyní pomocí dvou propojovacích vodičů přeskočte ze země a +5 V napájecích lišt na prkénko do hnědého a červeného vodiče serva. Poté pomocí jednoho propojovacího kabelu připojte pin 9 na Arduinu k oranžovému vodiči serva.

Poté připevněte sloupek k hlavě serva, jak ukazuje druhý obrázek.

Nakonec připojte něco, co drží telefon na sloupku, jako je Kenu Airframe+, jak ukazuje třetí obrázek.

Krok 3: Připojte LCD displej pro odečítání serva

Připojte LCD displej pro odečítání serva
Připojte LCD displej pro odečítání serva

Skočte na zem a +5 V z napájecích lišt na prkénko na příslušné kolíky na LCD displeji. Také přeskočte piny SDA a SCL z LCD na Ardiuno. Piny Arduino SDA a SCL lze identifikovat ze zadní strany desky Arduino a jsou to dva piny nad AREF a Ground nad pinem 13. Pin SCL je nejvyšší. To umožňuje LCD displeji číst aktuální polohu serva.

Krok 4: K programování Arduina použijte kód a připojené knihovny

K programování Arduina použijte kód a připojené knihovny
K programování Arduina použijte kód a připojené knihovny

Stáhněte si soubor RotatingMountCode.zip. Nainstalujte Arduino IDE a rozbalte stažený soubor do Documents / Arduino. Ujistěte se, že zkopírujete obsah mé složky skic a knihoven do složky skic a knihoven. Otevřete skicu ServoIRandLCD a nahrajte ji do svého Arduina.

Vysvětlení kódu najdete v dalších krocích.

Krok 5: Připojte požadovaný zdroj napájení k Arduinu a pomocí dálkového ovladače otočte držák

Připojte požadovaný zdroj napájení k Arduinu a pomocí dálkového ovladače otočte držák!
Připojte požadovaný zdroj napájení k Arduinu a pomocí dálkového ovladače otočte držák!
Připojte požadovaný zdroj napájení k Arduinu a pomocí dálkového ovladače otočte držák!
Připojte požadovaný zdroj napájení k Arduinu a pomocí dálkového ovladače otočte držák!

Buď nechte Arduino zapojené do počítače, nebo jej odpojte od počítače a použijte 9V baterii k zajištění stejnosměrného napájení Arduina. Nakonec použijte levné IR dálkové ovládání k servu a tím i orientaci držáku telefonu!

Číslo 1 na dálkovém ovladači by mělo nastavit polohu serva na 0 stupňů, číslo 2 až 90 stupňů a číslo 3 až 180 stupňů. Mezitím by tlačítka + a - na dálkovém ovladači měla zvýšit nebo snížit úhel serva o 1 stupeň.

Poznámka: Pokud používáte jiný IR dálkový ovladač, než je zde zobrazený, je možné, že se IR kódy odpovídající různým tlačítkům změní. Pokud ano, upravte skicu ServoIRandLCD, aby místo toho používala tyto IR kódy.

Krok 6: Přečtěte si toto pro vysvětlení zdrojového kódu

Přečtěte si toto pro vysvětlení zdrojového kódu
Přečtěte si toto pro vysvětlení zdrojového kódu
Přečtěte si toto pro vysvětlení zdrojového kódu
Přečtěte si toto pro vysvětlení zdrojového kódu

Zdrojový kód skici Arduino najdete níže nebo v dříve připojeném souboru.zip. Požadované knihovny lze nalézt pouze v dříve připojeném souboru.zip v kroku 4.

První věc, kterou kód udělá, je zahrnout potřebné knihovny potřebné ke spuštění všech funkcí v náčrtu. Dále deklaruje pin 9 na Arduinu jako signální pin PWM pro servo. To také dělá pin 11 na Arduinu pin používaný pro IR přijímač. Dále deklaruje celočíselnou proměnnou používanou ke sledování polohy serva ve stupních a zpočátku ji nastaví na 0 stupňů. Potom vytvoří instanci požadovaných objektů pro objekt IRrecv, servo objekt a objekt myDisplay LCD (který je také nakonfigurován na stejném řádku), takže tyto objekty lze použít později.

Dále ve funkci nastavení je sériový port spuštěn rychlostí 9600 bitů/s, takže sériový monitor lze použít ke sledování polohy serva, pokud je to žádoucí. Také připojí objekt myservo na pin 9, spustí IR přijímač a inicializuje LCD displej.

Ve funkci hlavní smyčky, jejíž tělo je prováděno pouze v případě, že je IR přijímač přijímán z IR přijímače, IR přijímač dekóduje signál, který je do něj odeslán z IR dálkového ovládání pomocí funkce dekódování (& results), a pak pokud příkazy určují, co nastavit servo v závislosti na přijaté hodnotě IR. Funkce zápisu se používá k nastavení servo na příslušné stupně a funkce čtení se používá k nalezení aktuálního úhlu serva a podle potřeby jej zvýší nebo sníží.

Nakonec je aktuální úhel serva odeslán na sériový monitor i na LCD displej pomocí funkce myservo.read () a hlavní smyčky iterují na neurčito.

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 jako pin použitý pro ovládací kabel servo (oranžový)

int RECV_PIN = 11; // IR foto-tranzistor posílá výstup na pin 11

int currentAngle = 0; // deklarujte celočíselnou proměnnou currentAngle a nastavte na 0

IRrecv unbcv (RECV_PIN); // vytvoření instance objektu IR přijímače decode_results results; // vytvoření instance objektu decode_results. Tento objekt je oddělen od IR přijímače.

Servo myservo; // vytvoření instance objektu Servo s názvem 'myservo' // // lze vytvořit maximálně osm objektů typu servo

LiquidCrystal_I2C myDisplay (0x27, 16, 2); // vytvoření instance objektu LCD a nastavení konfigurace

neplatné nastavení () {

Serial.begin (9600); // spuštění sériového portu

myservo.attach (servopin); // připojí servo na pinu 9 k objektu serva

unbcv.enableIRIn (); // spusťte přijímač

myDisplay.init (); // inicializace LCD

myDisplay.backlight (); // zapnout podsvícení LCD

}

prázdná smyčka () {

if (unbcv.decode (& results)) // pokud byl přenos přijat …

{Serial.print ("IR hodnota přijata:");

Serial.println (results.value); // přijatá zobrazená hodnota

// interpretovat přijaté příkazy … if (results.value == 16724175) // 1 {// left myservo.write (0); }

if (results.value == 16718055) // 2 {// střední myservo.write (90); }

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

if (results.value == 16754775) //+ {// přírůstek currentAngle = myservo.read (); myservo.write (currentAngle + 1); } if (results.value == 16769055) //- {// decrement currentAngle = myservo.read (); myservo.write (currentAngle - 1); }}

unbcv.resume (); // Získá další hodnotu

// Tisk sériového monitoru Serial.print ("Aktuální poloha serva:");

Serial.println (myservo.read ()); // toto načte polohu serva a odešle ji na sériový monitor

// LCD tisk myDisplay.clear ();

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

myDisplay.print (myservo.read ());

zpoždění (200); // zpoždění, aby bylo ovládání servo stabilní

}

Krok 7: Nápovědu sledujte mé video na YouTube

Pokud máte nějaké dotazy, podívejte se na mé neveřejné video na YouTube, které plně diskutuje a předvádí projekt!

Doporučuje: