Talaan ng mga Nilalaman:

Batay sa Arduino Serial Servo Controller: 6 na Hakbang
Batay sa Arduino Serial Servo Controller: 6 na Hakbang

Video: Batay sa Arduino Serial Servo Controller: 6 na Hakbang

Video: Batay sa Arduino Serial Servo Controller: 6 na Hakbang
Video: Complete guide to PCA9685 16 channel Servo controller for Arduino with code Version of 5 ( V1) 2024, Nobyembre
Anonim
Batay sa Arduino Serial Servo Controller
Batay sa Arduino Serial Servo Controller
Batay sa Arduino Serial Servo Controller
Batay sa Arduino Serial Servo Controller

Ito ay isang simpleng serial controller para sa maraming mga servos batay sa Arduino. (ang aking unang itinuturo din:))

Karamihan sa mga gawain sa ito ay nagmula sa pagkuha ng software na makipag-usap sa arduino at paggawa ng isang protokol para maipasa ang data. Tulad ng para sa aspeto ng hardware lahat ng ginamit ko ay dalawang servos (Parallax standard servo dito.) Isang Sparkfun Arduino ProtoShield at isang Arduino Duemilanove na may ATMEGA328, ngunit ang karamihan sa mga bahaging ito ay maaaring mapalitan ng mga katulad na item. Naisip ko ang proyektong ito bilang bahagi ng isang RC system, ngunit ang pag-set up ng komunikasyon ay tumagal ng maraming oras. Kung ang sinuman ay may anumang mga pagpapabuti, ideya, o mga bug mangyaring huwag mag-atubiling magbigay ng puna. EDIT: Sinulat ko ito sandali ang nakaraan, kakailanganin lamang na mai-publish ito kamakailan.

Hakbang 1: Mga Bagay na Maaaring Kailangan Mo …

Mga Bagay na Maaaring Kailangan Mo …
Mga Bagay na Maaaring Kailangan Mo …
Mga Bagay na Maaaring Kailangan Mo …
Mga Bagay na Maaaring Kailangan Mo …

Ang ilang mga bagay na kakailanganin mong buuin ito. 1. Arduino board (pinili mo) 2. dalawa (o isa) servos 3. jumper wires 4. Visual Studio 2008 Express - link (opsyonal) 5. Arduino IDE - link Paumanhin sa mga tagahanga ng Linux at Apple, tumatakbo lamang ang aking programa windows sa ngayon, ngunit maaari mo pa ring manu-manong magpadala ng mga serial command sa arduino nang hindi binabago ang code.

Hakbang 2: Ikonekta ang Hardware

Ikonekta ang Hardware
Ikonekta ang Hardware

Walang masyadong kumplikado sa hakbang na ito. Ikonekta lamang ang isang servo sa pin 9 at ang isa pa sa pin 10.

Hakbang 3: I-program ang Arduino

Program ang Arduino
Program ang Arduino

ngayon ay maaari mong i-upload ang sketch papunta sa arduino.

Narito ang isang simpleng pagkasira sa code: # isama ang Servo MyServo; // create servo object upang makontrol ang isang servo Servo MyServo1; int papasokByte = 0, datacount = 0, counter = 0, handa = 0; // para sa papasok na serial data char data [10]; const char verify [8] = "ma11hew"; utos ng char [3]; walang bisa ang pag-setup () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // bubukas ang serial port, nagtatakda ng rate ng data Serial.println ("Kumusta Arduino Dito!"); // idinagdag upang makatulong na makilala ang serial port Ito ay nagse-set up lamang ng serial port at servos. int i; para sa (i = 0; i <180; i ++) {myservo.write (i); pagkaantala (15); } myservo.write (5); para sa (i = 0; i <180; i ++) {myservo1.write (i); pagkaantala (15); } myservo1.write (5); } Simpleng paggalaw ng pagwawalis upang ma-verify nang tama ang mga servo. void loop () {handa = 0; counter = 0; habang (1 == 1) {kung (Serial.read ()! = verify [counter]) {break; } kung (counter == 6) {pagkaantala (20); utos [0] = Serial.read (); utos [1] = Serial.read (); // if (Serial.read () == ((utos [1] * 12)% 8)) // {handa = 1; //} Serial.println ("nai-save na utos"); } counter ++; antala (2); } Sinusuri nito ang serial buffer para sa tamang string ng pahintulot pagkatapos ay sunggaban ng dalawang byte para sa utos. ang nagkomento kung pinapayagan ang pahayag para sa isang pansamantalang tsekum ngunit gagawing mahirap ang manu-manong pag-interfacing. handa na maaaring itakda sa 0 kaya ang mga utos ay hindi mai-parse tulad ng sa kaso ng nasirang data. // search through utos if (handa == 1) {kung (utos [0] == 'T') {utos [0] = 0; Serial.print ("control ng throttle sa pin 9 hanggang:"); Serial.println (mapa (utos [1], 32, 126, 2, 180), DEC); myservo.write (mapa (utos [1], 32, 126, 2, 180)); } kung (utos [0] == 'S') {utos [0] = 0; Serial.print ("control ng throttle sa pin 10 hanggang:"); Serial.println (mapa (utos [1], 32, 126, 2, 180), DEC); myservo1.write (mapa (utos [1], 32, 126, 2, 180)); }}} ang natitirang code ay upang maghanap ng utos para sa mga wastong utos (T o S.) kung alinman sa pagtutugma tumatagal ng susunod na byte at ipadala ito sa servo. higit pa sa mapa (utos [1], 32, 126, 2, 180) sa paglaon … ang code dito ay napapalawak para sa anumang kailangan mo (hal. mga ilaw, motor, IR, atbp.) Ang code na ito ay dapat gumana nang maayos nang walang mga pagbabago

Hakbang 4: I-install ang Software

I-install ang software
I-install ang software

Mayroon akong dalawang paraan upang mai-install ito … nsis installer: I-download ang installer ng sarili na kumukuha sa ibaba at patakbuhin ito. Magkakaroon ka ng pagpipilian upang mag-install ng mga mapagkukunan sa panahon ng pag-install. ang installer binary package ay nag-install ng mga pangunahing c ++ dlls upang maaari itong patakbuhin sa isang computer nang hindi naka-install na ang visual c ++. Kapag natapos na ng installer maaari mo itong patakbuhin mula sa desktop o magsimulang menu. zip way (hindi napatunayan): Mag-download at tumakbo, dapat itong gumana. siguro. (Ang zip archive ay may parehong istraktura ng folder na nilikha ng installer, nang walang mga mapagkukunan. Wala akong isang makina na walang visual studio upang subukan ito upang hindi ito gumana.)

Hakbang 5: Gamitin ang Interface Program

Gamitin ang Interface Program
Gamitin ang Interface Program
Gamitin ang Interface Program
Gamitin ang Interface Program

Upang magamit ang programa piliin muna ang rate ng baud na tinukoy sa arduino sketch. Ang hindi nabago na sketch ay nagde-default sa 38400 baud ngunit maaaring mabago upang umangkop sa iyong mga pangangailangan para sa mga bagay tulad ng isang mas mabagal na link sa radyo. tandaan: ang mga rate ng baud na mas mataas kaysa sa 38400 ay hindi masyadong matatag, sa palagay ko ito ay dahil napupunan ang uart bago maproseso ang data. Susunod, piliin ang COM port na gagamitin. ang mga default ng programa sa COM4 siguraduhin na baguhin ito o ang programa ay mag-crash. Panghuli, mag-click bukas. Kung naging maayos ang lahat ay bubuksan ng programa ang napiling serial port sa napiling rate ng baud. Kung hindi ang programa ay marahil ay mag-crash nang may isang unhandled na pagbubukod. tiyaking tama ang port at subukang muli. Gamitin ang mga textbox upang magsumite ng direktang mga utos sa arduino. Sinusukat ng "mapa (utos [1], 32, 126, 2, 180) ang lahat ng 94 na posibleng mga utos, * puwang * hanggang ~, nababasa ng arduino sa ASCII hanggang 2 hanggang 180 para sa servo. anumang byte na mas mababa sa ASCII 32 (space) o sa itaas 126 (~) mga default sa 63 (?) Ang mga track bar ay nagbibigay ng isang interface ng eaiser para sa mga direktang utos. Ang bawat hakbang ay nagpapadala ng isang serial command sa arduino incrementally.

Hakbang 6: Maging Malikhain

Maging Malikhain!
Maging Malikhain!
Maging Malikhain!
Maging Malikhain!

Mag-isip ng mga cool na bagay na magagawa dito. Ilang mga ideya: 1. Remote na throttle para sa isang kotse. 2. 3D camera mount 3. underwater rover Maglibang !!

Inirerekumendang: