» Ηλεκτρονικά » Arduino »Εύρος εύρεσης στην πλατφόρμα Arduino!

Ο ανιχνευτής εμβέλειας στην πλατφόρμα Arduino!


Καλή μέρα σε όλους! Σε αυτό το άρθρο θα ήθελα να πω πώς χρησιμοποιούν 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.

Αυτό είναι όλα! Σας ευχαριστώ που διαβάσατε αυτό το άρθρο μέχρι το τέλος. Ελπίζω όχι μόνο να την άρεσε, αλλά και να εμπνεύσει μια νέα θάλασσα χειροτεχνίες και εφευρέσεις!
6
5
5

Προσθέστε ένα σχόλιο

    • χαμόγελοχαμογελάειxaxaΕντάξειdontknowyahoonea
      αφεντικόξυστάανόητοςναιναι-ναιεπιθετικήμυστικό
      Συγγνώμηχορόςdance2dance3συγχώρησηβοήθειαποτά
      σταματήστεφίλουςκαλόgoodgoodσφυρίχτρασυρρέουνγλώσσα
      καπνόςπαλαμάκιαcrayδηλώστεαπογοητευτικήdon-t_mentionκατεβάστε
      θερμότηταςirefulγέλιο1mdaσυνάντησηmoskingαρνητική
      not_iποπ κορντιμωρίαδιαβάστετρομάξτεφοβίζειαναζήτηση
      χλευάζωthank_youαυτόto_clueumnikοξείασυμφωνώ
      κακόbeeeblack_eyeblum3ρουζκαυχηθείτεπλήξη
      λογοκρισίαευχαρίστησηsecret2απειλήσουννίκηyusun_bespectacled
      shokrespektlolπροβλέπουνκαλωσορίστεkrutoyya_za
      ya_dobryiβοηθόςne_huliganne_othodifludαπαγόρευσηκοντά
7 σχόλια
Ο συγγραφέας
Hi)
Ίσως να έχετε ακόμα ένα σκίτσο που λειτουργεί; Σε αυτό, αποδεικνύεται ότι ακόμη και το σύμβολο "<" αντικαταστάθηκε από το "& lt;")
Γεια σας Όταν φορτώνω το σκίτσο σου, παράγει μια δέσμη συντακτικών σφαλμάτων για κάποιο λόγο. Φυσικά, δεν είμαι πραγματικά ντροπαλός στη σύνταξη, αλλά σε ορισμένα μέρη δεν μπορώ να καταλάβω τι πρέπει να διορθωθεί. Για παράδειγμα, σε ένα κομμάτι:
για τον τόνο (int i = 0; i100) (2,70).
ψηφιακήWrite (j, masiv [i]);
, τι σημαίνει η συγχώνευση i100; γιατί όχι αύξηση; Χρειάζεστε σγουρές αγκύλες έτσι ώστε οι επόμενες δύο λειτουργίες μετά να ανήκουν στον ίδιο βρόχο, ή κάνω λάθος; Και έτσι ο μεταγλωττιστής ορκίζεται σε όλο τον κώδικα. Μπορώ με κάποιο τρόπο να επικοινωνήσω μαζί σας, να διευκρινίσω τον κώδικα; Προσπαθώ να κάνω ένα πρόγραμμα μαθημάτων με βάση το άρθρο σας.

Επίσης, στον κώδικα στον τόπο όπου είναι συνδεδεμένες οι βιβλιοθήκες, δεν αναφέρονται τα ονόματά τους. Φυσικά, μπορείτε να μαντέψετε, αλλά ακόμα αυτό το σκίτσο δεν είναι αρκετά κατάλληλο για έναν άμεσο έλεγχο της λειτουργικότητας, πρέπει να το σκεφτείτε)
Ο συγγραφέας
Ναι, είναι δυνατόν)
Δηλαδή, η προτελευταία φωτογραφία (στην οποία το 77) είναι απλώς ανεπιτυχής λόγω κάποιου παρασιτικού φωτισμού των ανώτερων τμημάτων ως αποτέλεσμα λανθασμένης λειτουργίας της δυναμικής απεικόνισης; Και στους έξι, παρασιτικούς οπίσθιους φωτισμούς, αν και όχι τόσο προφανείς.
Ο συγγραφέας
Ivan, αναγνώσεις 6cm και 11cm είναι η απόσταση από τον αισθητήρα στην παλάμη)
Παρακαλώ εξηγήστε γιατί μια τέτοια περίεργη μαρτυρία στις δύο τελευταίες φωτογραφίες.

Σας συμβουλεύουμε να διαβάσετε:

Κάντε το για το smartphone ...