Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Για αυτό το έργο ήθελα κάτι που θα μου επέτρεπε να διδάξω περισσότερα για τα ηλεκτρονικά/λογισμικό, κάτι στο οποίο δεν έχω ασχοληθεί ακόμα.. Αποφάσισα ότι ένα φως θα ήταν μια καλή πλατφόρμα για αυτό.
Ο σχεδιασμός που βρήκα ήταν για έναν φωτιστικό που διαθέτει ρύθμιση χρώματος και φωτεινότητας. Στο προϊόν, η θερμοκρασία και η φωτεινότητα του ζεστού έως ψυχρού λευκού χρώματος ελέγχονται μέσω του "puck", η θέση και ο προσανατολισμός του αλλάζουν ανεξάρτητα - μια μοναδική/διασκεδαστική αλληλεπίδραση.
Κατέληξα επίσης στη δημιουργία μιας εφαρμογής (θα μπορούσε επίσης να προκαλέσει τον εαυτό μου) για να τις προσαρμόσω, καθώς και να προσθέσω πρόσθετη λειτουργικότητα για τον έλεγχο ορισμένων LED RGB και να θέσω ένα ξυπνητήρι ανατολής. Ο συναγερμός ανατολής αυξάνει σταδιακά τη φωτεινότητα κατά 30 λεπτά για να σας βοηθήσει να ξυπνήσετε.
Δεδομένου ότι αυτό είναι το πρώτο μου έργο Arduino/App, υποθέτω ότι σίγουρα θα υπάρχουν καλύτεροι τρόποι για να κάνω τον κώδικα, οπότε ελάτε σε μένα! Σβήνει, οπότε είμαι χαρούμενος. Αν έχετε προτάσεις για βελτιώσεις κλπ καλό θα ήταν να ακούσετε..
Όλα τα αρχεία για αυτό το έργο (κώδικας arduino/εφευρέτης εφαρμογής, γραφικά εφαρμογών κ.λπ.) και η εφαρμογή apk. μπορείτε να το βρείτε σε αυτόν τον σύνδεσμο.
Το έχω συμμετάσχει στους διαγωνισμούς Raspberry Pi και FULL SPECTRUM LASER, οπότε αν νομίζετε ότι αξίζει μια ψήφος θα εκτιμηθεί μαζικά !!
Ο, τι χρειάζεσαι….
Ηλεκτρολόγος Συστατικά:
- Arduino Micro
- 12 γραμμικοί ραδιομετρικοί αισθητήρες εφέ αίθουσας
- DC Jack
- Τροφοδοτικό 12V
- 2x 1W Cool White LED (6000K)
- 2x 1W ζεστά λευκά LED (2800K)
- 4x Adopruit RGB Neopixels
- Πρόγραμμα οδήγησης σταθερού ρεύματος Sparkfun Picobuck 350mA
- HC06 μονάδα Bluetooth
- Πρωτότυπος πίνακας
- Τερματικά μπλοκ
- Καλώδια
Υλικά:
- Υλικά κατασκευής μούχλας (χαρτόνι ή σιλικόνη κλπ)
- Ρητίνη χύτευσης από πολυουρεθάνη
- Κόντρα πλακέ
Αναλώσιμα:
- Κόλλα μετάλλων
- Σπρέι μπογιά
- Γυαλόχαρτο
- Κύπελλα ανάδευσης/αναδευτήρες
Εργαλεία:
- Συγκολλητικό σίδερο
- Όπλο κόλλας
- Πένσες/κατσαβίδια/μαχαίρια κλπ.
- Κόφτης λέιζερ
Λογισμικό:
- Arduino
- MIT App Inventor (δωρεάν διαδικτυακή βάση)
- Photoshop ή κάτι για να δημιουργήσετε γραφικά εφαρμογών
Βήμα 1: Αισθητήρες εφέ Hall
Για τον έλεγχο/την αλληλεπίδραση του προϊόντος, έψαχνα να βρω κάτι λίγο διαφορετικό, όχι απλά ένα καντράν ή κάτι.
Μετά από μια μικρή έρευνα σε διαφορετικούς τύπους ηλεκτρονικών εξαρτημάτων, βρήκα γραμμικούς αισθητήρες ραδιομετρικού εφέ αίθουσας. Αυτοί είναι βασικά ένας αισθητήρας που η έξοδος επηρεάζεται από μαγνητικά πεδία. Συνήθως η έξοδος των αισθητήρων είναι η μισή τάση εισόδου. Ωστόσο, όταν ένας μαγνήτης έρθει κοντά του, η έξοδος είτε θα ανέβει στην τάση εισόδου είτε θα μειωθεί στα 0V (όρια κορεσμού) ανάλογα με το αν είναι ο βόρειος ή ο νότιος πόλος του μαγνήτη.
Συνειδητοποίησα ότι θα μπορούσα να το χρησιμοποιήσω για να μου επιτρέψει να ελέγξω δύο διαφορετικές ρυθμίσεις σε έναν μόνο αισθητήρα αίθουσας - γεννήθηκε η ιδέα του «puck». Ένας μαγνήτης είναι κρυμμένος στο τσοκ με λέιζερ και ελέγχει είτε τη φωτεινότητα είτε τη θερμοκρασία χρώματος, ανάλογα με το άκρο που βλέπει προς τους αισθητήρες. Μπαίνω αργότερα στον κώδικα Arduino, αλλά ουσιαστικά διαβάζω αυτούς τους αισθητήρες και ψάχνω αν η έξοδος έχει ανέβει πάνω από μια "υψηλή σκανδάλη" ή έχει πέσει κάτω από την "χαμηλή σκανδάλη". Χρησιμοποιώ πολλαπλούς αισθητήρες εφέ αίθουσας για να μπορέσω να χαρτογραφήσω μια συγκεκριμένη θερμοκρασία χρώματος και τιμή φωτεινότητας σε κάθε ένα, τα οποία ενεργοποιούνται καθώς σύρετε το τσόμπα γύρω από το τόξο.
Βήμα 2: Ηλεκτρονικό υλικό
Το πρώτο βήμα αυτού του έργου ήταν η σύνδεση του ηλεκτρονικού υλικού. Επέλεξα να χρησιμοποιήσω ένα Arduino Micro καθώς έχει έναν καλό αριθμό αναλογικών ακίδων ανάγνωσης - επιτρέποντάς μου να χρησιμοποιήσω πολλαπλούς αισθητήρες εφέ αίθουσας για να δώσω αρκετή ανάλυση για την προσαρμογή της ρύθμισης. Ένα τροφοδοτικό 12V DC χωρίζεται μεταξύ τροφοδοσίας του προγράμματος οδήγησης Arduino και LED.
Το τόξο ελέγχου χρησιμοποιεί 11 αισθητήρες αίθουσας, ενώ ένας άλλος χρησιμοποιείται για να σβήσει το φως. Αυτά συνδέθηκαν σε ακίδες A0-> A5 και 4, 6, 8, 9, 10, 12. Μοιράζονται μια κοινή ράγα/πείρο 5v και εδάφους.
Τα LED που χρησιμοποίησα είναι 1W και απαιτούν σταθερό ρεύμα προγράμματος οδήγησης. Το Sparkfun PicoBuck χρησιμοποιήθηκε καθώς αποδίδει σταθερά 350mA έως και 3 κανάλια εξόδου. Η τροφοδοσία 12V συνδέεται στις ακίδες του οδηγού Vin. Το πρόγραμμα οδήγησης έχει ακίδες εισόδου για τον έλεγχο του PWM των εξόδων, αυτές συνδέθηκαν με τις ακίδες 3 και 5 του Arduino.
Η μονάδα bluetooth συνδέθηκε τότε. Bluetooth Rx-> Arduino Tx, Tx-> Rx και 5v.ground.
Τα LED ήταν τοποθετημένα σε ξεχωριστή πλακέτα. Δύο ψυχρά λευκά LED συνδέονται σε σειρά, όπως και τα ζεστά. Αυτά συνδέονται στην έξοδο 1 και 2 του προγράμματος οδήγησης. Τα LED RGB είναι Adopruit Neopixels. Πρόκειται για αλυσίδες που μπορούν να ελέγξουν το χρώμα και τη φωτεινότητα μεμονωμένα από έναν πείρο Arduino. Αυτά συνδέονται με τον πείρο 11 και τους πείρους 5V/γείωσης.
Βήμα 3: Εφευρέτης εφαρμογής
Για να δημιουργήσω την εφαρμογή χρησιμοποίησα το MIT App Inventor, το δωρεάν και αρκετά εύκολο στην εκμάθηση/χρήση. Έπρεπε πρώτα να δημιουργήσω τις οθόνες/γραφικά της εφαρμογής - αυτό μπορεί να γίνει στο photoshop κλπ. Το διευκολύνει στο App Inventor εάν έχετε όλα τα στοιχεία που αποτελούν τις οθόνες ως ξεχωριστές εικόνες/αρχεία.
Το App Inventor έχει δύο προβολές, υπάρχει η καρτέλα "Σχεδιαστής" για τα οπτικά στοιχεία του εξωτερικού και η καρτέλα "Αποκλεισμοί" για τον κώδικα.
Χρησιμοποιώντας την καρτέλα "Σχεδιαστής" δημιούργησα τις οθόνες εφαρμογών. Ένα ζήτημα που βρήκα είναι ότι το στοιχείο bluetooth δεν λειτουργεί σε πολλές οθόνες, οπότε μετά την οθόνη «καλωσορίσματος» όλα τα άλλα (σύνδεση, RGB, θερμοκρασία χρώματος, συναγερμός) δημιουργούνται όλα στην ίδια οθόνη - αποτελεσματικά επίπεδα που ενεργοποιώ /μακριά από.
Τα κύρια εργαλεία που χρησιμοποίησα είναι για «διάταξη/ευθυγράμμιση» και «καμβά». Ένας καμβάς είναι μια περιοχή ευαίσθητη στην αφή που μπορείτε να εμφανίσετε ως εικόνα.
Μόλις ρυθμιστούν τα γραφικά, ήρθε η ώρα να μεταβείτε στην καρτέλα "Αποκλεισμοί" και να γράψετε τον κώδικα. Θα το περιγράψω εν συντομία, αλλά είναι πιθανότατα ευκολότερο αν εισαγάγετε το αρχείο μου στο App Inventor και παίξετε γύρω σας…
Αυτά τα πρώτα μπλοκ είναι για τις οθόνες σύνδεσης. Για να επιτρέψω στην εφαρμογή να προσπαθήσει να συνδεθεί αυτόματα με τη μονάδα bluetooth Arduinos, δημιουργώ και ορίζω μια μεταβλητή στη διεύθυνση του HC06. Χρησιμοποιώ ένα χρονόμετρο για να αλλάξω την εικόνα φόντου ενώ συνδέεται. Εάν η σύνδεση είναι επιτυχής, φορτώνει την έγχρωμη οθόνη θερμοκρασίας. Εάν το bluetooth δεν καταφέρει να συνδεθεί αυτόματα, πρέπει να πατήσετε το κουμπί "σύνδεση στη συσκευή". Αυτό θα εμφανίσει μια λίστα με όλες τις συσκευές bluetooth που μπορεί να δει το τηλέφωνό σας. Η εντολή "bluetoothclient1.connect" χρησιμοποιεί τη διεύθυνση της συσκευής που επιλέξατε από αυτήν τη λίστα για να συνδεθείτε.
Αυτά τα μπλοκ ελέγχουν τι συμβαίνει όταν αγγίζετε κάθε ένα από τα κουμπιά του μενού - αλλαγή μεταξύ RGB, θερμοκρασίας χρώματος και ξυπνητηριού. Όταν αγγίζονται, τα εφαρμοζόμενα οπτικά επίπεδα ενεργοποιούνται και απενεργοποιούνται. Δηλαδή, όταν πατάτε το κουμπί μενού RGB, αλλάζει την εικόνα φόντου του καμβά κουμπιών στο σκοτεινό εικονίδιο, ενεργοποιεί την οθόνη RGB και το άλλο απενεργοποιείται.
Ο έλεγχος ισχύος και φωτεινότητας μοιράζεται μεταξύ των οθονών RGB και έγχρωμης θερμοκρασίας. Για να μάθει το Arduino ποια LED πρέπει να ελέγξει, πρέπει να του πω ποια οθόνη είναι φορτωμένη. Μια συμβολοσειρά κειμένου σε μορφή (οθόνη); αποστέλλεται από τα τηλέφωνά σας bluetooth χρησιμοποιώντας την εντολή BluetoothClient1. SendText.
Αυτό το μπλοκ στέλνει τη συμβολοσειρά (Power); κάθε φορά που πατάτε το κουμπί λειτουργίας.
Αυτά τα μπλοκ ελέγχουν τη ρύθμιση της θερμοκρασίας χρώματος. Όταν αγγίζετε τον καμβά, η συντεταγμένη Y του σημείου αφής σας χρησιμοποιείται για να ορίσετε τη μεταβλητή "cool". Η τιμή Y καθορίζεται από το μέγεθος εικονοστοιχείου του καμβά, οπότε στην περίπτωσή μου μια τιμή μεταξύ 0 και 450. Χρησιμοποιώ τον πολλαπλασιαστή για να τη μετατρέψω σε χρήσιμη τιμή PWM (0-255). Στη συνέχεια, στέλνω μια συμβολοσειρά με αυτήν την τιμή και ένα αναγνωριστικό στη φόρμα (Tempvalue);.
Παρόμοια μπλοκ όπως παραπάνω αλλά για τον έλεγχο φωτεινότητας. Χρησιμοποιώντας το συντεταγμένο Χ αυτή τη φορά και διαφορετικούς πολλαπλασιαστές για να ορίσετε τη μεταβλητή "Φωτεινό" σε μια τιμή μεταξύ 10 και 100.
Αυτά τα μπλοκ είναι για τον έλεγχο RGB. Υπάρχει μια εντολή που ονομάζεται "GetPixelColor" που μπορεί να χρησιμοποιηθεί για να λάβετε μια τιμή RGB pixel που αγγίζει το δάχτυλό σας. Εξάγει την τιμή με επιπλέον 255 στο τέλος για κάποιο λόγο, οπότε κάνω λίγη δουλειά για να μεταφέρω την τιμή στη μορφή (RGBredvalue.greenvalue.bluevalue.); Και πάλι αυτό αποστέλλεται στη συνέχεια στο Arduino, αλλά με RGB ως αναγνωριστικό στη συμβολοσειρά.
Το επόμενο τμήμα των μπλοκ αφορά τις ρυθμίσεις συναγερμού. Το πρώτο μπλοκ ελέγχει τι συμβαίνει όταν αγγίζετε/σύρετε τον ήλιο πάνω και κάτω. Και πάλι, οι εντολές "λάβετε τρέχοντα Χ και Υ" χρησιμοποιούνται για να λάβετε μια τιμή για το πού βρίσκεται το δάχτυλό σας και να αλλάξετε την εικόνα φόντου ανάλογα με το ύψος του ήλιου. Η θέση suns οδηγεί επίσης εάν ο συναγερμός είναι ενεργοποιημένος ή απενεργοποιημένος, αυτό αποστέλλεται μέσω bluetooth.
Όταν πατάτε ή ολοκληρώνετε τη μετακίνηση του ήλιου, εμφανίζεται ο επιλογέας ώρας για να μπορείτε να ορίσετε μια ώρα αφύπνισης. Το κύριο μέρος αυτού του επόμενου μπλοκ χρησιμοποιεί την τρέχουσα ώρα για να υπολογίσει πόσα χιλιοστά του δευτερολέπτου υπάρχουν μέχρι να ρυθμιστεί ο συναγερμός. Αυτή η τιμή αποστέλλεται στη συνέχεια στο Arduino
Στο επόμενο βήμα θα καλύψω τον τρόπο με τον οποίο το Arduino διαβάζει και χρησιμοποιεί τις χορδές…
Βήμα 4: Κωδικός Arduino
Όπως και με τον κωδικό εφαρμογής, θα το καλύψω εν συντομία….
Αρχικά εγκατέστησα όλες τις μεταβλητές μου, εκχωρώντας τους αισθητήρες και τις λυχνίες LED στις σωστές ακίδες. Η έξοδος από τους αισθητήρες εφέ αίθουσας θα διαβαστεί χρησιμοποιώντας τη λειτουργία analogRead, δίνοντας μια τιμή μεταξύ 0 και 1023. Όπως περιγράφηκε προηγουμένως, εξάγει το μισό όταν δεν υπάρχουν μαγνήτες, έτσι περίπου 500. Χρησιμοποιώ μεταβλητές χαμηλής και υψηλής ενεργοποίησης για να μου επιτρέψετε εύκολα ρυθμίστε όταν ξέρει ότι το τσεπάκι είναι πάνω από τον αισθητήρα.
Τα neopixels απαιτούν βιβλιοθήκη έτσι ώστε να ορίζεται εδώ..
Η ρύθμιση κενού ξεκινά τα σίριαλ, για τους ακροδέκτες Micro the Rx/Tx (bluetooth) χρησιμοποιήστε Serial1.. Στη συνέχεια, οι ακίδες ρυθμίζονται ως είσοδοι ή έξοδοι και οι λυχνίες LED απενεργοποιούνται.
Τώρα είναι ο κύριος βρόχος…
Αυτή η πρώτη ενότητα ελέγχει εάν λαμβάνονται δεδομένα από την εφαρμογή. Serial1.available () είναι η ανάγνωση της σειράς και η λήψη του αριθμού των byte στη συμβολοσειρά. Αν είναι> 0, γνωρίζω ότι εισέρχονται.
Αν θυμάστε, όλες οι συμβολοσειρές που στέλνω από την εφαρμογή τελειώνουν με ερωτηματικό…. δηλαδή (Bright100);
Χρησιμοποιώ τη συνάρτηση.readStringUntil για να διαβάσω τα σειριακά δεδομένα μέχρι το ερωτηματικό (Bright100) και να ορίσω τη μεταβλητή BTstring σε αυτό. Ελέγχω αν το BTstring τελειώνει με ένα ')' για να βεβαιωθώ ότι λαμβάνονται πλήρεις εντολές. Αν είναι, τότε καλείται ο βρόχος BluetoothProgram… αυτό περιγράφεται παρακάτω..
Αυτό το επόμενο κομμάτι ελέγχει τον συναγερμό ανατολής. Βασικά, εάν ο συναγερμός είναι ενεργοποιημένος και ο χρόνος είναι σωστός, τότε θα αρχίσει να ξεθωριάζει τα LED. Λόγω του ότι το ανθρώπινο μάτι αντιλαμβάνεται το φως λογαριθμικά, είναι καλύτερο να κάνει οποιοδήποτε είδος σβήνει το LED πάνω/κάτω με εκθετική καμπύλη και όχι γραμμική. Επομένως, μια εξίσωση οδηγεί τις τιμές PWM…
Για να αποφύγετε την παρεμβολή του puck με τον έλεγχο εφαρμογής, απενεργοποιείται όταν χρησιμοποιείτε την εφαρμογή. Για να ενεργοποιήσετε ξανά το puck πρέπει να το μετακινήσετε από το προϊόν για 5 δευτερόλεπτα. Αυτό το κομμάτι κώδικα ελέγχει πρώτα αν όλοι οι αισθητήρες παράγουν μια τιμή σταθερής κατάστασης (χωρίς μαγνήτη) και στη συνέχεια ξεκινά ένα χρονόμετρο. Όταν ολοκληρωθούν 5 δευτερόλεπτα, η μεταβλητή BTinControl τίθεται ξανά σε false.
Ο κωδικός για το puck τώρα.. Πρώτα πρέπει να διαβαστούν οι αισθητήρες.
Εάν η λυχνία είναι σβηστή αυτήν τη στιγμή, θα ελέγξει εάν κάποιος από τους αισθητήρες βρίσκεται πάνω ή κάτω από τα σημεία σκανδάλης, δηλαδή το κουκούτσι έχει τοποθετηθεί στο τόξο. Αν είναι τότε θα ξεθωριάσει τα λευκά LED στην τελευταία σας ρύθμιση, όπου και αν το τοποθετήσετε.
Για να διατηρήσετε τη ρύθμιση LED στην τελευταία σας ρύθμιση αντί να ενημερώσετε τις τιμές που σχετίζονται με τους αισθητήρες που προκαλεί, η μεταβλητή MovedSinceStandby έχει οριστεί ως ψευδής. Αυτό το επόμενο κομμάτι κώδικα ελέγχει βασικά αν έχετε μετακινήσει το τσουβάλι από την αρχική του θέση κατά ένα καθορισμένο ποσό….
Εάν μετακινείτε το πακέτο, το "MainProgram" καλείται να ενημερώσει τη θερμοκρασία φωτεινότητας/χρώματος. Αυτό περιγράφεται παρακάτω.
Το τελευταίο κομμάτι σε αυτόν τον κύριο βρόχο ελέγχει εάν το τρυπάνι έχει τοποθετηθεί ξανά στην βάση αναμονής - είναι ο αισθητήρας 12 που διαβάζει μια τιμή πάνω/κάτω από ένα σημείο ενεργοποίησης. Αν ναι, ξεθωριάζει το LED πίσω..
Ο βρόχος bluetooth:
Όπως περιγράφηκε παραπάνω όταν λαμβάνονται δεδομένα μέσω bluetooth, η συμβολοσειρά διαβάζεται. Τώρα πρέπει να ελέγξουμε τι λέει αυτή η συμβολοσειρά…
Όλες οι χορδές εκτός από τη φωτεινότητα, τη θερμοκρασία χρώματος και το RGB είναι αρκετά εύκολο να αντιμετωπιστούν. Ελέγχετε αν το BTstring είναι ίσο με το κείμενο που αποστέλλεται από την εφαρμογή.
Αν το θυμάστε, κάθε φορά που αλλάζετε οθόνες στην εφαρμογή θα στέλνει μια εντολή bluetooth. Εδώ ρωτάμε για αυτό και ορίζουμε ορισμένες μεταβλητές σε αληθινές ή ψευδείς, ώστε να γνωρίζουμε σε ποια οθόνη βρίσκεστε.
Σημειώστε ότι στο τέλος κάθε ενότητας ορίζω τη μεταβλητή BTinControl σε true και διαγράφω την τιμή BTstring.
Όταν πατήσετε το κουμπί τροφοδοσίας στην εφαρμογή, θα σβήσει τα LED πάνω ή κάτω. Οι μεταβλητές που ορίζονται παραπάνω για την οθόνη στην οποία βρίσκεστε χρησιμοποιούνται για να αποφασίσετε αν είναι ο έλεγχος των RGB ή των λευκών LED.
Για φωτεινότητα, θερμοκρασία χρώματος και RGB πρέπει να διαβάσω τις συμβολοσειρές με ελαφρώς διαφορετικό τρόπο. Επειδή το αριθμητικό τμήμα της συμβολοσειράς θα αλλάξει, ρωτώ αν η συμβολοσειρά ξεκινά με ένα από τα αναγνωριστικά και όχι με την πλήρη συμβολοσειρά, οπότε απλά (Φωτεινό εδώ..
Τώρα πρέπει να διαχωρίσω την πραγματική τιμή φωτεινότητας από τη συμβολοσειρά. Η μορφή της συμβολοσειράς που αποστέλλεται από την εφαρμογή είναι (Brightvalue), οπότε γνωρίζω ότι η τιμή φωτεινότητας θα είναι μεταξύ του "t" και του ")". Η θέση του 't' θα παραμείνει σταθερή, θα είναι πάντα ο 7ος χαρακτήρας στη συμβολοσειρά. Αλλά επειδή η τιμή φωτεινότητας μπορεί να είναι μεταξύ 10 και 100, η θέση του ')' θα αλλάξει. Χρησιμοποιώ την εντολή.indexOf για να καταλάβω πού είναι το ')', τι χαρακτήρας είναι και στη συνέχεια μπορώ να χρησιμοποιήσω την εντολή.substring για να διαβάσω τη συμβολοσειρά μεταξύ του 7ου χαρακτήρα και της θέσης χαρακτήρα ')'. Αυτό μου αφήνει μόνο την τιμή φωτεινότητας που μπορώ να χρησιμοποιήσω για να προσαρμόσω τα RGB ή τα λευκά LED ανάλογα με την οθόνη.
Η προσαρμογή της θερμοκρασίας χρώματος είναι παρόμοια διαδικασία με την παραπάνω, αλλά η τιμή θα είναι μεταξύ του 'p' και του ')' αυτή τη φορά…
Για την προσαρμογή RGB έχουμε τρεις τιμές για εξαγωγή από τη συμβολοσειρά, αλλά είναι παρόμοια διαδικασία ξανά. Από την εφαρμογή λαμβάνουμε συμβολοσειρές με τη μορφή (RGBvalue.value.value)
Γνωρίζω, λοιπόν, ότι η κόκκινη τιμή θα είναι μεταξύ του 'Β' και της πρώτης τελικής στάσης. Η πράσινη τιμή είναι μεταξύ της 1ης/2ης στάσης και της μπλε τιμής μεταξύ της 2ης τελικής στάσης και του ')'.
Μόλις έχουμε τις τιμές, τα νεοπρίσματα ορίζονται στο νέο χρώμα…
Εδώ ελέγχουμε αν ο συναγερμός είναι ενεργοποιημένος ή απενεργοποιημένος. Εάν αλλάξει ο χρόνος αφύπνισης, θα μας σταλεί μια συμβολοσειρά με τον αριθμό των χιλιοστών του δευτερολέπτου από τώρα μέχρι το ξυπνητήρι. Και πάλι αυτή η τιμή εξάγεται από τη συμβολοσειρά και για να μπορέσουμε να ελέγξουμε αν ήρθε η ώρα να αρχίσει η ανατολή πρέπει να ορίσουμε μια μεταβλητή στην τρέχουσα ώρα (millis).
Χειριστήρια Puck:
Όπως περιγράφηκε προηγουμένως, εάν ο κόλπος (μαγνήτης) είναι μονόδρομος προς τα πάνω, θα οδηγήσει την έξοδο του αισθητήρα αίθουσας κάτω από τη χαμηλή σκανδάλη και αν από την άλλη πάνω από την υψηλή σκανδάλη.
Αυτό επιτρέπει τον έλεγχο τόσο της φωτεινότητας όσο και της θερμοκρασίας χρώματος στο ίδιο τόξο.
Οι τιμές των αισθητήρων διαβάζονται. Εάν κάποιο από αυτά είναι μικρότερο από τη χαμηλή τιμή σκανδάλης, τότε προσαρμόζουμε τη θερμοκρασία χρώματος. Υπάρχουν 11 αισθητήρες κάτω από την περιοχή του τόξου, οι οποίοι οι έξοδοι θα πάνε με τη σειρά τους κάτω από το σημείο σκανδάλης καθώς το τσεπάκι κινείται πάνω τους. Κάθε αισθητήρας έχει μια τιμή PWM για τα δροσερά και ζεστά LED σε αυτό, ξεκινώντας από τον αισθητήρα 1 σε 100% ζεστό, 0% δροσερό και λειτουργεί μέχρι τον 11ο σε 0% ζεστό, 100% δροσερό.
Ο έλεγχος φωτεινότητας γίνεται με τον ίδιο τρόπο. Ελέγξτε αν οι έξοδοι των αισθητήρων είναι πάνω από την υψηλή σκανδάλη αυτή τη φορά και δίνοντας σε κάθε αισθητήρα μια τιμή στάθμισης φωτεινότητας.
Αυτός ο συντελεστής φωτεινότητας πολλαπλασιάζεται στη συνέχεια με την τιμή θερμοκρασίας χρώματος για να δώσει τη συνολική τιμή εξόδου. Σας επιτρέπει να ρυθμίσετε οποιαδήποτε θερμοκρασία χρώματος σε οποιαδήποτε φωτεινότητα…
Βήμα 5: Στέγαση
- Ξεκίνησα φτιάχνοντας ένα καλούπι από χαρτόνι για το κάτω μέρος του περιβλήματος. Για να δημιουργήσω τις εσοχές για την περιοχή ελέγχου, έκοψα ένα κομμάτι λέιζερ από κόντρα πλακέ σε σχήμα τόξου και χρησιμοποίησα ένα κέρμα 5p για την αποβάθρα «αναμονής». Αυτά ήταν κολλημένα στο καλούπι από χαρτόνι, δίνοντας προσοχή να τα φέρουμε στη σωστή θέση που θα ευθυγραμμίζονταν με τους αισθητήρες εφέ αίθουσας.
- Το επόμενο ήταν να αναμειχθεί η ρητίνη πολυουρεθάνης. Τα υλικά που χρησιμοποιώ έχουν μια απλή αναλογία 1: 1 και θεραπεύουν μέσα σε περίπου 20 λεπτά.. οπότε πρέπει να λειτουργήσω αρκετά γρήγορα!
- Η αρχική έκχυση ήταν να γεμίσει το κάτω μέρος του καλουπιού. Μετά από αυτό το σετ πρόσθεσα ένα εσωτερικό τοίχωμα από χαρτόνι για να μου επιτρέψει να ρίξω τα πλευρικά τοιχώματα.
- Για να δημιουργήσω το επάνω τμήμα, στο οποίο θα κάθονταν τα LED, έκοψα και κόλλησα κάποιο πλαστικό σωλήνα/κύπελλο στη θέση του υπό γωνία. Και πάλι η ρητίνη χύθηκε μέσα και αφέθηκε να δέσει.
- Τώρα το περίβλημα ήταν έτοιμο, έπρεπε να ανοίξω μερικές τρύπες και να του δώσω μια καλή άμμο.
- Εφαρμόστηκε αστάρι και στη συνέχεια ψεκάστηκε με την τελευταία στρώση χρώματος.
Βήμα 6: Συνέλευση/Συμπέρασμα
- Μια υποδοχή για την υποδοχή DC αποκόπηκε από το περίβλημα. Στη συνέχεια, ο γρύλος είναι κολλημένος.
- Η πλακέτα LED μπορεί στη συνέχεια να βιδωθεί στο επάνω τμήμα, με τα καλώδια να τροφοδοτούνται στο κάτω μέρος.
- Τα καλώδια από την υποδοχή LED και DC βιδώθηκαν στη συνέχεια στα σωστά μπλοκ ακροδεκτών.
- Ο κύριος πίνακας στη συνέχεια βιδώνεται στο περίβλημα
- Ένα κομμάτι κόντρα πλακέ βιδώνεται στη συνέχεια για να καλύψει το κάτω μέρος του περιβλήματος.
- Το τελευταίο πράγμα είναι να κολλήσετε το "puck" μεταξύ τους, φροντίζοντας να προσανατολίσετε τους πόλους του μαγνήτη με το σωστό τελικό κάλυμμα "φωτεινότητας" ή "θερμοκρασίας χρώματος".
Γενικά το φως λειτουργεί αρκετά καλά! Υπάρχουν μερικά σφάλματα στο λογισμικό για σιδέρωμα και τα LED RGB θα μπορούσαν να είναι πιο φωτεινά. Μπορώ επίσης να προσθέσω έναν αισθητήρα φωτισμού περιβάλλοντος για να αλλάξω αυτόματα τη θερμοκρασία χρώματος, ξεκινώντας από το «κρύο» κατά τη διάρκεια της ημέρας και μεταβαλλόμενο σε «ζεστό» τη νύχτα.
Μπράβο για το διάβασμα!