Πίνακας περιεχομένων:

Serial Servo Controller με βάση το Arduino: 6 βήματα
Serial Servo Controller με βάση το Arduino: 6 βήματα

Βίντεο: Serial Servo Controller με βάση το Arduino: 6 βήματα

Βίντεο: Serial Servo Controller με βάση το Arduino: 6 βήματα
Βίντεο: Lesson 88: Controlling a servo motor using two push button switches 2024, Νοέμβριος
Anonim
Serial Servo Controller με βάση το Arduino
Serial Servo Controller με βάση το Arduino
Serial Servo Controller με βάση το Arduino
Serial Servo Controller με βάση το Arduino

Αυτός είναι ένας απλός σειριακός ελεγκτής για πολλαπλά servos βασισμένα στο Arduino. (το πρώτο μου διδάξιμο επίσης:))

Το μεγαλύτερο μέρος της εργασίας σε αυτό προήλθε από το να πάρετε το λογισμικό να μιλήσει με το arduino και να δημιουργήσετε ένα πρωτόκολλο για τη μετάδοση των δεδομένων. Όσον αφορά την πτυχή του υλικού, το μόνο που χρησιμοποίησα ήταν δύο σερβομηχανήματα (Parallax standard servo εδώ.) Ένα Sparkfun Arduino ProtoShield και ένα Arduino Duemilanove με ATMEGA328, αλλά τα περισσότερα από αυτά τα μέρη μπορούν να αντικατασταθούν με παρόμοια αντικείμενα. Σκέφτηκα αυτό το έργο ως μέρος ενός συστήματος RC, αλλά η δημιουργία της επικοινωνίας πήρε πολύ χρόνο. Εάν κάποιος έχει βελτιώσεις, ιδέες ή σφάλματα, μπορείτε να σχολιάσετε. ΕΠΙΜΕΛΕΙΑ: Το έγραψα πριν από λίγο καιρό, μόλις άρχισα να το δημοσιεύω πρόσφατα.

Βήμα 1: Πράγματα που μπορεί να χρειαστείτε…

Πράγματα που μπορεί να χρειαστείτε…
Πράγματα που μπορεί να χρειαστείτε…
Πράγματα που μπορεί να χρειαστείτε…
Πράγματα που μπορεί να χρειαστείτε…

Μερικά πράγματα που θα χρειαστείτε για να το φτιάξετε. 1. Πλακέτα Arduino (επιλέγετε) 2. δύο (ή ένα) servos 3. καλώδια jumper 4. Visual Studio 2008 Express - σύνδεσμος (προαιρετικός) 5. Arduino IDE - σύνδεσμος Λυπούμαστε για τους λάτρεις του Linux και της Apple, το πρόγραμμά μου λειτουργεί μόνο παράθυρα προς το παρόν, αλλά μπορείτε ακόμα να στείλετε χειροκίνητα σειριακές εντολές στο arduino χωρίς να αλλάξετε τον κώδικα.

Βήμα 2: Συνδέστε το υλικό

Συνδέστε το υλικό
Συνδέστε το υλικό

Τίποτα πολύ περίπλοκο σε αυτό το βήμα. Απλώς συνδέστε το ένα servo στο pin 9 και το άλλο στο pin 10.

Βήμα 3: Προγραμματίστε το Arduino

Προγραμματίστε το Arduino
Προγραμματίστε το Arduino

τώρα μπορείτε να ανεβάσετε το σκίτσο στο arduino.

Εδώ είναι μια απλή ανάλυση του κώδικα: #include Servo myservo; // δημιουργία servo αντικειμένου για τον έλεγχο ενός servo Servo myservo1; int εισερχόμεναByte = 0, datacount = 0, counter = 0, ready = 0; // για εισερχόμενα σειριακά δεδομένα δεδομένων char [10], const char verify [8] = "ma11hew"; εντολή char [3]; void setup () {myservo.attach (9); myservo1.attach (10); Serial.begin (38400); // ανοίγει σειριακή θύρα, ορίζει ρυθμό δεδομένων Serial.println ("Hi Arduino Here!"); // προστέθηκε για να βοηθήσει στον προσδιορισμό της σειριακής θύρας Αυτό ρυθμίζει απλώς τη σειριακή θύρα και τα servos. int i? για (i = 0; i <180; i ++) {myservo.write (i); καθυστέρηση (15)? } myservo.write (5); για (i = 0; i <180; i ++) {myservo1.write (i); καθυστέρηση (15)? } myservo1.write (5); } Απλή κίνηση σάρωσης για να επαληθεύσετε ότι τα servos λειτουργούν σωστά. void loop () {ready = 0; μετρητής = 0; ενώ (1 == 1) {if (Serial.read ()! = verify [counter]) {break; } if (μετρητής == 6) {καθυστέρηση (20); εντολή [0] = Serial.read (); εντολή [1] = Serial.read (); // if (Serial.read () == ((command [1] * 12) % 8)) // {ready = 1; //} Serial.println ("αποθηκευμένη εντολή"); } μετρητής ++; καθυστέρηση (2)? } ελέγχει το σειριακό buffer για τη σωστή συμβολοσειρά εξουσιοδότησης και στη συνέχεια πιάνει δύο byte για την εντολή. Η δήλωση εάν σχολιάζει επιτρέπει ένα πρόχειρο άθροισμα ελέγχου, αλλά θα δυσκόλευε τη χειροκίνητη διασύνδεση. Η ετοιμότητα μπορεί να οριστεί σε 0, ώστε οι εντολές να μην αναλύονται, όπως στην περίπτωση κατεστραμμένων δεδομένων. // αναζήτηση μέσω εντολών if (ready == 1) {if (command [0] == 'T') {command [0] = 0; Serial.print ("έλεγχος πεταλούδας στον πείρο 9 έως:"); Serial.println (χάρτης (εντολή [1], 32, 126, 2, 180), DEC); myservo.write (χάρτης (εντολή [1], 32, 126, 2, 180)); } if (εντολή [0] == 'S') {εντολή [0] = 0; Serial.print ("έλεγχος γκαζιού στον πείρο 10 έως:"); Serial.println (χάρτης (εντολή [1], 32, 126, 2, 180), DEC); myservo1.write (χάρτης (εντολή [1], 32, 126, 2, 180)); }}} ο υπόλοιπος κώδικας είναι να αναζητήσετε την εντολή για έγκυρες εντολές (Τ ή Σ.), εάν ταιριάζει, παίρνει το επόμενο byte και το στέλνει στο σερβο. περισσότερα στο χάρτη (εντολή [1], 32, 126, 2, 180) αργότερα… ο κώδικας εδώ μπορεί να επεκταθεί για οτιδήποτε άλλο χρειαστείτε (π.χ. φώτα, κινητήρες, υπέρυθρες ακτίνες κ.λπ.) αυτός ο κωδικός θα πρέπει να λειτουργεί άψογα χωρίς τροποποιήσεις.

Βήμα 4: Εγκατάσταση λογισμικού

Εγκατάσταση λογισμικού
Εγκατάσταση λογισμικού

Έχω δύο τρόπους για να εγκαταστήσω αυτό το πρόγραμμα εγκατάστασης… nsis: Κατεβάστε το πρόγραμμα αυτόματης εξαγωγής παρακάτω και εκτελέστε το. Θα έχετε την επιλογή να εγκαταστήσετε πηγές κατά την εγκατάσταση. το δυαδικό πακέτο εγκατάστασης εγκαθιστά τα βασικά c ++ dlls, ώστε να μπορεί να εκτελεστεί σε υπολογιστή χωρίς ήδη εγκατεστημένο το οπτικό c ++. Μόλις τελειώσει το πρόγραμμα εγκατάστασης, μπορείτε να το εκτελέσετε από την επιφάνεια εργασίας ή το μενού έναρξης. zip τρόπος (μη επαληθευμένος): Λήψη και εκτέλεση, θα πρέπει να λειτουργήσει. μπορεί. (Το αρχείο zip έχει την ίδια δομή φακέλου που δημιουργήθηκε από το πρόγραμμα εγκατάστασης, χωρίς πηγές. Δεν έχω ένα μηχάνημα χωρίς οπτικό στούντιο για να το δοκιμάσω, ώστε να μην λειτουργεί).

Βήμα 5: Χρησιμοποιήστε το πρόγραμμα διασύνδεσης

Χρησιμοποιήστε το πρόγραμμα διασύνδεσης
Χρησιμοποιήστε το πρόγραμμα διασύνδεσης
Χρησιμοποιήστε το πρόγραμμα διασύνδεσης
Χρησιμοποιήστε το πρόγραμμα διασύνδεσης

Για να χρησιμοποιήσετε το πρόγραμμα, πρώτα επιλέξτε το ρυθμό baud που ορίζεται στο σκίτσο του arduino. Το μη τροποποιημένο σκίτσο είναι προεπιλεγμένο σε 38400 baud, αλλά μπορεί να αλλάξει ώστε να ταιριάζει στις ανάγκες σας για πράγματα όπως ένας πιο αργός σύνδεσμος ραδιοφώνου. Σημείωση: τα ποσοστά baud υψηλότερα από 38400 δεν ήταν πολύ σταθερά, νομίζω ότι αυτό συμβαίνει επειδή το uart γεμίζει πριν από την επεξεργασία των δεδομένων. Στη συνέχεια, επιλέξτε τη θύρα COM που θα χρησιμοποιήσετε. το πρόγραμμα είναι προεπιλεγμένο σε COM4 φροντίστε να το αλλάξετε διαφορετικά το πρόγραμμα θα χαλάσει. Τέλος, κάντε κλικ στο άνοιγμα. Εάν όλα πήγαν καλά, το πρόγραμμα θα ανοίξει την επιλεγμένη σειριακή θύρα σε επιλεγμένο ρυθμό baud. Εάν όχι, το πρόγραμμα πιθανότατα θα καταρρεύσει με μια εξαίρεση χωρίς χειρισμό. βεβαιωθείτε ότι η θύρα είναι σωστή και δοκιμάστε ξανά. Χρησιμοποιήστε τα πλαίσια κειμένου για να υποβάλετε άμεσες εντολές στο arduino. Ο "χάρτης (εντολή [1], 32, 126, 2, 180)" κλιμακώνει όλες τις 94 πιθανές εντολές, * διάστημα * έως ~, που διαβάζονται από το arduino στο ASCII σε 2 έως 180 για το σερβο. τυχόν byte μικρότερο από ASCII 32 (διάστημα) ή πάνω από 126 () προεπιλογή σε 63 (?) Οι γραμμές κομματιού παρέχουν μια διεπαφή eaiser για άμεσες εντολές. κάθε βήμα στέλνει μια σειριακή εντολή στο arduino σταδιακά.

Βήμα 6: Γίνετε δημιουργικοί

Γίνετε δημιουργικοί!
Γίνετε δημιουργικοί!
Γίνετε δημιουργικοί!
Γίνετε δημιουργικοί!

Σκεφτείτε ωραία πράγματα να φτιάξετε με αυτό. Μερικές ιδέες: 1. Τηλεχειριστήριο γκαζιού για αυτοκίνητο. 2. Τρισδιάστατη βάση κάμερας 3. υποβρύχιο ρόβερ Καλή διασκέδαση !!

Συνιστάται: