Cuprins:

Servo Controller Serial Bazat pe Arduino: 6 pași
Servo Controller Serial Bazat pe Arduino: 6 pași

Video: Servo Controller Serial Bazat pe Arduino: 6 pași

Video: Servo Controller Serial Bazat pe Arduino: 6 pași
Video: Complete guide to PCA9685 16 channel Servo controller for Arduino with code Version of 5 ( V1) 2024, Noiembrie
Anonim
Servo controler serial bazat pe Arduino
Servo controler serial bazat pe Arduino
Servo controler serial bazat pe Arduino
Servo controler serial bazat pe Arduino

Acesta este un controler serial simplu pentru mai multe servos bazat pe Arduino. (și primul meu instructable:))

Cea mai mare parte a lucrului în acest sens a venit din obținerea software-ului pentru a vorbi cu arduino și crearea unui protocol pentru transmiterea datelor. În ceea ce privește aspectul hardware, tot ce am folosit au fost două servouri (servo standard Parallax aici.) Un Sparkfun Arduino ProtoShield și un Arduino Duemilanove cu ATMEGA328, dar majoritatea acestor părți pot fi înlocuite cu articole similare. Am gândit acest proiect ca parte a unui sistem RC, dar configurarea comunicării a durat mult. Dacă cineva are îmbunătățiri, idei sau erori, vă rugăm să nu ezitați să comentați. EDIT: Am scris asta o vreme în urmă, tocmai am ajuns să-l public recent.

Pasul 1: Lucruri de care ai putea avea nevoie …

Lucruri de care ai putea avea nevoie …
Lucruri de care ai putea avea nevoie …
Lucruri de care ai putea avea nevoie …
Lucruri de care ai putea avea nevoie …

Unele lucruri de care veți avea nevoie pentru a construi acest lucru. 1. Placa Arduino (tu alegi) 2. două (sau unul) servos 3. fire jumper 4. Visual Studio 2008 Express - link (opțional) 5. Arduino IDE - link Ne pare rău Fanii Linux și Apple, programul meu rulează doar pe Windows pentru moment, dar puteți totuși trimite manual comenzi seriale către arduino fără a schimba codul.

Pasul 2: Conectați hardware-ul

Conectați hardware-ul
Conectați hardware-ul

Nimic foarte complex la acest pas. Conectați doar un servo la pinul 9 și celălalt la pinul 10.

Pasul 3: Programați Arduino

Programează Arduino
Programează Arduino

acum puteți încărca schița pe arduino.

Iată o defalcare simplă a codului: #include Servo myservo; // creați un obiect servo pentru a controla un servo Servo myservo1; int incomingByte = 0, datacount = 0, counter = 0, ready = 0; // pentru datele de intrare a datelor de serie [10]; const char verify [8] = "ma11hew"; comanda char [3]; void setup () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // deschide portul serial, setează rata de date Serial.println ("Bună Arduino aici!"); // adăugat pentru a ajuta la identificarea portului serial Aceasta configurează doar portul serial și servo-urile. int i; pentru (i = 0; i <180; i ++) {myservo.write (i); întârziere (15); } myservo.write (5); pentru (i = 0; i <180; i ++) {myservo1.write (i); întârziere (15); } myservo1.write (5); } Mișcare simplă de verificare pentru a verifica funcționarea corectă a servoarelor. bucla void () {gata = 0; contor = 0; while (1 == 1) {if (Serial.read ()! = verify [counter]) {break; } if (contor == 6) {întârziere (20); comanda [0] = Serial.read (); comanda [1] = Serial.read (); // if (Serial.read () == ((comanda [1] * 12)% 8)) // {ready = 1; //} Serial.println („comanda salvată”); } contor ++; întârziere (2); } aceasta verifică bufferul serial pentru șirul de autorizare corect, apoi apucă doi octeți pentru comandă. declarația comentată dacă permite o sumă de verificare improvizată, dar ar face dificilă interfața manuală. gata poate fi setată la 0 astfel încât comenzile nu vor fi analizate, cum ar fi în cazul datelor corupte. // cauta prin comenzi if (gata == 1) {if (comanda [0] == 'T') {comanda [0] = 0; Serial.print ("control al clapetei de accelerație pe pinul 9 la:"); Serial.println (hartă (comandă [1], 32, 126, 2, 180), DEC); myservo.write (hartă (comandă [1], 32, 126, 2, 180)); } if (comanda [0] == 'S') {comanda [0] = 0; Serial.print ("controlul clapetei de accelerație pe pinul 10 la:"); Serial.println (hartă (comandă [1], 32, 126, 2, 180), DEC); myservo1.write (hartă (comandă [1], 32, 126, 2, 180)); }}} restul codului este de a căuta comanda pentru comenzi valide (T sau S.) dacă oricare dintre potriviri ia următorul octet și îl trimite la servo. mai multe pe hartă (comanda [1], 32, 126, 2, 180) mai târziu … codul de aici este extensibil pentru orice altceva aveți nevoie (de exemplu, lumini, motoare, IR etc.) acest cod ar trebui să funcționeze bine fără modificări.

Pasul 4: Instalați software-ul

Instalați software-ul
Instalați software-ul

Am două modalități de a instala acest … instalator nsis: Descărcați instalatorul de autoextragere de mai jos și rulați-l. Veți avea opțiunea de a instala surse în timpul instalării. pachetul binar de instalare instalează core c ++ dll-uri, astfel încât să poată fi rulat pe un computer fără c ++ vizual instalat deja. Odată ce instalatorul se termină, îl puteți rula de pe desktop sau din meniul de pornire. mod zip (neconfirmat): descărcați și rulați, ar trebui să funcționeze. poate. (Arhiva zip are aceeași structură de dosare creată de programul de instalare, fără surse. Nu am o mașină fără studio vizual care să o testeze, deci este posibil să nu funcționeze.)

Pasul 5: Utilizați programul de interfață

Utilizați programul de interfață
Utilizați programul de interfață
Utilizați programul de interfață
Utilizați programul de interfață

Pentru a utiliza programul, selectați mai întâi rata de transmisie definită în schița arduino. Schița nemodificată este implicită la 38400 baud, dar poate fi modificată pentru a se potrivi nevoilor dvs. pentru lucruri precum o legătură radio mai lentă. notă: ratele de transmisie mai mari de 38400 nu au fost foarte stabile, cred că acest lucru se datorează faptului că uart se umple înainte ca datele să poată fi procesate. Apoi, selectați portul COM de utilizat. programul implicit la COM4 asigurați-vă că îl modificați sau programul se va prăbuși. În cele din urmă, faceți clic pe Deschidere. Dacă totul a mers bine, programul va deschide portul serial selectat la viteza de transmisie selectată. În caz contrar, programul se va prăbuși probabil cu o excepție nesoluționată. asigurați-vă că portul este corect și încercați din nou. Utilizați casetele text pentru a trimite comenzi directe către arduino. „Harta (comanda [1], 32, 126, 2, 180)” scalează toate cele 94 de comenzi posibile, * spațiu * până la ~, lizibil de către arduino în ASCII la 2 până la 180 pentru servo. orice octet mai mic decât ASCII 32 (spațiu) sau peste 126 (~) implicit la 63 (?) Barele de urmărire oferă o interfață mai bună pentru comenzi directe. fiecare pas trimite o comandă serial către arduino în mod incremental.

Pasul 6: Fii creativ

Fii creativ!
Fii creativ!
Fii creativ!
Fii creativ!

Gândește-te la lucruri interesante de făcut cu asta. Câteva idei: 1. Accelerator la distanță pentru o mașină. 2. Suport cameră 3D 3. Rover subacvatic Distrează-te !!

Recomandat: