Ημέρα 6 - Ενότητα 4 - Φτιάχνοντας μία παγίδα με λέιζερ
Ημέρα 6 - Ενότητα 4 - Φτιάχνοντας μία παγίδα με λέιζερ
- δημιουργήσετε ένα κύκλωμα βασισμένο σε δέσμη λέιζερ, φωτοαντίσταση, βομβητή και πλακέτα NodeMCU
- δημιουργήσετε ένα πρόγραμμα για να κάνετε το παραπάνω κύκλωμα να λειτουργεί ως παγίδα λέιζερ
- περιγράψετε την έννοια της μεταβλητής
- χρησιμοποιείτε διαφορετικούς τύπους μεταβλητών λογικές ή ακέραιες
- επαναφέρετε το κύκλωμα μετά την ενεργοποίησή του για να σταματήσετε το ηχητικό σήμα του βομβητή
Απόφυγε την ακτίνα λέιζερ.....
Έχετε παρακολουθήσει ποτέ μια ταινία δράσης στην οποία ο πρωταγωνιστής προσπαθεί να αποφύγει τις δέσμες λέιζερ σε ένα δωμάτιο, για να μην ενεργοποιήσει τον συναγερμό και πιαστεί;
Αυτό θα προσπαθήσουμε να φτιάξουμε σε αυτό το μάθημα. Σύστημα συναγερμού αποτελούμενο από δέσμη λέιζερ, φωτοαντίσταση και βομβητή που θα ενεργοποιείται υπό ορισμένες συνθήκες.
Με λίγα λόγια, η ακτίνα λέιζερ θα είναι ενεργή όλη την ώρα και θα κατευθύνεται προς το φωτοαντιστάτη από ένα μακρινό σημείο. Εφόσον τίποτα δεν διακόπτει την αόρατη ακτίνα, το φως που διέρχεται από το φωτοαντιστάτη δίνει υψηλές τιμές που μετρώνται στο IDE του Arduino όπως συζητήθηκε προηγουμένως.
Αλλά όταν κάτι μπλοκάρει τη δέσμη (για παράδειγμα, κάποιος που στέκεται στη μέση), τότε το φως που περνά μέσα από τον φωτοαντιστάτη μεταβαίνει από υψηλές τιμές σε χαμηλές τιμές και ενεργοποιεί το βομβητή ο οποίος κάνει έναν ενοχλητικό ήχο όπως μια σειρήνα.
Ο κώδικας για να κάνετε το παραπάνω κύκλωμα να λειτουργήσει είναι ο ακόλουθος.
int rcvpin=A0;int buzzpin=14;
int limitval=300;
boolean alarmon=false;
void setup()
{
pinMode(rcvpin,INPUT);
pinMode(buzzpin,OUTPUT);
delay(2000);
Serial.begin(9600);
}
void loop()
{
int ldrval=analogRead(rcvpin);
Serial.println(ldrval);
if (ldrval<=limitval)
{
alarmon=true;
}
if (alarmon==true)
{
analogWrite(buzzpin,170);
delay(50);
analogWrite(buzzpin,0);
delay(50);
}
}
Έτσι, αντιγράψτε τον παραπάνω κώδικα, επικολλήστε το σε Arduino IDE και φορτώστε το στο NodeMCU.
Επίσης, ας προσπαθήσουμε να εξηγήσουμε κάποιες λεπτομέρειες σχετικά με τον κώδικα:
Πρώτον, δηλώνουμε μερικές μεταβλητές για χρήση. rcvpin είναι η μεταβλητή για τον ακροδέκτη της φωτοαντίστασης. buzzpin είναι η μεταβλητή για τον ακροδέκτη του βομβητή. limitval είναι η μεταβλητή για την ποσότητα φωτός περιβάλλοντος του χώρου που έχει τοποθετηθεί η φωτοαντίσταση. Μπορεί να χρειαστεί προσαρμογή, (η σειριακή οθόνη θα βοηθήσει σε αυτό), καθώς το φως περιβάλλοντος αλλάζει, ανάλογα με το περιβάλλον ανά πάσα στιγμή. Πρέπει να έχουμε κατά νου ότι ο συναγερμός θα ενεργοποιηθεί εάν ο φωτοαντιστάτης LDR αισθανθεί λιγότερο φωτισμό από το όριο. alarmon είναι μια μεταβλητή boolean που σημαίνει ότι μπορεί να έχει μία από τις δύο τιμές ανά πάσα στιγμή: true ή false. Η αρχική τιμή είναι false επειδή ο συναγερμός είναι απενεργοποιημένος όταν ενεργοποιείται το κύκλωμα.
Μετά την ενότητα setup() για τις ρυθμίσεις εισόδων-εξόδων, υπάρχει μία ενότητα επανάληψης loop() section. Εκεί, ελέγχουμε αν το φως στον LDR είναι μικρότερο ή ίσο με το όριο που σημαίνει ότι κάτι μπλοκάρει το φως από το δείκτη λέιζερ προς τον LDR, έτσι η μεταβλητή alarmon παίρνει την τιμή true. Στη συνέχεια ενεργοποιείται ο βομβητής και ο μόνος τρόπος για να τον σταματήσετε είναι να επαναφέρετε το NodeMCU, πατώντας το κουμπί RESET στη γωνία.
ΔΙΑΣΚΕΔΑΣΤΕ !