Πίνακας περιεχομένων:
- Βήμα 1: Υλικά και εξαρτήματα που απαιτούνται:
- Βήμα 2: Δαχτυλίδια Neopixel
- Βήμα 3: Συνδέσεις
- Βήμα 4: Ο Κώδικας:
- Βήμα 5: Συνδυάζοντας τα πάντα μαζί:
Βίντεο: Γυαλιά χαλάρωσης - ITTT: 5 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:38
HKU Project - ITTT (If This Then That) - Julia Berkouwer, 1Β
Έχετε νιώσει ποτέ άγχος και απλά δεν ξέρετε πώς να ηρεμήσετε, τότε θα πρέπει να δοκιμάσετε αυτά τα γυαλιά χαλάρωσης! Τα βάζετε και κλείνετε τα μάτια σας, τότε θα παίξει ένα μοτίβο αναπνοής. Ακολουθώντας αυτό το μοτίβο αναπνοής, ο ρυθμός αναπνοής σας θα μειωθεί στην αναπνοή μέσα και έξω 6 φορές το λεπτό. Κάνοντας αυτό απελευθερώνει το καθημερινό άγχος.
Μπορείτε επίσης να παρακολουθείτε την ένταση της αναπνοής σας γυρίζοντας έναν διακόπτη, χρησιμοποιώντας έναν αισθητήρα fsr.
Με αυτό το toturial θα σας καθοδηγήσω να φτιάξετε τα δικά σας γυαλιά χαλάρωσης βήμα προς βήμα.
Βήμα 1: Υλικά και εξαρτήματα που απαιτούνται:
Υλικά:
1x arduino uno;
1xbreadboard ή PCV.
3x 10k αντιστάσεις
Σύρματα (Κατά προτίμηση διαφορετικά χρώματα, ώστε να είναι ευκολότερο να πούμε ποια πράγματα πηγαίνουν στο έδαφος και ποια πηγαίνουν σε διαφορετικές ακίδες κ.λπ.).
Μερικοί σωλήνες συρρίκνωσης θερμότητας.
2x NeoPixel Ring - 16 x 5050 RGB LED με ενσωματωμένα προγράμματα οδήγησης.
Διακόπτης 1x.
1x αισθητήρας FSR.
1x γυαλιά SteamPunk (Μπορείτε να τα αγοράσετε σε ένα κατάστημα πάρτι, είναι εύκολο στη χρήση γιατί το δαχτυλίδι neopixel ταιριάζει τέλεια στα γυαλιά. Προσπαθείτε πάντα να χρησιμοποιείτε άλλα γυαλιά ή να δημιουργείτε το δικό σας.)
1x κάποιο είδος (ελαστικής) μπάντας για να το βάλετε στο στήθος σας.
Εργαλεία:-Φορητός υπολογιστής
-Συγκολλητικό σίδερο
-Λογισμικό Arduino IDE
Θα δείτε δύο κουμπιά και έναν διακόπτη στο pvc μου, χρησιμοποιώ μόνο το αριστερό κουμπί για να το συνδέσω στο διακόπτη, δεν χρησιμοποιώ το δεύτερο κουμπί στα δεξιά της εικόνας. Έβαλα τα κουμπιά στο pvc πριν καταλάβω ότι δεν τα χρειάζομαι και έπρεπε να χρησιμοποιήσω έναν διακόπτη αντ 'αυτού.
Παρακάτω θα δείτε φωτογραφίες από όλα όσα χρησιμοποίησα:
Βήμα 2: Δαχτυλίδια Neopixel
Το λευκό σύρμα συνδέεται με τη γείωση στο πίσω μέρος του δακτυλίου neopixel.
Το πορτοκαλί καλώδιο συνδέεται με το 5V.
Και το καφέ σύρμα συνδέεται με την είσοδο δεδομένων
Βήμα 3: Συνδέσεις
Κάπως έτσι έμοιαζε το ψωμί μου κατά τη δημιουργία πρωτοτύπων, μπορείτε να το χρησιμοποιήσετε ως αναφορά.
Έκανα επίσης μια διάταξη της καλωδίωσης για το πώς υποτίθεται ότι μοιάζει με ένα μόνο κουμπί.
Βήμα 4: Ο Κώδικας:
Probablyσως δεν είναι ο πιο αποδοτικός κώδικας, αλλά λειτουργεί για μένα. Προκαλέστε τον εαυτό σας και προσπαθήστε να το κάνετε πιο αποτελεσματικό
#περιλαμβάνω
// Οι οποίες
η καρφίτσα στο Arduino είναι συνδεδεμένη με τα NeoPixels;
#καθορίζω
PIN 6
// Οι οποίες
η καρφίτσα στο Arduino είναι συνδεδεμένη με το κουμπί
#καθορίζω
BUTTON_PIN 9
// Πως
πολλά NeoPixels είναι προσαρτημένα στο Arduino;
#καθορίζω
NUMPIXELS 16
// Πότε
ρυθμίζουμε τη βιβλιοθήκη NeoPixel, της λέμε πόσα εικονοστοιχεία και ποια καρφίτσα να χρησιμοποιήσουμε για την αποστολή σημάτων.
// Σημείωση
ότι για παλαιότερες λωρίδες NeoPixel ίσως χρειαστεί να αλλάξετε την τρίτη παράμετρο-δείτε το strandtest
//
παράδειγμα για περισσότερες πληροφορίες σχετικά με πιθανές τιμές.
Adafruit_NeoPixel
pixels = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int παύση
= 1; // καθυστέρηση2
int
παύση2 = 80; // κατεβαίνοντας όταν χρησιμοποιείται το fsr
int
παύση3 = 150; // κάνει επάνω όταν χρησιμοποιείται το fsr
int
καθυστέρηση = 4; // καθυστέρηση1
int
fsrPin = 0; // το FSR και το 10K pulldown συνδέονται με το a0
int
fsrReading;
κενός
setup () {
pinMode (BUTTON_PIN, INPUT);
Serial.begin (9600);
pixels.begin (); // Αυτό αρχικοποιεί το
Βιβλιοθήκη NeoPixel.
pixels.show ();
}
μπουλ
πατημένο με κουμπί (int pin) {
επιστροφή digitalRead (pin)?
}
κενός
loop () {// διαβάζει αν η εισαγωγή pin είναι αληθής ή λανθασμένη
fsrReading = analogRead (fsrPin);
Serial.print ("Αναλογική ανάγνωση =");
Serial.print (fsrReading);
εάν (πατημένο με κουμπί (BUTTON_PIN) == true) {
// εφέ φωτισμού όταν χρησιμοποιείτε αισθητήρα fsr
εάν (fsrReading> 50) {
pixels.setPixelColor (0, 1, 0, 1);
pixels.setPixelColor (15, 1, 0, 1);
pixels.setPixelColor (1, 1, 0, 1);
pixels.setPixelColor (14, 1, 0, 1);
pixels.show ();
καθυστέρηση (παύση3)?
}
εάν (fsrReading <52) {
pixels.setPixelColor (0, 0, 0, 0);
pixels.setPixelColor (15, 0, 0, 0);
pixels.setPixelColor (1, 0, 0, 0);
pixels.setPixelColor (14, 0, 0, 0);
pixels.show ();
καθυστέρηση (παύση2)?
}
if (fsrReading> 57) {
pixels.setPixelColor (2, 1, 0, 1);
pixels.setPixelColor (13, 1, 0, 1);
pixels.setPixelColor (3, 1, 0, 1);
pixels.setPixelColor (12, 1, 0, 1);
pixels.show ();
καθυστέρηση (παύση3)?
}
εάν (fsrReading <59) {
pixels.setPixelColor (2, 0, 0, 0);
pixels.setPixelColor (13, 0, 0, 0);
pixels.setPixelColor (3, 0, 0, 0);
pixels.setPixelColor (12, 0, 0, 0);
pixels.show ();
καθυστέρηση (παύση2)?
}
εάν (fsrReading> 65) {
pixels.setPixelColor (4, 1, 0, 1);
pixels.setPixelColor (11, 1, 0, 1);
pixels.setPixelColor (5, 1, 0, 1);
pixels.setPixelColor (10, 1, 0, 1);
pixels.show ();
καθυστέρηση (παύση3)?
}
εάν (fsrReading <67) {
pixels.setPixelColor (4, 0, 0, 0);
pixels.setPixelColor (11, 0, 0, 0);
pixels.setPixelColor (5, 0, 0, 0);
pixels.setPixelColor (10, 0, 0, 0);
pixels.show ();
καθυστέρηση (40)?
}
εάν (fsrReading> 79) {
pixels.setPixelColor (6, 1, 0, 1);
pixels.setPixelColor (9, 1, 0, 1);
pixels.setPixelColor (7, 1, 0, 1);
pixels.setPixelColor (8, 1, 0, 1);
pixels.show ();
καθυστέρηση (παύση3)?
}
εάν (fsrReading <85) {
pixels.setPixelColor (6, 0, 0, 0);
pixels.setPixelColor (9, 0, 0, 0);
pixels.setPixelColor (7, 0, 0, 0);
pixels.setPixelColor (8, 0, 0, 0);
pixels.show ();
καθυστέρηση (20)?
}
}
αλλού{
μπλε της αναπνοής (20, 100, 0, 1, 1). // κανονικό
αποτέλεσμα
}
}
// Παύση
= καθυστέρηση μεταξύ μεταβάσεων
// Βήματα
= αριθμός βημάτων
// R, G, B = Πλήρεις τιμές RGB
// Η κενή αναπνοή είναι voor het licht effect als de
fsrsensor niet gebruikt wordt. Deze void wordt in de void loop () weer aangeroepen.
void breathe_blue (int παύση, int βήματα, byte R, byte G, byte B) {
int
tmpR, tmpG, tmpB; // Τιμές θερμοκρασίας
// Ξεθώριασε
για (int s = 1; s <= βήματα; s ++) {
tmpR = (R * s) /
βήματα? // Πολλαπλασιάστε πρώτα για να αποφύγετε σφάλματα περικοπής
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0;
Εγώpixels.setPixelColor (0, tmpR, tmpG+1, tmpB);
pixels.setPixelColor (15, tmpR, tmpG+1, tmpB);
}
pixels.show ();
καθυστέρηση (4)?
}
// Ξεθώριασε
για (int s = 1; s <= βήματα; s ++) {
tmpR = (R * s) /
βήματα? // Πολλαπλασιάστε πρώτα για να αποφύγετε σφάλματα περικοπής
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0;
Εγώpixels.setPixelColor (1, tmpR, tmpG+1, tmpB);pixels.setPixelColor (14, tmpR, tmpG+1, tmpB);
}
pixels.show ();
καθυστέρηση (4)?
}
// Ξεθώριασε
για (int s = 1; s <= βήματα; s ++) {
tmpR = (R * s) /
βήματα? // Πολλαπλασιάστε πρώτα για να αποφύγετε σφάλματα περικοπής
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0;
Εγώpixels.setPixelColor (2, tmpR, tmpG+2, tmpB);pixels.setPixelColor (13, tmpR, tmpG+2, tmpB);
}
pixels.show ();
καθυστέρηση (3,5)?
}
// Ξεθώριασε
για (int s = 1; s <= βήματα; s ++) {
tmpR = (R * s) /
βήματα? // Πολλαπλασιάστε πρώτα για να αποφύγετε σφάλματα περικοπής
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0;
Εγώpixels.setPixelColor (3, tmpR, tmpG+3, tmpB+5);pixels.setPixelColor (12, tmpR, tmpG+3, tmpB+5);
}
pixels.show ();
καθυστέρηση (3)?
}
για (int i = 0;
Εγώpixels.setPixelColor (0, 0, 0, 0);pixels.setPixelColor (15, 0, 0, 0);
}
// Ξεθώριασε
για (int s = 1; s <= βήματα; s ++) {
tmpR = (R * s) /
βήματα? // Πολλαπλασιάστε πρώτα για να αποφύγετε σφάλματα περικοπής
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0;
Εγώ
pixels.setPixelColor (4, tmpR, tmpG+3, tmpB+15);pixels.setPixelColor (11, tmpR, tmpG+3, tmpB+15);
}
pixels.show ();
καθυστέρηση (3)?
}
// Ξεθώριασε
για (int s = 1; s <= βήματα; s ++) {
tmpR = (R * s) /
βήματα? // Πολλαπλασιάστε πρώτα για να αποφύγετε σφάλματα περικοπής
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0;
Εγώpixels.setPixelColor (5, tmpR, tmpG+4, tmpB+20);pixels.setPixelColor (10, tmpR, tmpG+4, tmpB+20);
}
pixels.show ();
καθυστέρηση (2)?
}
για (int i = 0;
Εγώpixels.setPixelColor (1, 0, 0, 0);
pixels.setPixelColor (14, 0, 0, 0);
}
// Ξεθώριασε
για (int s = 1; s <= βήματα; s ++) {
tmpR = (R * s) /
βήματα? // Πολλαπλασιάστε πρώτα για να αποφύγετε σφάλματα περικοπής
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0;
Εγώpixels.setPixelColor (6, tmpR, tmpG+2, tmpB+40);
pixels.setPixelColor (9, tmpR, tmpG+2, tmpB+40);
}
pixels.show ();
καθυστέρηση (καθυστέρηση)?
}
για (int i = 0;
Εγώpixels.setPixelColor (2, 0, 0, 0);pixels.setPixelColor (13, 0, 0, 0);
}
// Ξεθώριασε
για (int s = 1; s <= βήματα; s ++) {
tmpR = (R * s) /
βήματα? // Πολλαπλασιάστε πρώτα για να αποφύγετε σφάλματα περικοπής
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0;
Εγώ
pixels.setPixelColor (7, tmpR, tmpG, tmpB+44);pixels.setPixelColor (8, tmpR, tmpG, tmpB+44);
}
pixels.show ();
καθυστέρηση (καθυστέρηση)?
}
// Ξεθωριάζει
για (int s = βήματα; s> 0; s--) {
tmpR = (R * s) / βήματα; // Πολλαπλασιάστε πρώτα για να αποφύγετε την περικοπή
Σφάλματα
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0; i
pixels.setPixelColor (7, tmpR, tmpG, tmpB);
pixels.setPixelColor (8, tmpR, tmpG, tmpB);
}
pixels.show ();
καθυστέρηση (1)?
}
// Ξεθωριάζει
για (int s = βήματα; s> 0; s--) {
tmpR = (R * s) / βήματα; // Πολλαπλασιάστε πρώτα για να αποφύγετε την περικοπή
Σφάλματα
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0; i
pixels.setPixelColor (6, tmpR, tmpG, tmpB);
pixels.setPixelColor (9, tmpR, tmpG, tmpB);
}
pixels.show ();
καθυστέρηση (1)?
}
// Ξεθωριάζει
για (int s = βήματα; s> 0; s--) {
tmpR = (R * s) / βήματα; // Πολλαπλασιάστε πρώτα για να αποφύγετε την περικοπή
Σφάλματα
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0; i
pixels.setPixelColor (5, tmpR, tmpG, tmpB);
pixels.setPixelColor (10, tmpR, tmpG, tmpB);
}
pixels.show ();
καθυστέρηση (2)?
}
// Ξεθωριάζει
για (int s = βήματα; s> 0; s--) {
tmpR = (R * s) / βήματα; // Πολλαπλασιάστε πρώτα για να αποφύγετε την περικοπή
Σφάλματα
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0; i
pixels.setPixelColor (4, tmpR, tmpG, tmpB);
pixels.setPixelColor (11, tmpR, tmpG, tmpB);
}
pixels.show ();
καθυστέρηση (2)?
}
// Ξεθωριάζει
για (int s = βήματα; s> 0; s--) {
tmpR = (R * s) / βήματα; // Πολλαπλασιάστε πρώτα για να αποφύγετε την περικοπή
Σφάλματα
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0; i
pixels.setPixelColor (3, tmpR, tmpG, tmpB);
pixels.setPixelColor (12, tmpR, tmpG, tmpB);
}
pixels.show ();
καθυστέρηση (3)?
}
// Ξεθωριάζει
για (int s = βήματα; s> 0; s--) {
tmpR = (R * s) / βήματα; //
Πολλαπλασιάστε πρώτα για να αποφύγετε σφάλματα περικοπής
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0; i
pixels.setPixelColor (2, tmpR, tmpG, tmpB);
pixels.setPixelColor (13, tmpR, tmpG, tmpB);
}
pixels.show ();
καθυστέρηση (3)?
}
// Ξεθωριάζει
για (int s = βήματα; s> 0; s--) {
tmpR = (R * s) / βήματα; // Πολλαπλασιάστε πρώτα για να αποφύγετε την περικοπή
Σφάλματα
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0; i
pixels.setPixelColor (1, tmpR, tmpG, tmpB);
pixels.setPixelColor (14, tmpR, tmpG, tmpB);
}
pixels.show ();
καθυστέρηση (4)?
}
// Ξεθωριάζει
για (int s = βήματα; s> 0; s--) {
tmpR = (R * s) / βήματα; // Πολλαπλασιάστε πρώτα για να αποφύγετε την περικοπή
Σφάλματα
tmpG = (G * s) / βήματα;
tmpB = (B * s) / βήματα;
για (int i = 0; i
pixels.setPixelColor (0, tmpR, tmpG, tmpB);
pixels.setPixelColor (15, tmpR, tmpG, tmpB);
}
pixels.show ();
καθυστέρηση (4)?
}
}
Βήμα 5: Συνδυάζοντας τα πάντα μαζί:
Θα μπορούσατε απλά να αφήσετε όλα τα καλώδια σας συνδεδεμένα με το breadboard σας ή με ένα PVC, αυτό εξαρτάται από εσάς (επέλεξα να βάλω ένα PVC πάνω από το arduino είναι ωραίο και τακτοποιημένο έτσι).
Το επόμενο βήμα είναι να τοποθετήσετε σωλήνες που συρρικνώνουν τη θερμότητα γύρω από όλα τα καλώδια, ώστε να μην υπάρχει χάος.
Εάν επιλέξατε να χρησιμοποιήσετε PVC, τότε θα έπρεπε να έχετε κολλήσει τα πάντα μέχρι τώρα.
Στη συνέχεια, βάζετε τους δακτυλίους neopixel στο εξωτερικό των γυαλιών (βεβαιωθείτε ότι τα led είναι ευθυγραμμισμένα στο πίσω μέρος) και στερεώστε τα στη θέση τους με κάποια ταινία ή κόλλα (χρησιμοποίησα ταινία).
Μπορείτε να επιλέξετε να κολλήσετε τον αισθητήρα fsr στην ελαστική ταινία με κάποια ταινία ή απλά να τον αφήσετε μόνο του.
Απολαύστε τα γυαλιά σας:)
Συνιστάται:
Έξυπνα γυαλιά (κάτω από $ 10 !!!): 8 βήματα (με εικόνες)
Έξυπνα γυαλιά (κάτω από $ 10 !!!): Γεια σας! Όλοι είμαστε εξοικειωμένοι με τα έξυπνα γυαλιά όπως αυτό με το όνομα E.D.I.T.H. φτιαγμένο από τον αγαπημένο μας χαρακτήρα Tony Stark που μεταφέρθηκε αργότερα στον Peter Parker. Σήμερα πρόκειται να φτιάξω ένα τόσο έξυπνο γυαλί που να είναι και κάτω από $ 10! Δεν είναι καθόλου
Προστατευτικά γυαλιά νύχτας για το Google Cardboard: 10 βήματα (με εικόνες)
Προστατευτικά γυαλιά νύχτας για το Google Cardboard: Αποποίηση ευθυνών: Η χρήση αυτής της συσκευής προορίζεται μόνο για ψυχαγωγία, εκπαίδευση και επιστημονική χρήση. όχι για κατασκοπεία και/ή παρακολούθηση. Το " gadget κατάσκοπος " οι λειτουργίες προστέθηκαν στην εφαρμογή μόνο για διασκέδαση και δεν εξυπηρετούσαν κανέναν πρακτικό σκοπό για
Διακόπτης φωτισμού ελεγχόμενου ματιού χρησιμοποιώντας τα γυαλιά Shota Aizawa's Eraser Head (My Hero Academia): 8 βήματα (με εικόνες)
Eye-Blink Controlled Light Switch Using Shota Aizawa's Eraser Head Goggles (My Hero Academia): Εάν διαβάζετε το manga του hero akademia ή παρακολουθείτε το anime του hero hero μου, πρέπει να γνωρίζετε έναν χαρακτήρα που ονομάζεται shota aizawa. Ο Shota Aizawa, γνωστός και ως Eraser Head, είναι επαγγελματίας ήρωας και δάσκαλος της τάξης 1-A των Η.Α. Το Shota's Quirk του δίνει το
Γυαλιά και κοστούμι LED: 4 βήματα (με εικόνες)
Γυαλιά και Κοστούμια LED: Σας αρέσει να σας βλέπουν από μακριά στο σκοτάδι; Θέλετε φανταχτερά γυαλιά όπως του Elton; Τότε, αυτό το Instructable είναι για εσάς !!! Θα μάθετε πώς να φτιάχνετε μια φορεσιά LED και κινούμενα ελαφριά γυαλιά
Γυαλιά υγρού κρυστάλλου για αμβλυωπία (γυαλιά προπόνησης εναλλασσόμενης απόφραξης) [ATtiny13]: 10 βήματα (με εικόνες)
Υγρά κρυστάλλινα γυαλιά για αμβλυωπία (Εναλλακτικά γυαλιά κατάρρευσης απόφραξης) [ATtiny13]: Αμβλυωπία (τεμπέλης οφθαλμός), μια διαταραχή της όρασης που επηρεάζει περίπου το 3% του πληθυσμού, που συνήθως αντιμετωπίζεται με απλούς οφθαλμικούς οφθαλμούς ή σταγόνες ατροπίνης. Δυστυχώς, αυτές οι μέθοδοι θεραπείας αποκλείουν το δυνατό μάτι για μεγάλα, αδιάκοπα χρονικά διαστήματα, όχι