Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Σε αυτό το μάθημα, θα χρησιμοποιήσουμε έναν σερβοκινητήρα, μια φωτοαντίσταση και μια αντίσταση πτώσης για να συναρμολογήσουμε ένα σύστημα αυτόματης παρακολούθησης πηγής φωτός.
Βήμα 1: Συστατικά:
- Πίνακας Arduino Uno * 1
- Καλώδιο USB * 1
Σερβοκινητήρας * 1
- φωτοαντίσταση * 1
- Αντίσταση (10k) * 1
- Breadboard * 1
- Καλώδια βραχυκυκλωτήρων
Βήμα 2: Αρχή
Ο σερβοκινητήρας και η φωτοαντίσταση σαρώνουν και αναζητούν πηγή φωτός σε 180 μοίρες και καταγράφουν τη θέση της πηγής φωτός. Μετά την ολοκλήρωση της σάρωσης, ο σερβοκινητήρας και ο φωτοαντιστάτης σταματούν προς την κατεύθυνση της πηγής φωτός.
Βήμα 3: Διαδικασίες:
Βήμα 1:
Δημιουργήστε το κύκλωμα.
Βήμα 2:
Κατεβάστε τον κώδικα από τη διεύθυνση
Βήμα 3:
Ανεβάστε το σκίτσο στον πίνακα Arduino Uno
Κάντε κλικ στο εικονίδιο Μεταφόρτωση για να ανεβάσετε τον κωδικό στον πίνακα ελέγχου.
Εάν η ένδειξη "Done uploading" εμφανίζεται στο κάτω μέρος του παραθύρου, σημαίνει ότι το σκίτσο έχει μεταφορτωθεί επιτυχώς.
Τώρα, αν χρησιμοποιήσετε φακό για να λάμψετε τη φωτοαντίσταση, θα δείτε τον σερβοκινητήρα και τη φωτοαντίσταση να περιστρέφονται και τελικά να σταματούν προς την κατεύθυνση της πηγής φωτός.
Βήμα 4: Σχηματικό διάγραμμα
Βήμα 5: Κωδικός
/********************************************************************
* όνομα:
Αυτόματη παρακολούθηση πηγής φωτός
* λειτουργία
: εάν χρησιμοποιείτε φακό για να λάμψετε τη φωτοαντίσταση, * θα δεις
ο σερβοκινητήρας και η φωτοαντίσταση περιστρέφονται, * και τελικά
σταματήσει προς την κατεύθυνση της πηγής φωτός.
***********************************************************************
/Email: [email protected]
// Ιστοσελίδα: www.primerobotics.in
#περιλαμβάνω
const int photocellPin = A0;
/************************************************/
Servo myservo; // δημιουργία servo αντικειμένου για τον έλεγχο ενός servo
int outputValue = 0;
int γωνία = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180};
int maxVal = 0;
int maxPos = 0;
/*************************************************/
void setup ()
{
Serial.begin (9600);
myservo.attach (9); // επισυνάπτει το σερβο στο pin 9 στο σερβο αντικείμενο
}
/*************************************************/
κενός βρόχος ()
{
για (int i = 0;
i <19; i ++)
{
myservo.write (γωνία ); // γράψτε τη γωνία σε σερβο
outputValue
= analogRead (photocellPin); // διαβάστε την τιμή του A0
Serial.println (outputValue); // εκτυπώστε το
if (outputValue> maxVal) // αν η τρέχουσα τιμή του A0 είναι μεγαλύτερη από την προηγούμενη
{
maxVal = outputValue; // γράψτε την τιμή
maxPos
= i; //
}
καθυστέρηση (200)?
}
myservo.write (γωνία [maxPos]); // γράψτε τη γωνία σερβο που η A0 έχει τη μεγαλύτερη τιμή
ενώ (1)?
}