Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Εξετάστε τι έχετε
- Βήμα 2: Κάποια συγκόλληση
- Βήμα 3: Οι συνδέσεις
- Βήμα 4: Τα φωτεινά προγράμματα
- Βήμα 5: Ο Κώδικας
- Βήμα 6: Σχετικά με το PWM
Βίντεο: Αναβοσβήνοντας Γέφυρα Κεριών: 6 Βήματα (με Εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Αυτό το διδακτικό δείχνει πώς να μετατρέψετε μια απλή γέφυρα κεριών με στατικό φως σε ένα ωραίο λαμπερό φως διάθεσης με ατελείωτες παραλλαγές λαμπτήρων που τρεμοπαίζουν, αναβοσβήνουν, μοτίβα κυμάτων και πολλά άλλα. Αγόρασα από το After Christmas Sales μια γέφυρα με κεριά για 8 €. Διαθέτει 7 φώτα led και προσαρμογέα τοίχου 33 V 3 W. Λάμπει με ένα φωτεινό και ζεστό λευκό χρώμα και θα είναι τέλειο για αυτό το έργο, όπου θα βάλω ένα Arduino για να κάνουν τα κεριά να τρεμοπαίζουν. Το πιο δημοφιλές Arduino είναι το Arduino Uno. Σε αυτό το έργο, θα χρησιμοποιήσω ένα Arduino Mega 2560.
Θα σταματήσω το τροφοδοτικό 30 V και θα χρησιμοποιήσω μια απλή τράπεζα τροφοδοσίας 5 V που προορίζεται για κινητά τηλέφωνα ως τροφοδοτικό.
Ένα καλό πράγμα που πρέπει να γνωρίζετε για τις τράπεζες ισχύος είναι ότι έχουν εσωτερικό κύκλωμα, το οποίο μετατρέπει την μπαταρία 3,7 V σε 5 V. Επειδή η διαδικασία χρησιμοποιεί κάποια ισχύ, η τράπεζα τροφοδοσίας κλείνει μόνη της, εάν δεν χρησιμοποιηθεί. Εάν η τράπεζα τροφοδοσίας χρησιμοποιείται για gadget με βάση το Arduino, το gadget δεν μπορεί απλά να τεθεί σε λειτουργία εξοικονόμησης ενέργειας και να ξεκινήσει ξανά μετά από λίγα λεπτά. Αυτό θα κλείσει το power bank. Αυτή η τρεμούλα γέφυρα κεριών δεν έχει λειτουργία ύπνου. Χρησιμοποιεί συνεχώς τροφοδοσία, διατηρώντας την τράπεζα τροφοδοσίας ενεργή, μέχρι να αποσυνδεθεί το καλώδιο τροφοδοσίας.
Το βίντεο δείχνει τη γέφυρα των κεριών σε στατική λειτουργία και σε πλήρες τρεμόπαιγμα. Το πλήρες τρεμόπαιγμα είναι πραγματικά αρκετά ενοχλητικό για τα μάτια, ενώ το βίντεο το εξομαλύνει λίγο. Αφού διορθωθεί το υλικό, συμπεριλαμβανομένης της κοπής καλωδίων, της συγκόλλησης νέων συνδέσεων και της προσθήκης ορισμένων εξαρτημάτων, δημιουργούνται όλα τα επιθυμητά μοτίβα φωτισμού γράφοντας κώδικα για το Arduino. Τα πρότυπα που συμπεριλαμβάνω σε αυτό το διδακτικό είναι:
- 4 διαφορετικά φώτα που τρεμοπαίζουν και μιμούνται αληθινά κεριά
- 2 διαφορετικές αναλαμπές (τυχαίο αναβοσβήσιμο των στατικών φώτων κατά τα άλλα)
- 2 διαφορετικά μοτίβα κυμάτων
- απλό στατικό φως
Η εναλλαγή μοτίβων πραγματοποιείται μέσω ενός κουμπιού, ενός στοιχείου διεπαφής χρήστη. Όσο περισσότερα μοτίβα θέλει κάποιος και όσο περισσότερη προσαρμογή θέλει, τόσο περισσότερα κουμπιά και κουμπιά πρέπει να προσθέσει. Αλλά η ομορφιά βρίσκεται στην απλότητα. Διατηρήστε τον αριθμό των προτύπων που μπορείτε να επιλέξετε. Επιλέξτε τις καλύτερες ρυθμίσεις κατά την κωδικοποίηση και τον έλεγχο, όχι προσθέτοντας πολλά στοιχεία ελέγχου στο υλικό.
Προμήθειες
- 1 γέφυρα κεριών LED με 7 λάμπες. Βεβαιωθείτε ότι πρόκειται για μοντέλο χαμηλής τάσης DC, είτε με μπαταρίες είτε με πηγή τροφοδοσίας τοίχου, που μετατρέπει το θανατηφόρο 110 - 240 V AC σε περίπου 6 - 30 V DC. Έτσι, είναι απολύτως ασφαλές να χακάρεις τη γέφυρα των κεριών.
- 1 Arduino Mega (οποιοσδήποτε άλλος μικροελεγκτής θα το κάνει, απλά βεβαιωθείτε ότι μπορείτε να το προγραμματίσετε)
- 1 πρωτότυπη σανίδα ψωμιού
- καλώδια βραχυκυκλωτήρων και άλλο σύρμα
- εργαλείο συγκόλλησης
- πολύμετρο
- 7 αντιστάσεις, 120 Ω
- 1 κουμπί (θα δείξω πώς μπορείτε να χρησιμοποιήσετε το ενσωματωμένο κουμπί σε ένα Arduino αντ 'αυτού)
- Ένα darlington IC τρανζίστορ για 7 τρανζίστορ, θα κάνει το ULN2803AP (Εάν χρησιμοποιείτε Arduino Uno ή Meaga, δεν το χρειάζεστε πραγματικά)
- Ένα power bank 5 V που προορίζεται για κινητά τηλέφωνα
Βήμα 1: Εξετάστε τι έχετε
Μάθετε σε ποια τάση λειτουργεί κάθε LED και πόσο ρεύμα ρέει.
- Ανοίξτε το κάτω μέρος της γέφυρας των κεριών. Βρείτε τα δύο καλώδια που πηγαίνουν σε ένα κερί.
- Αφαιρέστε κάποια μόνωση από τα καλώδια που αποκαλύπτουν τα χάλκινα σύρματα χωρίς να κόψετε τα χάλκινα σύρματα.
- Ενεργοποιήστε τα φώτα (χαλαρώστε, είναι μόνο λίγα βολτ) και μετρήστε την τάση στα καλώδια που αποκαλύφθηκαν από χαλκό.
- Κόψτε το καλώδιο σε ένα από τα σημεία μέτρησης (σε αυτό το σημείο τα φώτα σβήνουν, φυσικά), αφαιρέστε κάποια μόνωση (3 - 4 mm) και στα δύο άκρα. Μετρήστε το ρεύμα που περνάει. Αυτό που κάνετε είναι να επανασυνδέσετε το κομμένο καλώδιο με το πολύμετρό σας, αφήνοντας όλο το ρεύμα να περάσει από το πολύμετρό σας, το οποίο τώρα σας λέει την ποσότητα ρεύματος.
Τα αναγνώσματά μου
Η τάση πάνω από ένα κερί (βήμα 3): 3,1 V
Σημειώστε ότι η πηγή ισχύος στη γέφυρα των κεριών ήταν 33 V. Έτσι επτά φορές το 3,1 V είναι μόνο 21,7 V. Σε μερικά από τα κεριά πρέπει να υπάρχει μια επιπλέον αντίσταση. Αν είχα μετρήσει την τάση του κεριού, πρέπει να ήταν περίπου 11 V.
Το ρεύμα που ρέει όταν ανάβει το κερί (βήμα 4): 19 mA
Θα τροφοδοτήσω τα πάντα με μια μπαταρία 5 V 2 A. Για τα κεριά, πρέπει να ρίξω την τάση από 5 V σε 3 V. Χρειάζομαι μια αντίσταση, η οποία θα ρίξει την τάση 2 V σε ρεύμα 19 mA.
2 V / 0.019 A = 105 Ω
Η ισχύς που διαχέεται είναι:
2 V * 19 mA = 38 mW
Αυτό είναι αμελητέο. Πολύ περισσότερο θα μπορούσε να φυσήξει την ίδια την αντίσταση. Ωστόσο, χωρίς αντίσταση 105 Ω μπορεί να φυσήξω το LED. Έχω αντιστάσεις 100 Ω και 120 Ω. Πάω με 120 Ω. Δίνει μεγαλύτερη προστασία.
Η δοκιμή και των 7 κεριών με 3 V έδωσε ένα έντονο φως, εκτός από ένα κερί, το οποίο είχε μόνο πολύ αμυδρό φως, με μόλις 0,8 mA να περνάει. Αυτό ήταν το κερί μου με την επιπλέον αντίσταση. Αποδείχθηκε ότι τα άλλα κεριά δεν είχαν καθόλου αντιστάσεις. Τα φώτα LED που χρησιμοποιούνται στον πολυέλαιο προορίζονται απλά για 3 V! Το κερί με την επιπλέον αντίσταση έπρεπε να ανοίξει χρησιμοποιώντας ήπια βία, αλλά τίποτα δεν έσπασε. Η αντίσταση βρέθηκε ακριβώς κάτω από το μικροσκοπικό LED στο εσωτερικό του πλαστικού λαμπτήρα κεριού. Έπρεπε να το ξεκολλήσω και να ξανακολλήσω τα καλώδια. Wasταν λίγο ακατάστατο, αφού το συγκολλητικό σίδερο ζεστάνει λίγη θερμή κόλλα, η οποία είχε χρησιμοποιηθεί για τη συναρμολόγηση.
Έτσι τώρα ξέρω ότι όποια πηγή ενέργειας και αν χρησιμοποιήσω, όποια και αν είναι η τάση, πρέπει να ρίξω την τάση στα 3 V επιτρέποντας στα 19 mA να περάσουν.
Αν ήμουν πιο εξοικειωμένος με την τεχνολογία LED, θα είχα αναγνωρίσει τον τύπο LED που χρησιμοποιήθηκε και θα ήξερα ότι χρειαζόταν 3 V.
Βήμα 2: Κάποια συγκόλληση
Σε αυτό το βήμα συνδέω όλα τα θετικά (+) καλώδια από τα 5 κεριά σε ένα σύρμα. Στη συνέχεια προσθέτω ένα ξεχωριστό αρνητικό (-) σύρμα για κάθε κερί. Μια λυχνία LED ανάβει μόνο όταν τα "+" και "-" πάνε δεξιά. Δεδομένου ότι έχετε μόνο δύο πανομοιότυπα άκρα καλωδίων από κάθε κερί, πρέπει να δοκιμάσετε ποιο είναι το "+" και ποιο το "-". Για αυτό χρειάζεστε μια πηγή τροφοδοσίας 3 V. Είχα ένα μικρό πακέτο μπαταριών που περιλαμβάνει δύο μπαταρίες AAA. Μια μπαταρία νομισμάτων 3 V λειτουργεί τέλεια και για δοκιμές.
Η γέφυρα των κεριών χρειάζεται 8 καλώδια για να τρέξει μεταξύ του Arduino και της γέφυρας. Αν βρείτε ένα καλώδιο με 8 μονωμένα καλώδια, αυτό θα ήταν υπέροχο. Ένα καλώδιο πρέπει να χωράει 120 mA, τα υπόλοιπα φέρουν μόνο 20 mA το πολύ. Επέλεξα να χρησιμοποιήσω 4 καλώδια διπλού σύρματος, τα οποία έτυχε να έχω.
Η πρώτη εικόνα δείχνει πώς ετοίμασα ένα κοινό σύρμα για να συνδέσω όλα τα καλώδια "+" από τα κεριά. Αφαιρέστε λίγη μόνωση από το κοινό σύρμα για κάθε κερί. Προσθέστε ένα κομμάτι συρρικνωμένου σωλήνα μόνωσης (την κίτρινη λωρίδα στην εικόνα) για κάθε άρθρωση και τοποθετήστε το στο σωστό σημείο του κοινού καλωδίου. Συγκολλήστε το σύρμα «+» από κάθε κερί στην άρθρωσή του, καλύψτε τον σύνδεσμο με τον σωλήνα συρρίκνωσης και συρρικνώστε τον. Φυσικά, μια απλή κολλητική ταινία είναι επίσης καλή, όλα θα καλυφθούν στο τέλος.
Η δεύτερη εικόνα δείχνει τα σύρματα '-' που χρειάζεται κάθε κερί. Το κοινό σύρμα "+" πηγαίνει απευθείας στον πείρο 5 V του Arduino (ή ίσως μέσω του breadboard). Κάθε σύρμα "-" πηγαίνει στη δική του καρφίτσα του IC τρανζίστορ (πάλι, πιθανότατα μέσω του breadboard).
Ένα Arduino ονομάζεται συχνά σανίδα πρωτοτύπων. Ένας πίνακας ψωμιού είναι επίσης κάτι που χρησιμοποιείτε σε πρωτότυπα. Αυτό που περιγράφω σε αυτό το εκπαιδευτικό είναι ένα πρωτότυπο. Δεν θα το μετατρέψω σε ένα κομψό λαμπερό προϊόν με όλα κρυμμένα σε ωραίες πλαστικές θήκες. Η μεταφορά του από το πρωτότυπο στο επόμενο επίπεδο θα σήμαινε την αντικατάσταση του breadboard με μια πλακέτα τυπωμένου κυκλώματος και συγκολλημένα εξαρτήματα και ακόμη και την αντικατάσταση του Arduino με ένα απλό τσιπ μικροελεγκτή (στην πραγματικότητα ένα τέτοιο τσιπ είναι ο εγκέφαλος του Arduino). Και τα πάντα να χωράνε σε μια πλαστική θήκη ή μέσα στη χακαρισμένη γέφυρα των κεριών.
Βήμα 3: Οι συνδέσεις
Σχετικά με το Arduinos, από αυτήν τη σελίδα:
- Συνολικό μέγιστο ρεύμα ανά ακίδα εισόδου/εξόδου: 40mA
- Άθροισμα ρευμάτων από όλες τις ακίδες εισόδου/εξόδου συνδυασμένες: 200mA
Τα κεριά μου αντλούν 19 mA το καθένα, όταν τροφοδοτούνται από 3 V. Υπάρχουν επτά από αυτά, που κάνουν 133 mA. Έτσι θα μπορούσα να τα τροφοδοτήσω απευθείας από τις ακίδες εξόδου. Ωστόσο, έχω μερικά ανταλλακτικά IC τρανζίστορ darlington. Έτσι σκέφτηκα, γιατί όχι. Το κύκλωμά μου κάνει το πράγμα με τον σωστό τρόπο: οι ακίδες δεδομένων είναι μόνο για σήματα, όχι για ισχύ. Αντ 'αυτού, χρησιμοποιώ τον πείρο 5 V στο Arduino για την τροφοδοσία των φώτων LED. Κατά τη δοκιμαστική λειτουργία, έχω το φορητό υπολογιστή μου συνδεδεμένο στο Arduino. Όλα τροφοδοτούνται από το φορητό υπολογιστή USB, το οποίο δίνει 5 V. Το Arduino Mega έχει μια δική του ασφάλεια, η οποία φυσάει στα 500 mA για να προστατεύσει τον υπολογιστή. Τα κεριά μου αντλούν 133 mA το πολύ. Το Arduino μάλλον πολύ λιγότερο. Όλα λειτουργούν καλά, όταν τροφοδοτούνται από το φορητό υπολογιστή, οπότε η χρήση μιας μπαταρίας 5 V που είναι συνδεδεμένη στη θύρα USB του Arduino είναι μια χαρά.
Οι ακίδες δεδομένων D3 - D9 πηγαίνουν στο IC ULN2803APGCN. Οι λυχνίες LED λειτουργούν στα 3 V. Κάθε λαμπτήρας είναι συνδεδεμένος στην πηγή 5 V και περαιτέρω σε αντίσταση 120 Ω. Περαιτέρω σε ένα κανάλι του IC, το οποίο τελικά συνδέει το κύκλωμα με τη γείωση μέσω ενός τρανζίστορ darlington στο IC.
Ένα κουμπί ώθησης προστίθεται στο κύκλωμα για να ενεργοποιήσει κάποια ενέργεια χρήστη. Η γέφυρα των κεριών θα μπορούσε έτσι να έχει μερικά προγράμματα επιλογής χρήστη.
Το κουμπί πίεσης στο κύκλωμα συνδέεται με RESET και GND. Αυτό ακριβώς κάνει το ενσωματωμένο κουμπί επαναφοράς. Δεδομένου ότι δεν περικλείω τα πάντα σε μια πλαστική θήκη, χρησιμοποιώ το κουμπί επαναφοράς στο Arduino για τον έλεγχο του προγράμματος. Η προσθήκη ενός κουμπιού σύμφωνα με την εικόνα θα λειτουργεί ακριβώς όπως το κουμπί επαναφοράς του πίνακα. Το πρόγραμμα λειτουργεί με το να θυμάστε ποιο πρόγραμμα φωτισμού χρησιμοποιήθηκε την τελευταία φορά που εκτελέστηκε το πρόγραμμα. Έτσι, κάθε επαναφορά θα προχωρήσει στο επόμενο πρόγραμμα φωτισμού.
Οι φωτογραφίες δείχνουν πώς τα νέα καλώδια βγαίνουν από τη γέφυρα, πώς έβαλα το IC τρανζίστορ και τις αντιστάσεις στη σανίδα και πώς συνδέονται τα καλώδια με το jumper με το Arduino Mega. Έκοψα 4 καλώδια άλματος αρσενικού-αρσενικού σε 8 μισά σύρματα, τα οποία κόλλησα στα 8 καλώδια που βγαίνουν από τη γέφυρα των κεριών. Με αυτόν τον τρόπο μπορώ απλά να κολλήσω τα καλώδια στο ψωμί.
Εναλλακτική χωρίς τρανζίστορ
Στο προηγούμενο βήμα, ετοίμασα ένα κοινό σύρμα "+" για τα κεριά και ξεχωριστά καλώδια "-", τα οποία περνούν από το IC τρανζίστορ στο έδαφος. Όταν ένας πείρος δεδομένων ανεβαίνει ψηλά, το αντίστοιχο σύρμα "-" γειώνεται μέσω του τρανζίστορ και των λυχνιών LED.
Η σύνδεση των καλωδίων "-" απευθείας στις ακίδες δεδομένων του Arduino θα λειτουργούσε επίσης, αλλά να έχετε πάντα υπόψη πόσο τρέχουσες αντέχουν οι ακίδες δεδομένων! Αυτή η προσέγγιση θα χρειαζόταν αλλαγή στο πρόγραμμά μου. Θα χρειαστούν οι ακίδες δεδομένων για να χαμηλώσουν για να ανάψουν τα κεριά. Για να χρησιμοποιήσετε το πρόγραμμά μου ως έχει, πρέπει να αλλάξετε τα "+" και "-" στα κεριά. Έχετε ένα κοινό "-" καλώδιο για τα κεριά, το οποίο πηγαίνει στο GND στο Arduino. Και τα ξεχωριστά καλώδια περνούν ανάμεσα στο σύρμα '+' του κεριού και μια καρφίτσα δεδομένων του Arduino.
Βήμα 4: Τα φωτεινά προγράμματα
Το πρόγραμμά μου, το οποίο παρουσιάζω στο επόμενο βήμα, περνάει από 9 ελαφριά προγράμματα. Πατώντας το κουμπί θα σβήσει τα φώτα για ένα δευτερόλεπτο και μετά ξεκινά το παρακάτω πρόγραμμα φωτισμού. Τα προγράμματα έχουν ως εξής:
- Ισχυρό τρεμόπαιγμα. Τα κεριά τρεμοπαίζουν τυχαία. Αυτό φαίνεται πολύ ενοχλητικό όταν τα κοιτάτε από κοντά, αλλά μπορεί να φαίνεται καλό από απόσταση και ίσως πίσω από ένα παγωμένο παράθυρο σοφίτας. Ωστόσο, ο γείτονάς σας μπορεί να καλέσει την πυροσβεστική.
- Μαλακό τρεμόπαιγμα. Φαίνεται πολύ καλό. Σαν αληθινά κεριά σε ένα δωμάτιο χωρίς βύθισμα.
- Διαφορετικά τρεμοπαίζει. Τα κεριά εναλλάσσονται ομαλά μεταξύ δυνατού και μαλακού τρεμοπαίγματος σε διαστήματα περίπου 30 δευτερολέπτων.
- Διαφορετικά τρεμοπαίζει. Όπως το #3, αλλά κάθε κερί διαφέρει στον δικό του ρυθμό μεταξύ 30 s και 60 s.
- Γρήγορη αναλαμπή. Τα κεριά λάμπουν σε στατικό αμυδρό επίπεδο και αναβοσβήνουν τυχαία. Κατά μέσο όρο υπάρχει μια λάμψη κάθε δευτερόλεπτο.
- Αργή λάμψη. Όπως το #5, αλλά με πολύ πιο αργό ρυθμό.
- Γρήγορο κύμα από το μεσαίο κερί στο κάτω.
- Αργό κύμα από το μεσαίο κερί στο κάτω.
- Στατικό έντονο φως. Έπρεπε να το συμπεριλάβω αυτό, δεν ήθελα να απαλλαγώ από την αρχική λειτουργία.
Βήμα 5: Ο Κώδικας
/*
ΓΕΦΥΡΑ ΚΕΡΙ FLICKERING */ // Δηλώστε τη μεταβλητή λειτουργίας για να διατηρήσει την κατάσταση // μέσω μιας λειτουργίας επαναφοράς _attribute _ ((ενότητα (". Noinit"))) χωρίς υπογραφή int mode. // Όταν το πρόγραμμα ξεκινά μετά από μια επαναφορά, αυτό το κομμάτι // της μνήμης δεν προετοιμάζεται, αλλά διατηρεί την τιμή // που είχε πριν από την επαναφορά. Την πρώτη φορά που εκτελείται το // πρόγραμμα, έχει μια τυχαία τιμή. / * * Η κατηγορία κεριών περιέχει όλα όσα χρειάζονται * για τον υπολογισμό του επιπέδου φωτός για * ένα κερί που τρεμοπαίζει. */ class candle {private: long maxtime; μακρό χρονικό διάστημα? μακρυς μακλιτης? μακρύ μινλίτη? μακρύς μέσος όρος μακρύ χρόνο προέλευσης μακροχρόνια αρχή; μακρύ origmaxlite? μακρύ origminlite? μακρύ origmeanlite? μακρύ deltamaxtime? μακρύ deltamintime? μακρύ δελταμαξλίτη? μακρύ δελταμινλίτη? μακρύ δελταμεανλίτη? μακρύ lforate? μακρύ βραδινό μακρά εκκίνηση? μακρύς στόχος? float phactor? μακροχρόνιο στόχο μεγάλη ώρα έναρξης · μακρύ deltatime? void newtarget (κενό)? μακρύ onetarget (κενό)? δημόσιο: κερί (μακρύ χαλάκι, μακρύ μιτ, μακ μαλ, μακρύ μιλ, μακρύ μελ, μακρύ εο); long levelnow (άκυρο)? void initlfo (long deltamat, long deltamit, long deltamal, long deltamil, long deltamean, long rate)? void setlfo (void)? }; κερί:: κερί (μακρύ χαλάκι, μακρύ μιτ, μακ μαλ, μακρύ μιλ, μακλ μέλ, μακρύ εο): μακρύς χρόνος (χαλάκι), μέντιμ (μιτ), μαξλίτης (μηλ), μινλίτης (μιλ), μένλιτ (μέλ), βραδινό (eo), origmaxtime (mat), origmintime (mit), origmaxlite (mal), origminlite (mil), origmeanlite (mel) {target = meanlite; newtarget (); } / * * levelnow () επιστρέφει το επίπεδο φωτός που πρέπει να έχει το κερί αυτή τη στιγμή. * Η συνάρτηση φροντίζει για τον καθορισμό ενός νέου τυχαίου επιπέδου φωτισμού και * το χρόνο που χρειάζεται για να φτάσει σε αυτό το επίπεδο. Η αλλαγή δεν είναι γραμμική, αλλά ακολουθεί μια σιγμοειδή καμπύλη. Όταν δεν είναι ώρα για τον καθορισμό ενός νέου επιπέδου *, η λειτουργία επιστρέφει απλώς το επίπεδο φωτισμού. */ long candle:: levelnow (void) {long help, now? float t1, t2; τώρα = millis (); εάν (τώρα> = targettime) {βοήθεια = στόχος; newtarget (); επιστροφή βοήθειας? } else {// help = target * (millis () - starttime) / deltatime + start * (targettime - millis ()) / deltatime; t1 = float (targettime - now) / deltatime; t2 = 1. - t1; // Αυτή είναι η σιγμοειδής βοήθεια υπολογισμού = t1*t1*t1*start + t1*t1*t2*start*3 + t1*t2*t2*target*3 + t2*t2*t2*target επιστροφή βοήθειας? }} void candle:: newtarget (void) {long sum; άθροισμα = 0; για (long i = 0; i <evenout; i ++) sum+= onetarget (); έναρξη = στόχος? στόχος = άθροισμα / ακόμη ώρα έναρξης = millis (); targettime = ώρα έναρξης + τυχαία (χρόνος χρόνου, maxtime); deltatime = targettime - starttime; } long candle:: onetarget (void) {if (τυχαία (0, 10) lastcheck + 100) {lastcheck = τώρα; / * * Το άλγκο που αναβοσβήνει "μετά από ρυθμό χιλιοστά του δευτερολέπτου": * Ξεκινήστε τον έλεγχο μετά το ρυθμό / 2 χιλιοστά του δευτερολέπτου * Κατά τη διάρκεια μιας περιόδου ρυθμού / 2 χιλιοστών του δευτερολέπτου, κάντε * την πιθανότητα μιας αναλαμπής να είναι 50 %. * Εάν ο ρυθμός είναι 10000 ms, κατά τη διάρκεια των 5000 ms το κέρμα αναστρέφεται 50 φορές. * 1/50 = 0,02 * Εάν τυχαία (10000) ώρα έναρξης + ποσοστό / 2) {εάν (τυχαία (ποσοστό) στόχος) επιστρέφει lowlite. επιστροφή (έναρξη - lowlite) * (timetime - now) / (targettime - starttime) + lowlite; } void twinkler:: twink (void) {starttime = millis (); targettime = τυχαία (mintime, maxtime) + ώρα έναρξης; έναρξη = τυχαία (minlite, maxlite); } void setup () {int led; // Διαβάστε τη μεταβλητή μαγικής λειτουργίας, η οποία πρέπει να λέει // ποιο πρόγραμμα φωτός εκτελέστηκε την τελευταία φορά, αυξήστε το // και μηδενίστε αν υπερχειλίσει. λειτουργία ++; λειτουργία %= 9; // Αυτό φροντίζει για οποιαδήποτε τιμή // ήταν η πρώτη φορά που το Arduino // εκτέλεσε αυτό το πρόγραμμα. / * * ΣΗΜΑΝΤΙΚΗ ΣΗΜΕΙΩΣΗ * ============= * * Το βασικό πράγμα που κάνει αυτό το πρόγραμμα είναι η έξοδος σημάτων PWM * σε λυχνίες LED. Εδώ ορίζω τους πείρους 3 έως 9 σε * λειτουργία εξόδου. Σε ένα Arduino Mega2560, αυτές οι ακίδες εξάγουν * ωραία σήματα PWM. Εάν έχετε άλλο Arduino, ελέγξτε * ποιες καρφίτσες (και πόσες) μπορείτε να χρησιμοποιήσετε. Μπορείτε πάντα να * ξαναγράψετε τον κώδικα για να χρησιμοποιήσετε λογισμικό PWM, εάν το Arduino * δεν μπορεί να παρέχει αρκετές ακίδες PWM υλικού. * */ pinMode (3, OUTPUT); pinMode (4, OUTPUT); pinMode (5, OUTPUT); pinMode (6, OUTPUT); pinMode (7, OUTPUT); pinMode (8, OUTPUT); pinMode (9, OUTPUT); pinMode (LED_BUILTIN, OUTPUT); analogWrite (LED_BUILTIN, 0); // Απλώς απενεργοποιήστε το ενοχλητικό κόκκινο led στο δοχείο *Arduino *[7]. // ετοιμαστείτε να χρησιμοποιήσετε τα κεριά που τρεμοπαίζουν, είτε τα χρησιμοποιείτε είτε όχι τα τζάμια *twink [7]. // προετοιμαστείτε να χρησιμοποιήσετε τα κεριά που αναβοσβήνουν… εάν (λειτουργία == 8) {για (int i = 3; i <10; i ++) analogWrite (i, 255); ενώ (αληθινό)? // Κάθε φορά που εκτελείται αυτό το πρόγραμμα, μπαίνει σε // αυτού του είδους τον ατελείωτο βρόχο, μέχρι να πατηθεί το κουμπί επαναφοράς //. } if (λειτουργία <2) // τρεμοπαίζει {long maxtime_; μακροχρόνια μέση_? μακρος μακλιτης_? μακρύ minlite_? μακρύ meanlite_? μακρύ ακόμη και? εάν (λειτουργία == 0) {maxtime_ = 250; μέση ώρα = 50; maxlite_ = 256; minlite_ = 0; meanlite_ = 128; ζυγό_ = 1; } if (mode == 1) {maxtime_ = 400; μέση ώρα = 150; maxlite_ = 256; minlite_ = 100; meanlite_ = 200; ζυγό_ = 1; } για (int i = 0; i <7; i ++) {can = νέο κερί (maxtime_, mintime_, maxlite_, minlite_, meanlite_, even_); } while (true) // Ο ατελείωτος βρόχος για τρεμόπαιγμα κεριών {for (int i = 0; i levelnow ()); }} if (mode <4) // lfo προστέθηκε στο τρεμόπαιγμα {if (mode == 2) // ίδιο lfo (30 s) για όλα τα κεριά {for (int i = 0; i initlfo (75, 50, 0, 50, 36, 30000);}} εάν (λειτουργία == 3) // μεταβαλλόμενες πληροφορίες: για τα κεριά {για (int i = 0; i initlfo (75, 50, 0, 50, 36, 20000); μπορεί [1]-> initlfo (75, 50, 0, 50, 36, 25000) · μπορεί [2]-> initlfo (75, 50, 0, 50, 36, 30000) · μπορεί [3]-> initlfo (75, 50, 0, 50, 36, 35000) · μπορεί [4]-> initlfo (75, 40, 0, 50, 36, 40000) · μπορεί [5]-> initlfo (75, 30, 0, 50, 26, 45000) · μπορεί [6]-> initlfo (75, 20, 0, 50, 16, 50000) · μπορεί [7]-> initlfo (75, 10, 0, 50, 6, 55000) ·} ενώ (αληθινό) // Ο ατελείωτος βρόχος για τρεμόπαιγμα κεριών με ένα lfo {long lastclock = 0; για (int i = 0; i levelnow ()); if (millis ()> lastclock + 4000) {lastclock = millis (); για (int i = 0; i setlfo ();}}} if (λειτουργία <6) // κεριά που αναβοσβήνουν {int speedo; if (mode == 4) speedo = 6000; αλλιώς speedo = 22000; for (int i = 0; i <7; i ++) twink = new twinkler (300, 295, 255, 250, speedo) · ενώ (true) {for (int i = 0; i levelnow ())? }} // Κύματα. // Αυτή η ενότητα ξεκινά με σγουρές αγκύλες μόνο // για να βεβαιωθείτε ότι δεν υπάρχουν αντικρουόμενα ονόματα μεταβλητών. // Καμία άλλη ανάγκη για αγκύλες, δεν χρειάζεται έλεγχος // η τιμή της λειτουργίας.{int lolite = 2; int hilite = 255; int σημαίνει? int ampl? float fasedelta = 2,5; float fase? int elong? float phactor? μεγάλη περίοδος; μέσος όρος = (lolite + hilite) / 2; ampl = hilite - μέσο; εάν (τρόπος == 6) περίοδος = 1500? else period = 3500? phactor = 6.28318530718 / περίοδος. while (true) {fase = phactor * (millis () % period); elong = μέσο + ενισχυτή * sin (fase)? analogWrite (7, επίμηκες); analogWrite (9, επίμηκες); fase = phactor * ((millis () + period / 4) % period); elong = μέσο + ενισχυτή * sin (fase)? analogWrite (3, elong); analogWrite (8, επίμηκες); fase = phactor * ((millis () + period / 2) % period); elong = μέσο + ενισχυτή * sin (fase)? analogWrite (4, επίμηκες); analogWrite (5, επίμηκες); fase = phactor * ((millis () + 3 * περίοδος / 4) % περίοδος); elong = μέσο + ενισχυτή * sin (fase)? analogWrite (6, επίμηκες); } // Κατά τη σύνδεση των καλωδίων των κεριών στο Arduino, // τα έκανα ανάμεικτα και δεν τα έβαλα ποτέ σε τάξη. // Η σειρά είναι σημαντική για τη δημιουργία μοτίβων κυμάτων, // έτσι έγραψα αυτόν τον μικρό πίνακα για μένα: // // Κερί# στη γέφυρα: 2 3 5 4 7 6 1 // Καρφίτσα δεδομένων στο Arduino: 3 4 5 6 7 8 9}} void loop () {// Δεδομένου ότι κάθε πρόγραμμα φωτός είναι ο δικός του άπειρος βρόχος, // έγραψα όλους τους βρόχους στην ενότητα έναρξης () // και δεν άφησα τίποτα για αυτήν την ενότητα βρόχου (). }
Βήμα 6: Σχετικά με το PWM
Οι λυχνίες λάμπουν έντονα όταν τροφοδοτούνται με 3 V. Χρησιμοποιώντας μόνο 1,5 V δεν ανάβουν καθόλου. Τα φώτα LED δεν σβήνουν όμορφα με την τάση εξασθένισης, όπως κάνουν τα φώτα πυρακτώσεως. Αντίθετα, πρέπει να ενεργοποιηθούν με πλήρη τάση και μετά να απενεργοποιηθούν. Όταν συμβαίνει αυτό 50 φορές το δευτερόλεπτο, λάμπουν όμορφα με 50 % φωτεινότητα, περισσότερο ή λιγότερο. Εάν επιτρέπεται να είναι ενεργοποιημένα μόνο στα 5 ms και στα 15 ms, ενδέχεται να λάμψουν με φωτεινότητα 25 %. Αυτή η τεχνική είναι αυτό που κάνει το φως LED να μειώνεται. Αυτή η τεχνική ονομάζεται διαμόρφωση πλάτους παλμού ή PWM. Ένας μικροελεγκτής όπως το Arduino έχει συνήθως ακίδες δεδομένων, οι οποίες μπορούν να στέλνουν σήματα ενεργοποίησης/απενεργοποίησης. Ορισμένες από τις ακίδες δεδομένων έχουν ενσωματωμένες δυνατότητες για το PWM. Αλλά αν δεν υπάρχουν αρκετές ακίδες με ενσωματωμένο PWM, είναι συνήθως δυνατό να χρησιμοποιηθούν βιβλιοθήκες προγραμματισμού για τη δημιουργία "ακίδων λογισμικού PWM".
Στο έργο μου, χρησιμοποίησα ένα Arduino Mega2560, το οποίο διαθέτει υλικό PWM στις ακίδες 3 - 9. Εάν χρησιμοποιείτε Arduino UNO, έχετε μόνο έξι ακίδες PWM. Σε αυτή την περίπτωση, εάν χρειάζεστε ένα 7ο (ή και περισσότερο) κερί, μπορώ να συστήσω τη βιβλιοθήκη PWM λογισμικού του Brett Hagman, την οποία μπορείτε να βρείτε εδώ.
Συνιστάται:
Γέφυρα KaKu (Klik-aan Klik-uit): 4 Βήματα
Γέφυρα KaKu (Klik-aan Klik-uit): Αυτό το KakuBridge είναι ένα πολύ φτηνό (< $ 8) και πολύ απλό στην κατασκευή δομοτικό σύστημα για συσκευές Klik-aan Klik-uit, (CoCo). Μπορείτε να ελέγξετε έως και 9 συσκευές μέσω τηλεχειριστηρίου σε μια ιστοσελίδα. Επιπλέον, με το KakuBridge μπορείτε να προγραμματίσετε κάθε συσκευή
Το πρώτο ρολόι κεριών οπτικών ινών στον κόσμο: 14 βήματα (με εικόνες)
Το πρώτο ρολόι κεριών οπτικών ινών στον κόσμο: αποφάσισα να κάνω δώρο στη γυναίκα μου και ήθελα να βρω μια πρωτότυπη ιδέα. Μου άρεσε η ιδέα ενός κινούμενου γλυπτού και μετά από πολλή σκέψη κατέληξα στην ιδέα ενός μηχανικού ρολογιού που έλαμπε και έλαμπε χρησιμοποιώντας κρύσταλλα, κεριά και
Μετατροπή μετρητή ποδιών-κεριών για φωτογραφία: 5 βήματα (με εικόνες)
Μετατροπή μετρητή ποδιών για φωτογραφία: Αν σας αρέσει η δουλειά μου, ψηφίστε αυτό το Instructable στο Make It Real Challenge πριν από τις 4 Ιουνίου 2012. Ευχαριστώ! Για όσους από τους ερασιτέχνες φωτογράφους σας αρέσουν τα γυρίσματα ταινιών, μερικές φορές οι παλιές κάμερες δεν έχουν τον κατάλληλο μετρητή φωτός
Κύκλωμα φωτισμού κεριών OLED με φωτοαντίσταση για έλεγχο έντασης (TfCD): 4 βήματα (με εικόνες)
Κύκλωμα φωτισμού κεριών OLED με φωτοαντίσταση για έλεγχο έντασης (TfCD): Σε αυτό το διδακτικό σας δείχνουμε πώς να φτιάξετε ένα κύκλωμα που δείχνει ότι το LED (O) αναβοσβήνει σαν ένα κερί και αντιδρά στην ένταση του περιβάλλοντος. Με χαμηλότερη ένταση φωτός απαιτείται μικρότερη έξοδος φωτός από τις πηγές φωτός. Με αυτήν την εφαρμογή
Γέφυρα απλού WiFi to BLE (Bluetooth Low Energy): 9 βήματα (με εικόνες)
Απλό WiFi to BLE (Bluetooth Low Energy) Bridge: Ενημέρωση 4 Δεκεμβρίου 2017 - αναθεωρημένα σκίτσα Feather nRF52 και συμβουλές εντοπισμού σφαλμάτων. Προστέθηκαν εικόνες από γέφυρα τοποθετημένες σε κουτί. Αυτό το απλό έργο παρέχει πρόσβαση WiFi σε οποιαδήποτε μονάδα Bluetooth Low Energy (BLE) που υλοποιεί το UART της Nordic με TX Notify. Θ