Turinys:

„Arduino“serijos servo valdiklis: 6 žingsniai
„Arduino“serijos servo valdiklis: 6 žingsniai

Video: „Arduino“serijos servo valdiklis: 6 žingsniai

Video: „Arduino“serijos servo valdiklis: 6 žingsniai
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Lapkritis
Anonim
„Arduino“pagrįstas serijinis servo valdiklis
„Arduino“pagrįstas serijinis servo valdiklis
„Arduino“pagrįstas serijinis servo valdiklis
„Arduino“pagrįstas serijinis servo valdiklis

Tai paprastas serijinis valdiklis, skirtas daugeliui servų, pagrįstų „Arduino“. (mano pirmas pamokymas taip pat:))

Didžioji darbo dalis buvo susijusi su programinės įrangos pokalbiu su arduino ir duomenų perdavimo protokolo sudarymu. Kalbant apie aparatūros aspektą, aš naudoju tik du servo įrenginius („Parallax“standartinis servo čia.) „Sparkfun Arduino ProtoShield“ir „Arduino Duemilanove“su ATMEGA328, tačiau daugumą šių dalių galima pakeisti panašiais elementais. Šį projektą sugalvojau kaip RC sistemos dalį, tačiau ryšio nustatymas užėmė daug laiko. Jei kas nors turi patobulinimų, idėjų ar klaidų, nedvejodami komentuokite. EDIT: Aš tai rašiau prieš kurį laiką, tik neseniai jį paskelbiau.

1 žingsnis: dalykų, kurių jums gali prireikti…

Dalykai, kurių jums gali prireikti…
Dalykai, kurių jums gali prireikti…
Dalykai, kurių jums gali prireikti…
Dalykai, kurių jums gali prireikti…

Kai kurie dalykai, kurių jums reikės norint jį sukurti. 1. „Arduino“plokštė (jūs pasirenkate) 2. du (arba vienas) servos 3. trumpieji laidai 4. „Visual Studio 2008 Express“- nuoroda (neprivaloma) 5. „Arduino IDE“- nuoroda Atsiprašome „Linux“ir „Apple“gerbėjų, mano programa veikia tik „Windows“, bet vis tiek galite rankiniu būdu siųsti serijines komandas „arduino“nekeisdami kodo.

2 veiksmas: prijunkite aparatūrą

Prijunkite aparatūrą
Prijunkite aparatūrą

Šiam žingsniui nėra nieko labai sudėtingo. Tiesiog prijunkite vieną servo prie 9 kaiščio ir kitą prie 10 kaiščio.

3 žingsnis: užprogramuokite „Arduino“

Programuokite „Arduino“
Programuokite „Arduino“

dabar galite įkelti eskizą į arduino.

Čia yra paprastas kodo suskirstymas: #include Servo myservo; // sukurti servo objektą servo valdymui Servo myservo1; int gaunamas baitas = 0, duomenų skaičius = 0, skaitiklis = 0, parengtas = 0; // gaunamiems serijiniams duomenims char duomenys [10]; const char patikrinti [8] = "ma11hew"; char komanda [3]; void setup () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // atidaro serijinį prievadą, nustato duomenų greitį Serial.println ("Labas Arduino čia!"); // pridėta, kad padėtų nustatyti nuoseklųjį prievadą. Tai tik nustato serijinį prievadą ir servo. int i; (i = 0; i <180; i ++) {myservo.write (i); vėlavimas (15); } myservo.write (5); (i = 0; i <180; i ++) {myservo1.write (i); vėlavimas (15); } myservo1.write (5); } Paprastas šlifavimo judesys, siekiant patikrinti, ar tinkamai veikia servoservisai. tuštumos kilpa () {paruošta = 0; skaitiklis = 0; while (1 == 1) {if (Serial.read ()! = patikrinti [skaitiklis]) {break; } if (skaitiklis == 6) {delay (20); komanda [0] = Serial.read (); komanda [1] = Serial.read (); // jei (Serial.read () == ((komanda [1] * 12) % 8)) // {ready = 1; //} Serial.println ("išsaugota komanda"); } skaitiklis ++; uždelsimas (2); } tai patikrina, ar serijiniame buferyje yra teisinga autorizacijos eilutė, tada paima du komandos baitus. pakomentavo, jei teiginys leidžia atlikti laikiną kontrolinę sumą, tačiau apsunkintų rankinį sąsają. paruoštas gali būti nustatytas į 0, todėl komandos nebus analizuojamos, pavyzdžiui, sugadintų duomenų atveju. // ieškoti per komandas if (ready == 1) {if (command [0] == 'T') {command [0] = 0; Serial.print ("droselio valdymas 9 kaištyje iki:"); Serial.println (žemėlapis (komanda [1], 32, 126, 2, 180), DEC); myservo.write (žemėlapis (komanda [1], 32, 126, 2, 180)); } if (komanda [0] == 'S') {komanda [0] = 0; Serial.print ("droselio valdymas 10 kaiščio iki:"); Serial.println (žemėlapis (komanda [1], 32, 126, 2, 180), DEC); myservo1.write (žemėlapis (komanda [1], 32, 126, 2, 180)); }}} likusi kodo dalis yra ieškoti komandoje galiojančių komandų (T arba S.), jei kuri nors iš jų atitinka kitą baitą ir siunčia jį į servo. daugiau žemėlapyje (komanda [1], 32, 126, 2, 180) vėliau … čia esantį kodą galima išplėsti viskam, ko jums gali prireikti (pvz., žibintams, varikliams, IR ir pan.), šis kodas turėtų veikti gerai modifikacijas.

4 veiksmas: įdiekite programinę įrangą

Įdiekite programinę įrangą
Įdiekite programinę įrangą

Turiu du būdus, kaip įdiegti šią… nsis diegimo programą: Atsisiųskite žemiau esantį savaiminio diegimo diegimo programą ir paleiskite ją. Diegimo metu turėsite galimybę įdiegti šaltinius. diegimo diegimo paketas įdiegia pagrindinius „c ++“dll failus, kad jį būtų galima paleisti kompiuteryje, dar neįdiegus „visual c ++“. Baigę diegimo programą, galite ją paleisti iš darbalaukio arba meniu Pradėti. zip būdas (nepatvirtintas): atsisiųskite ir paleiskite, jis turėtų veikti. gal būt. (ZIP archyve yra ta pati aplanko struktūra, kurią sukūrė diegimo programa, be šaltinių. Neturiu mašinos be vizualinės studijos, kad galėčiau ją išbandyti, todėl ji gali neveikti.)

5 veiksmas: naudokite sąsajos programą

Naudokite sąsajos programą
Naudokite sąsajos programą
Naudokite sąsajos programą
Naudokite sąsajos programą

Norėdami naudoti programą, pirmiausia pasirinkite duomenų perdavimo spartą, apibrėžtą arduino eskize. Nemodifikuotas eskizas pagal numatytuosius nustatymus yra 38400 baudų, tačiau jį galima pakeisti pagal jūsų poreikius, pvz., Lėtesnį radijo ryšį. Pastaba: didesnis nei 38400 duomenų perdavimo greitis nebuvo labai stabilus, manau, taip yra todėl, kad uartas užpildomas prieš pradedant apdoroti duomenis. Tada pasirinkite norimą naudoti COM prievadą. programa pagal numatytuosius nustatymus yra COM4, būtinai ją pakeiskite, kitaip programa suges. Galiausiai spustelėkite atidaryti. Jei viskas klostėsi gerai, programa atidarys pasirinktą nuoseklųjį prievadą pasirinktu duomenų perdavimo greičiu. Jei ne, programa tikriausiai sudužs su neapdorota išimtimi. įsitikinkite, kad prievadas teisingas, ir bandykite dar kartą. Naudokite teksto laukelius, kad pateiktumėte tiesiogines komandas arduino. „Žemėlapis (komanda [1], 32, 126, 2, 180)“padidina visas 94 galimas komandas, * tarpo * per ~, kurias ASDII arduino gali nuskaityti nuo 2 iki 180 servo. bet kuris baitas, mažesnis nei ASCII 32 (tarpas) arba didesnis nei 126 (~), pagal numatytuosius nustatymus yra 63 (?) Takelių juostos suteikia eaiser sąsają tiesioginėms komandoms. kiekvienas žingsnis siunčia serijinę komandą arduino palaipsniui.

6 žingsnis: būkite kūrybingi

Būkite kūrybingi!
Būkite kūrybingi!
Būkite kūrybingi!
Būkite kūrybingi!

Pagalvokite apie šaunius dalykus, kuriuos galite padaryti su tuo. Keletas idėjų: 1. Nuotolinis automobilio droselis. 2. 3D kameros laikiklis 3. povandeninis roveris Smagiai !!

Rekomenduojamas: