Πίνακας περιεχομένων:

Γυαλιά χαλάρωσης - ITTT: 5 βήματα (με εικόνες)
Γυαλιά χαλάρωσης - ITTT: 5 βήματα (με εικόνες)

Βίντεο: Γυαλιά χαλάρωσης - ITTT: 5 βήματα (με εικόνες)

Βίντεο: Γυαλιά χαλάρωσης - ITTT: 5 βήματα (με εικόνες)
Βίντεο: ΠΗΡΑ ενα κουτι ΠΡΟΦΥΛΑΚΤΙΚΑ…. 2024, Νοέμβριος
Anonim
Γυαλιά χαλάρωσης - ITTT
Γυαλιά χαλάρωσης - ITTT
Γυαλιά χαλάρωσης - ITTT
Γυαλιά χαλάρωσης - ITTT
Γυαλιά χαλάρωσης - ITTT
Γυαλιά χαλάρωσης - ITTT

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
Δαχτυλίδια 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 στην ελαστική ταινία με κάποια ταινία ή απλά να τον αφήσετε μόνο του.

Απολαύστε τα γυαλιά σας:)

Συνιστάται: