Talaan ng mga Nilalaman:

Umiikot na Bundok ng Telepono: 7 Mga Hakbang
Umiikot na Bundok ng Telepono: 7 Mga Hakbang

Video: Umiikot na Bundok ng Telepono: 7 Mga Hakbang

Video: Umiikot na Bundok ng Telepono: 7 Mga Hakbang
Video: ITO ANG DAHILAN KUNG BAKIT HINDI NAGHAHALO ANG TUBIG NG PACIFIC AT ATLANTIC OCEAN? | Bagong Kaalaman 2024, Hunyo
Anonim
Umiikot na Bundok ng Telepono
Umiikot na Bundok ng Telepono

Ang itinuturo na ito ay nilikha bilang pagtupad sa kinakailangan ng proyekto ng Makecourse sa University of South Florida (www.makecourse.com).

Nais bang gumawa ng isang umiikot na pag-mount ng telepono upang makita mo ang mga nilalaman ng iyong telepono sa larawan o orientation ng landscape nang hindi mo kailangang hawakan ito? Pagkatapos, huwag nang tumingin sa malayo.

Upang likhain ang proyektong ito, kakailanganin mo ang:

- Arduino Microcontroller at IDE

- USB Cable upang mag-upload ng code

- Breadboard

- Mga Jumper Wires

- LCD Display

- Servo

- Haligi na maaaring mag-attach sa servo

- IR Remote

- IR Tagatanggap

- 10k ohm risistor

- Kenu Airframe + Phone Clip (o isang bagay upang i-hold ang telepono sa lugar)

- 9 V Baterya para sa portable na kapangyarihan o USB na pinapatakbo ng Arduino

Hakbang 1: Buuin ang IR Receiver Circuit

Buuin ang IR Receiver Circuit
Buuin ang IR Receiver Circuit
Buuin ang IR Receiver Circuit
Buuin ang IR Receiver Circuit

Una, tumalon ang GND at + 5V mula sa Arduino sa mga riles ng kuryente sa iyong breadboard. Pagkatapos, tumalon ang iyong 10k ohm risistor mula sa + 5V power rail sa output pin ng iyong IR receiver phototransistor. Susunod, gumamit ng isang jumper wire upang kumonekta sa pin 11 sa Arduino mula sa output pin ng IR receiver. Pagkatapos, gumamit ng dalawang mga wire ng lumulukso upang magpadala ng lupa at + 5V sa kani-kanilang mga pin sa IR receiver. Ang filter ng RC na nakalarawan sa eskematiko sa itaas ay hindi kinakailangan. Panghuli, hindi ko ginawa ang iskematikong ipinakita sa hakbang na ito, at ang mapagkukunan para dito ay naroroon sa larawan.

Hakbang 2: Ikonekta ang Servo, Column, at Holder ng Telepono

Ikonekta ang Servo, Column, at Holder ng Telepono
Ikonekta ang Servo, Column, at Holder ng Telepono
Ikonekta ang Servo, Column, at Holder ng Telepono
Ikonekta ang Servo, Column, at Holder ng Telepono
Ikonekta ang Servo, Column, at Holder ng Telepono
Ikonekta ang Servo, Column, at Holder ng Telepono

Ngayon, gumamit ng dalawang mga wire ng lumulukso upang tumalon mula sa lupa at + 5V ng riles ng powerboard ng tinapay sa brown at pulang mga wire ng servo, ayon sa pagkakabanggit. Pagkatapos, gumamit ng isang wire ng jumper upang ikabit ang pin 9 sa Arduino sa orange wire ng servo.

Pagkatapos, maglakip ng isang haligi sa ulo ng servo tulad ng ipinakita sa pangalawang larawan.

Panghuli, maglakip ng isang bagay upang hawakan ang telepono sa haligi, tulad ng Kenu Airframe +, tulad ng ipinakita sa pangatlong larawan.

Hakbang 3: Ikonekta ang LCD Display para sa Servo Readout

Ikonekta ang LCD Display para sa Servo Readout
Ikonekta ang LCD Display para sa Servo Readout

Tumalon sa lupa at + 5V mula sa iyong riles ng powerboard ng tinapay sa kani-kanilang mga pin sa LCD Display. Gayundin, tumalon ang mga pin ng SDA at SCL mula sa LCD papunta sa Ardiuno. Ang mga SDA at SCL na pin ng Arduino ay maaaring makilala mula sa likuran ng Arduino board at ang dalawang mga pin sa itaas ng AREF at Ground sa itaas ng pin 13. Ang SCL pin ay ang pinakamataas. Pinapayagan nito ang LCD display na basahin ang kasalukuyang posisyon ng servo.

Hakbang 4: Gamitin ang Code at Mga Aklatan na Nakalakip sa Programa ng Arduino

Gamitin ang Code at Mga Aklatan na Nakalakip sa Programang Arduino
Gamitin ang Code at Mga Aklatan na Nakalakip sa Programang Arduino

I-download ang file na RotatingMountCode.zip. I-install ang Arduino IDE at i-unzip ang na-download na file sa Documents / Arduino. Siguraduhing kopyahin mo ang mga nilalaman ng aking mga sketch at folder ng mga aklatan sa iyong folder ng mga sketch at aklatan. Buksan ang sketch ng ServoIRandLCD at i-upload ito sa iyong Arduino.

Tingnan ang mga susunod na hakbang para sa paliwanag sa code.

Hakbang 5: Ikonekta ang Ninanais na Pinagmulan ng Lakas sa Arduino at Gamitin ang Remote upang Paikutin ang Bundok

Ikonekta ang nais na Pinagmulan ng Lakas sa Arduino at Gamitin ang Remote upang Paikutin ang Bundok!
Ikonekta ang nais na Pinagmulan ng Lakas sa Arduino at Gamitin ang Remote upang Paikutin ang Bundok!
Ikonekta ang nais na Pinagmulan ng Lakas sa Arduino at Gamitin ang Remote upang Paikutin ang Bundok!
Ikonekta ang nais na Pinagmulan ng Lakas sa Arduino at Gamitin ang Remote upang Paikutin ang Bundok!

Alinmang iwan ang Arduino na naka-plug sa iyong computer o i-unplug ito mula sa iyong computer at gumamit ng isang 9V na baterya upang magbigay ng lakas ng DC sa Arduino. Panghuli, gumamit ng isang murang IR remote upang makontrol ang servo at samakatuwid ang oryentasyon ng mount ng telepono!

Ang numero 1 sa remote ay dapat itakda ang posisyon ng servo sa 0 degree, bilang 2 hanggang 90 degree, at bilang 3 hanggang 180 degree. Samantala ang mga + at - mga pindutan sa remote ay dapat na dagdagan o mabawasan ang anggulo ng servo ng 1 degree, ayon sa pagkakabanggit.

Tandaan: Kung gumamit ka ng ibang IR Remote kaysa sa nakalarawan dito, posible na nagbago ang mga IR code na naaayon sa iba't ibang mga pindutan. Kung gayon, baguhin ang sketch ng ServoIRandLCD upang magamit sa halip ang mga IR code na iyon.

Hakbang 6: Basahin Ito para sa Paliwanag ng Source Code

Basahin Ito para sa Paliwanag ng Source Code
Basahin Ito para sa Paliwanag ng Source Code
Basahin Ito para sa Paliwanag ng Source Code
Basahin Ito para sa Paliwanag ng Source Code

Ang source code para sa Arduino sketch ay matatagpuan sa ibaba o sa dating naka-attach na.zip file. Ang mga kinakailangang aklatan ay matatagpuan lamang sa dating naka-attach na.zip file sa hakbang 4.

Ang unang bagay na ginagawa ng code ay isama ang mga kinakailangang aklatan na kinakailangan upang patakbuhin ang lahat ng mga pag-andar sa sketch. Susunod, idineklara nito ang pin 9 sa Arduino na magiging pin na pinapagana ng PWM para sa servo. Ginagawa rin itong pin 11 sa Arduino na pin na ginamit para sa IR receiver. Susunod, idineklara nito ang isang variable na integer na ginamit upang subaybayan ang posisyon ng servo sa degree at itakda ito sa 0 degree, una. Pagkatapos, itinuturo nito ang mga kinakailangang bagay para sa isang bagay na IRrecv, isang bagay na servo, at myDisplay na LCD na bagay (na naka-configure din sa parehong linya) upang ang mga bagay na ito ay maaaring magamit sa paglaon.

Susunod, sa pag-andar ng pag-setup, ang serial port ay nagsisimula sa 9600 bits / sec upang magamit ang serial monitor upang subaybayan ang posisyon ng servo kung nais. Ikinakabit din nito ang object ng myservo upang i-pin ang 9, sinisimulan ang IR receiver, at pinasimulan ang LCD display.

Sa pangunahing pag-andar ng loop, ang katawan na kung saan ay naisagawa lamang kung ang isang paghahatid ng IR ay natanggap mula sa IR receiver, ang IR receiver decode ang signal na ipinadala dito mula sa IR remote gamit ang decode (& mga resulta) na function at pagkatapos kung matukoy ng mga pahayag kung ano upang itakda ang servo depende sa natanggap na halaga ng IR. Ang function ng pagsulat ay ginagamit upang itakda ang servo sa mga naaangkop na degree, at ang function na basahin ay ginagamit upang mahanap ang kasalukuyang anggulo ng servo at dagdagan o bawasan ito kung kinakailangan.

Sa wakas, ang kasalukuyang anggulo ng servo ay ipinadala sa parehong serial monitor at display ng LCD gamit ang function na myservo.read (), at ang pangunahing mga loop ay umuulit nang walang katiyakan.

Source Code:

#include // Arduino standard library # isama // IR library # isama ang "Wire.h" //Wire.h para sa LCD (minsan kinakailangan) # isama ang "LiquidCrystal_I2C.h" // LCD library

#define servopin 9 // tinutukoy nito ang pin 9 bilang pin na ginamit para sa lead control ng servo (orange)

int RECV_PIN = 11; // IR photo-transistor nagpapadala ng output sa pin 11

int kasalukuyangAngle = 0; // ideklara ang kasalukuyangAngle variable na integer at itakda sa 0

IRrecv irrecv (RECV_PIN); // instantiate a IR IR object object decode_results mga resulta; // instantiate a decode_results object. Ang bagay na ito ay hiwalay mula sa IR receiver.

Servo MyServo; // instantiate isang Servo object na pinangalanang 'myservo' // isang maximum na walong servo na bagay ang maaaring malikha

LiquidCrystal_I2C myDisplay (0x27, 16, 2); // instantiate LCD object at i-set up ang config

walang bisa ang pag-setup () {

Serial.begin (9600); // simulan ang serial port

myservo.attach (servopin); // nakakabit ang servo sa pin 9 sa object ng servo

irrecv.enableIRIn (); // simulan ang tatanggap

myDisplay.init (); // ipasimula ang LCD

myDisplay.backlight (); // i-on ang LCD backlight

}

void loop () {

kung (irrecv.decode (& mga resulta)) // kung natanggap ang paghahatid…

{Serial.print ("Natanggap ang halaga ng IR:");

Serial.println (resulta.value); // natanggap na halaga ng pagpapakita

// interpret the natanggap na mga utos … if (results.value == 16724175) // 1 {// left myservo.write (0); }

kung (results.value == 16718055) // 2 {// middle myservo.write (90); }

kung (results.value == 16743045) // 3 {// right myservo.write (180); }

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

irrecv.resume (); // Tanggapin ang susunod na halaga

// Serial monitor print Serial.print ("Kasalukuyang posisyon ng servo:");

Serial.println (myservo.read ()); // kinukuha nito ang posisyon ng servo at ipinapadala ito sa serial monitor

// LCD print myDisplay.clear ();

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

myDisplay.print (myservo.read ());

pagkaantala (200); // antala upang maging matatag ang pagpapaandar ng servo

}

Hakbang 7: Panoorin ang Aking Youtube Video para sa Tulong

Tingnan ang aking hindi nakalistang video sa YouTube na kumpletong tumatalakay at nagpapakita ng proyekto kung mayroon kang anumang mga katanungan!

Inirerekumendang: