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

Περιστρεφόμενη βάση τηλεφώνου: 7 βήματα
Περιστρεφόμενη βάση τηλεφώνου: 7 βήματα

Βίντεο: Περιστρεφόμενη βάση τηλεφώνου: 7 βήματα

Βίντεο: Περιστρεφόμενη βάση τηλεφώνου: 7 βήματα
Βίντεο: Cartech - Βάση κινητού αυτοκινήτου SMART 28000 2024, Ιούλιος
Anonim
Περιστρεφόμενη βάση τηλεφώνου
Περιστρεφόμενη βάση τηλεφώνου

Αυτό το διδακτικό δημιουργήθηκε για να εκπληρώσει την απαίτηση έργου του Makecourse στο Πανεπιστήμιο της Νότιας Φλόριντα (www.makecourse.com).

Θέλετε να κάνετε μια περιστρεφόμενη βάση τηλεφώνου για να μπορείτε να βλέπετε τα περιεχόμενα του τηλεφώνου σας σε κατακόρυφο ή οριζόντιο προσανατολισμό χωρίς να χρειάζεται να το κρατάτε; Τότε, μην ψάχνετε άλλο.

Για να δημιουργήσετε αυτό το έργο, θα χρειαστείτε:

- Μικροελεγκτής Arduino και IDE

- Καλώδιο USB για μεταφόρτωση κώδικα

- Breadboard

- Jumper Wires

- Οθόνη LCD

- Σέρβο

- Στήλη που μπορεί να προσαρτηθεί στο σερβο

- Τηλεχειριστήριο IR

- Δέκτης IR

- Αντίσταση 10k ohm

- Kenu Airframe+ Phone Clip (ή κάτι για να κρατήσετε το τηλέφωνο στη θέση του)

- Μπαταρία 9 V για φορητή ισχύ ή απλώς τροφοδοτικό USB Arduino

Βήμα 1: Δημιουργήστε το κύκλωμα δέκτη IR

Δημιουργήστε το κύκλωμα δέκτη IR
Δημιουργήστε το κύκλωμα δέκτη IR
Δημιουργήστε το κύκλωμα δέκτη IR
Δημιουργήστε το κύκλωμα δέκτη IR

Πρώτα, πηδήξτε GND και +5V από το Arduino στις ράγες τροφοδοσίας στο breadboard σας. Στη συνέχεια, μετακινήστε την αντίσταση 10k ohm από τη ράγα ισχύος +5V στην ακίδα εξόδου του φωτοτρανζίστορ δέκτη IR. Στη συνέχεια, χρησιμοποιήστε ένα καλώδιο βραχυκυκλωτή για να συνδεθείτε στην ακίδα 11 στο Arduino από την ακίδα εξόδου του δέκτη IR. Στη συνέχεια, χρησιμοποιήστε δύο καλώδια βραχυκυκλωτή για να στείλετε γείωση και +5V στις αντίστοιχες ακίδες του δέκτη IR. Το φίλτρο RC που απεικονίζεται στο παραπάνω σχήμα δεν είναι απαραίτητο. Τέλος, δεν έκανα το σχηματικό που εμφανίζεται σε αυτό το βήμα και η πηγή για αυτό είναι παρούσα στην εικόνα.

Βήμα 2: Συνδέστε τη θήκη σερβο, στήλης και τηλεφώνου

Συνδέστε το Servo, τη στήλη και τη θήκη τηλεφώνου
Συνδέστε το Servo, τη στήλη και τη θήκη τηλεφώνου
Συνδέστε το Servo, τη στήλη και τη θήκη τηλεφώνου
Συνδέστε το Servo, τη στήλη και τη θήκη τηλεφώνου
Συνδέστε το Servo, τη στήλη και τη θήκη τηλεφώνου
Συνδέστε το Servo, τη στήλη και τη θήκη τηλεφώνου

Τώρα, χρησιμοποιήστε δύο καλώδια άλματος για να πηδήξετε από το έδαφος και +5V από τις ράγες ισχύος του breadboard στα καφέ και κόκκινα καλώδια του σερβο, αντίστοιχα. Στη συνέχεια, χρησιμοποιήστε ένα καλώδιο άλματος για να συνδέσετε τον πείρο 9 στο Arduino στο πορτοκαλί καλώδιο του σερβο.

Στη συνέχεια, συνδέστε μια στήλη στην κεφαλή του σερβο, όπως φαίνεται στη δεύτερη εικόνα.

Τέλος, επισυνάψτε κάτι για να κρατήσετε το τηλέφωνο στη στήλη, όπως το Kenu Airframe+, όπως φαίνεται στην τρίτη εικόνα.

Βήμα 3: Συνδέστε την οθόνη LCD για Servo Readout

Συνδέστε την οθόνη LCD για Servo Readout
Συνδέστε την οθόνη LCD για Servo Readout

Μεταβείτε στο έδαφος και +5V από τις ράγες ισχύος του breadboard στους αντίστοιχους πείρους στην οθόνη LCD. Επίσης, μετακινήστε τις καρφίτσες SDA και SCL από την οθόνη LCD στο Ardiuno. Οι καρφίτσες SDA και SCL του Arduino μπορούν να αναγνωριστούν από το πίσω μέρος του πίνακα Arduino και είναι οι δύο ακίδες πάνω από το AREF και το Ground πάνω από τον πείρο 13. Ο πείρος SCL είναι ο υψηλότερος. Αυτό επιτρέπει στην οθόνη LCD να διαβάζει την τρέχουσα θέση σερβο.

Βήμα 4: Χρησιμοποιήστε τον κώδικα και τις βιβλιοθήκες που επισυνάπτονται για τον προγραμματισμό του Arduino

Χρησιμοποιήστε τον κώδικα και τις βιβλιοθήκες που επισυνάπτονται για τον προγραμματισμό του Arduino
Χρησιμοποιήστε τον κώδικα και τις βιβλιοθήκες που επισυνάπτονται για τον προγραμματισμό του Arduino

Κατεβάστε το αρχείο RotatingMountCode.zip. Εγκαταστήστε το Arduino IDE και αποσυμπιέστε το ληφθέν αρχείο στο Documents / Arduino. Βεβαιωθείτε ότι έχετε αντιγράψει τα περιεχόμενα του φακέλου σκίτσων και βιβλιοθηκών στο φάκελο σκίτσων και βιβλιοθηκών. Ανοίξτε το σκίτσο ServoIRandLCD και ανεβάστε το στο Arduino σας.

Δείτε τα επόμενα βήματα για εξήγηση κώδικα.

Βήμα 5: Συνδέστε την επιθυμητή πηγή τροφοδοσίας στο Arduino και χρησιμοποιήστε το τηλεχειριστήριο για να περιστρέψετε το βουνό

Συνδέστε την επιθυμητή πηγή ενέργειας στο Arduino και χρησιμοποιήστε το τηλεχειριστήριο για να περιστρέψετε το βουνό!
Συνδέστε την επιθυμητή πηγή ενέργειας στο Arduino και χρησιμοποιήστε το τηλεχειριστήριο για να περιστρέψετε το βουνό!
Συνδέστε την επιθυμητή πηγή ενέργειας στο Arduino και χρησιμοποιήστε το τηλεχειριστήριο για να περιστρέψετε το βουνό!
Συνδέστε την επιθυμητή πηγή ενέργειας στο Arduino και χρησιμοποιήστε το τηλεχειριστήριο για να περιστρέψετε το βουνό!

Είτε αφήστε το Arduino συνδεδεμένο στον υπολογιστή σας είτε αποσυνδέστε το από τον υπολογιστή σας και χρησιμοποιήστε μια μπαταρία 9V για να τροφοδοτήσετε DC στο Arduino. Τέλος, χρησιμοποιήστε ένα φτηνό τηλεχειριστήριο IR για να ελέγξετε το σερβο και επομένως τον προσανατολισμό της βάσης του τηλεφώνου!

Ο αριθμός 1 στο τηλεχειριστήριο θα πρέπει να ρυθμίσει τη θέση σερβο σε 0 μοίρες, τον αριθμό 2 έως 90 μοίρες και τον αριθμό 3 έως 180 μοίρες. Εν τω μεταξύ, τα κουμπιά + και - στο τηλεχειριστήριο θα πρέπει να αυξήσουν ή να μειώσουν τη γωνία του servo κατά 1 βαθμό, αντίστοιχα.

Σημείωση: Εάν χρησιμοποιείτε διαφορετικό τηλεχειριστήριο IR από αυτό που απεικονίζεται εδώ, είναι πιθανό να αλλάξουν οι κωδικοί IR που αντιστοιχούν σε διάφορα κουμπιά. Εάν ναι, τροποποιήστε το σκίτσο ServoIRandLCD για να χρησιμοποιήσετε αυτούς τους κωδικούς IR.

Βήμα 6: Διαβάστε αυτό για επεξήγηση πηγαίου κώδικα

Διαβάστε αυτό για επεξήγηση πηγαίου κώδικα
Διαβάστε αυτό για επεξήγηση πηγαίου κώδικα
Διαβάστε αυτό για επεξήγηση πηγαίου κώδικα
Διαβάστε αυτό για επεξήγηση πηγαίου κώδικα

Ο πηγαίος κώδικας για το σκίτσο του Arduino βρίσκεται παρακάτω ή στο προηγούμενο συνημμένο αρχείο.zip. Οι απαιτούμενες βιβλιοθήκες μπορούν να βρεθούν μόνο στο προηγούμενο συνημμένο αρχείο.zip στο βήμα 4.

Το πρώτο πράγμα που κάνει ο κώδικας είναι να περιλαμβάνει τις απαραίτητες βιβλιοθήκες που απαιτούνται για την εκτέλεση όλων των συναρτήσεων στο σκίτσο. Στη συνέχεια, δηλώνει τον ακροδέκτη 9 στο Arduino ότι είναι ο ακροδέκτης σήματος που διαθέτει PWM για το σερβο. Κάνει επίσης τον πείρο 11 στο Arduino τον πείρο που χρησιμοποιείται για τον δέκτη IR. Στη συνέχεια, δηλώνει μια ακέραιη μεταβλητή που χρησιμοποιείται για την παρακολούθηση της θέσης του σερβο σε μοίρες και την ορίζει σε 0 μοίρες, αρχικά. Στη συνέχεια, υποδεικνύει τα απαιτούμενα αντικείμενα για ένα αντικείμενο IRrecv, ένα σερβο αντικείμενο και το αντικείμενο LCD myDisplay (που έχει επίσης διαμορφωθεί στην ίδια γραμμή), ώστε αυτά τα αντικείμενα να μπορούν να χρησιμοποιηθούν αργότερα.

Στη συνέχεια, στη λειτουργία ρύθμισης, η σειριακή θύρα ξεκινά στα 9600 bits/sec, ώστε η σειριακή οθόνη να μπορεί να χρησιμοποιηθεί για να παρακολουθεί τη θέση του σερβο, εάν το επιθυμείτε. Συνδέει επίσης το αντικείμενο myservo στον ακροδέκτη 9, ξεκινά τον δέκτη IR και αρχικοποιεί την οθόνη LCD.

Στη λειτουργία κύριου βρόχου, το σώμα της οποίας εκτελείται μόνο εάν λαμβάνεται μια μετάδοση IR από τον δέκτη IR, ο δέκτης IR αποκωδικοποιεί το σήμα που του αποστέλλεται από το τηλεχειριστήριο IR χρησιμοποιώντας τη συνάρτηση αποκωδικοποίησης (& αποτελεσμάτων) και στη συνέχεια εάν οι προτάσεις καθορίζουν τι για να ρυθμίσετε το σερβο ανάλογα με την τιμή IR που λαμβάνετε. Η συνάρτηση εγγραφής χρησιμοποιείται για να ρυθμίσει το σερβο στους κατάλληλους βαθμούς και η λειτουργία ανάγνωσης χρησιμοποιείται για να βρει την τρέχουσα γωνία του σερβο και να την αυξήσει ή να τη μειώσει, όπως απαιτείται.

Τέλος, η τρέχουσα γωνία του σερβο αποστέλλεται τόσο στη σειριακή οθόνη όσο και στην οθόνη LCD χρησιμοποιώντας τη λειτουργία myservo.read () και οι κύριοι βρόχοι επαναλαμβάνονται επ 'αόριστον.

Κωδικός πηγής:

#include // τυπική βιβλιοθήκη Arduino #περιλαμβάνει // βιβλιοθήκη IR #συμπεριλάβετε "Wire.h" //Wire.h για LCD (μερικές φορές απαιτείται) #include "LiquidCrystal_I2C.h" // βιβλιοθήκη LCD

#define servopin 9 // αυτό ορίζει τον πείρο 9 ως τον πείρο που χρησιμοποιείται για το καλώδιο ελέγχου σερβο (πορτοκαλί)

int RECV_PIN = 11; // Η φωτογραφία-τρανζίστορ IR στέλνει έξοδο στο pin 11

int currentAngle = 0; // δηλώστε μεταβλητή ακέραιου currentAngle και ορίστε στο 0

IRrecv irrecv (RECV_PIN); // Πραγματοποιήστε ένα αντικείμενο δέκτη IR αποκωδικοποιήστε τα αποτελέσματα. // Παρουσιάστε ένα αντικείμενο decode_results. Αυτό το αντικείμενο είναι ξεχωριστό από τον δέκτη IR.

Servo myservo; // Παρουσιάστε ένα σερβο αντικείμενο με το όνομα "myservo" // μπορούν να δημιουργηθούν έως και οκτώ σερβο αντικείμενα

LiquidCrystal_I2C myDisplay (0x27, 16, 2); // instantiate LCD object and set up config

void setup () {

Serial.begin (9600); // έναρξη σειριακής θύρας

myservo.attach (servopin); // συνδέει το σερβο στο pin 9 στο σερβο αντικείμενο

irrecv.enableIRIn (); // εκκινήστε τον δέκτη

myDisplay.init (); // προετοιμασία LCD

myDisplay.backlight (); // ενεργοποιήστε τον οπίσθιο φωτισμό LCD

}

void loop () {

εάν (irrecv.decode (& results)) // εάν η μετάδοση ελήφθη…

{Serial.print ("Λήφθηκε η τιμή IR:");

Serial.println (results.value); // εμφάνιση της τιμής που ελήφθη

// ερμηνεύστε τις ληφθείσες εντολές… if (results.value == 16724175) // 1 {// left myservo.write (0); }

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

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

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

irrecv.resume (); // Λάβετε την επόμενη τιμή

// Serial monitor print Serial.print ("Τρέχουσα θέση σερβο:");

Serial.println (myservo.read ()); // αυτό ανακτά τη θέση σερβο και την στέλνει στη σειριακή οθόνη

// Εκτύπωση LCD myDisplay.clear ();

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

myDisplay.print (myservo.read ());

καθυστέρηση (200)? // καθυστέρηση για να γίνει σταθερή η λειτουργία σερβομηχανισμού

}

Βήμα 7: Παρακολουθήστε το Βίντεο μου στο YouTube για βοήθεια

Προβολή του μη καταχωρισμένου βίντεο μου στο YouTube, το οποίο συζητά και παρουσιάζει πλήρως το έργο, εάν έχετε απορίες!

Συνιστάται: