Καλή μέρα σε όλους! Σε αυτό το άρθρο θα ήθελα να πω πώς χρησιμοποιούν Arduino, ένα σύνολο LED και αισθητήρα υπερήχων, μπορείτε να συναρμολογήσετε μια συσκευή που καθορίζει την απόσταση από τον παρατηρητή στο αντικείμενο, με άλλα λόγια, εύρος ζώνης. Και λοιπόν ας πάμε!
Τι χρειαζόμαστε:
Απλό κουτί. Είναι επιθυμητό να είναι μικρό σε μέγεθος, αφού θα περιέχει μόνο ένα μικροελεγκτή.
Χρησιμοποιώντας υπερηχητικός μορφοτροπέας HC-SR04 μπορούμε να καθορίσουμε την απόσταση.
Ένδειξη τεσσάρων ψηφίων πρέπει να αποδώσουμε τις ληφθείσες τιμές.
Ρύθμιση LEDs όλα τα χρώματα (χρησιμοποίησα πράσινο, καθώς είναι πιο φωτεινά), αντιστάσεις στα 220 ohms καλώδια ή jumpers επίσης breadboard.
Για να στερεωθούν με ασφάλεια τα εξαρτήματα της συσκευής μας, θα τα κολλήσω.
Για αυτό χρειαζόμαστε συγκόλληση σιδήρου, ροή, συγκόλλησηεπίσης αλουμινίου για συγκόλληση.
Και φυσικά, χωρίς Arduino δεν μπορούμε να κάνουμε! (Μπορείτε να επιλέξετε οποιοδήποτε μικροελεγκτή, προτιμώ Arduino Leonardo ή ισοδύναμο Iskra Neo)
Από τα εργαλεία χρειαζόμαστε ένα συγκολλητικό σίδερο, όπως είπα παραπάνω, μαχαίρι και λαβίδες.
Τώρα ας αρχίσουμε τη συναρμολόγηση της συσκευής.
Βήμα # 1
Για να ξεκινήσετε, χρησιμοποιώντας ένα breadboard, θα συναρμολογήσουμε ένα πρωτότυπο της μελλοντικής συσκευής μας. Θα φανεί κάτι τέτοιο ..
Μην ανησυχείτε! Δεν υπάρχει τίποτα τρομερό σε αυτό το χάος καλωδίων!
Ο αισθητήρας HC-SR04 έχει τέσσερις ακίδες: συν, μείον (που κολλάμε στο 5V και GND του ελεγκτή), Trig και Echo (εισάγουμε τους αρδικούς ακροδέκτες σε 12 και 11 αντίστοιχα)
Ο τετραψήφιος δείκτης έχει 3 καλώδια: ισχύ, έδαφος και σήμα. Ο τελευταίος συνδέεται με τον 9 ακίδων Arduino.
Συνδέουμε τρία LED σε 6, 5 και 4 επαφές του ελεγκτή σε σειρά με αντιστάσεις. Μην ξεχνάτε την πολικότητα. Το ρεύμα ρέει από ένα μακρύτερο πόδι σε ένα μικρότερο.
Αυτό είναι όλο, όταν συναρμολογήσαμε τη συσκευή μας σε ένα breadboard, ανεβάσαμε το σκίτσο (θα είναι στο τέλος του άρθρου) και σιγουρευόμαστε ότι όλα λειτουργούν, μη διστάσετε να αρχίσετε να κολλήσετε.
Αριθμός βήματος 2
Κατ 'αρχάς, κολλήστε τον υπερηχητικό αισθητήρα στο πιρούνι. Χρησιμοποίησα ένα μικρό breadboard σε μέγεθος, καθώς ο αριθμός των στοιχείων δεν υπερβαίνει το 7.
Μετά από αυτό, με τη βοήθεια των θηλών, δαγκώνουν τα πόδια (ζητώ συγνώμη για την ταυτολογία), καθιστώντας τα συντομότερα, έτσι ώστε να μην παρεμβαίνουν και να φαίνονται πιο όμορφα!
Στη συνέχεια, συνδέστε τα τέσσερα καλώδια στις επαφές του αισθητήρα.
Επίσης, μην ξεχνάτε τα γάντια!
Βήμα # 3
Ο αισθητήρας είναι στη θέση του, παραμένει η συγκόλληση των τριών LED μαζί με τις αντιστάσεις.
Από την πίσω πλευρά, μοιάζει με αυτό:
Βήμα # 4
Στην πλευρά του κιβωτίου, κόψτε μια στρογγυλή τρύπα για φαγητό.
Στο καπάκι, πρέπει να κόψετε μια κοιλότητα στο μέγεθος (ελαφρώς μικρότερο σε μήκος) του breadboard σας, και επίσης να τρυπήσετε οπές για βίδες.
Τώρα, εάν βιδώσουμε ένα άδειο breadboard χωρίς στοιχεία πάνω σε αυτό (το έκανα μόνο για επίδειξη ..), παίρνουμε κάτι σαν το εξής:
Βήμα # 5
Έτσι, για να γίνει πιο βολικό, προτείνω πρώτα να συνδέσετε τα καλώδια με το arduino, και μόνο μετά βιδώστε το breadboard στο καπάκι του κουτιού. Επίσης, μην ξεχνάτε τον δείκτη μας, τον οποίο έβαλα πάνω από τη διάταξη.
Τα πάντα σε αυτό το συγκρότημα συσκευών έχουν τελειώσει!
Παραμένει μόνο για να κατεβάσετε το επόμενο σκίτσο και να απολαύσετε το παιχνίδι!
#include
#include
Sonar NewPing (12.11, 400);
int a, j, b;
μη υπογεγραμμένο μήκος t = 0;
int masiv [] = {1,0,0,0,1,0,0,0,1}.
void setup ()
{
για το (int i = 4; i <7; i ++)
{
pinMode (i, OUTPUT);
}}
displayClear (9);
για το (int i = 4; i <7; i ++)
{
ψηφιακή γραφή (i, 0);
}}
}}
κενός βρόχος ()
{
j = 7;
για τον τόνο (int i = 0; i100) (2,70).
ψηφιακήWrite (j, masiv [i]);
ενώ (milis () & lt; = t + b)
{
καθυστέρηση (50).
a = sonar.ping_cm ();
displayInt (9, α);
b = a;
}}
t = milis ();
εάν (j == 4) j = 7;
εάν (i == 8)
{
ψηφιακή καταγραφή (4.1);
ενώ (milis () <= (t + b) + (b * 2))
{
καθυστέρηση (50).
a = sonar.ping_cm ();
displayInt (9, α);
b = a;
}}
digitalWrite (4.0);
t = milis ();
}}
}}
Λίγα λόγια κώδικα προγράμματος. Χάρη σε αυτόν, τα τρία μας LED θα αναβοσβήσουν εναλλάξ ένα μετά το άλλο και η ταχύτητα της αναλαμπής τους θα εξαρτηθεί από την απόσταση από το αντικείμενο, η οποία υπολογίζεται από τον υπερηχητικό αισθητήρα. Αλλά για να αναβοσβήσουν τα LED, δεν είναι εξ ολοκλήρου λογικό να χρησιμοποιήσετε τη λειτουργία καθυστέρησης (), καθώς όταν χρησιμοποιείται, ο ελεγκτής παγώνει και δεν πραγματοποιούνται υπολογισμοί. Υπάρχουν διάφοροι τρόποι επίλυσης αυτού του προβλήματος. Συγκεκριμένα, μία από αυτές είναι η χρήση της συνάρτησης millis (), η οποία επιστρέφει έναν αριθμό σε χιλιοστά του δευτερολέπτου από τη στιγμή που ο ελεγκτής λειτουργεί. Και πώς καθυστερούμε ένα υπό όρους 100 χιλιοστά του δευτερολέπτου; Για να γίνει αυτό, δημιούργησα έναν ουσιαστικά κενό κύκλο, η έξοδος του οποίου θα είναι μόνο μετά από αυτά τα 100 χιλιοστά του δευτερολέπτου, και στη συνέχεια το πρόγραμμα συνεχίζει να ενεργοποιεί / απενεργοποιεί τα LED.
Αυτό είναι όλα! Σας ευχαριστώ που διαβάσατε αυτό το άρθρο μέχρι το τέλος. Ελπίζω όχι μόνο να την άρεσε, αλλά και να εμπνεύσει μια νέα θάλασσα χειροτεχνίες και εφευρέσεις!