Table des matières:

Lunettes de relaxation - ITTT : 5 étapes (avec photos)
Lunettes de relaxation - ITTT : 5 étapes (avec photos)

Vidéo: Lunettes de relaxation - ITTT : 5 étapes (avec photos)

Vidéo: Lunettes de relaxation - ITTT : 5 étapes (avec photos)
Vidéo: Corée du Nord : arme nucléaire, terreur et propagande 2024, Novembre
Anonim
Lunettes de relaxation - ITTT
Lunettes de relaxation - ITTT
Lunettes de relaxation - ITTT
Lunettes de relaxation - ITTT
Lunettes de relaxation - ITTT
Lunettes de relaxation - ITTT

Projet HKU - ITTT (If This Then That) - Julia Berkouwer, 1B

Vous êtes-vous déjà senti stressé et vous ne savez tout simplement pas comment vous calmer, alors vous devriez essayer ces lunettes de relaxation ! Vous les mettez et fermez les yeux, puis un schéma de respiration jouera. En suivant ce schéma de respiration, votre rythme respiratoire se réduira à inspirer et expirer 6 fois par minute. En faisant cela, il libère le stress quotidien.

Vous pouvez également suivre l'intensité de votre respiration en appuyant sur un interrupteur à l'aide d'un capteur fsr.

Avec ce didacticiel, je vais vous guider pas à pas dans la construction de vos propres lunettes de relaxation.

Étape 1: Matériaux et pièces nécessaires:

Matériaux et pièces nécessaires
Matériaux et pièces nécessaires
Matériaux et pièces nécessaires
Matériaux et pièces nécessaires
Matériaux et pièces nécessaires
Matériaux et pièces nécessaires

Matériaux:

1x arduino uno;

1 planche à pain ou PCV;

3x 10k résistances

Fils (de préférence des couleurs différentes pour qu'il soit plus facile de dire quelles choses vont au sol et lesquelles vont à différentes broches, etc.);

Certains tubes thermorétractables;

2x Anneau NeoPixel - 16 x 5050 LED RVB avec Pilotes Intégrés;

1x interrupteur;

1x capteur FSR;

1x lunettes SteamPunk (vous pouvez les acheter dans un magasin de fête, elles sont faciles à utiliser car la bague néopixel s'adapte parfaitement aux lunettes. Vous essayez toujours d'utiliser d'autres lunettes ou de créer les vôtres.);

1x une sorte de bande (elastick) à mettre autour de votre poitrine.

Outils:-Ordinateur portable

-Fer à souder

-Logiciel IDE Arduino

Vous verrez deux boutons et un interrupteur sur mon pvc, je n'utilise que le bouton gauche pour le connecter à l'interrupteur, je n'utilise pas le deuxième bouton à droite de la photo. J'ai mis les boutons sur le pvc avant de réaliser que je n'en avais pas besoin et que j'avais besoin d'utiliser un interrupteur à la place.

Ci-dessous, vous verrez des photos de tout ce que j'ai utilisé:

Étape 2: anneaux néopixels

Anneaux Néopixels
Anneaux Néopixels

Le fil blanc est relié à la terre à l'arrière de l'anneau néopixel.

Le fil orange est connecté au 5V.

Et le fil marron est connecté à l'entrée de données

Étape 3: Connexions

Connexions
Connexions
Connexions
Connexions

Voici à quoi ressemblait ma maquette lors du prototypage, vous pouvez l'utiliser comme référence.

J'ai également fait un schéma du câblage de ce à quoi il est censé ressembler avec un seul bouton.

Étape 4: Le code:

Ce n'est probablement pas le code le plus efficace, mais il fonctionne pour moi. Mettez-vous au défi et essayez de le rendre plus efficace;P

#comprendre

// Lequel

broche sur l'Arduino est connectée aux NeoPixels?

#définir

NIP 6

// Lequel

la broche de l'Arduino est connectée au bouton

#définir

BUTTON_PIN 9

// Comment

de nombreux NeoPixels sont attachés à l'Arduino?

#définir

NUMPIXELS 16

// Lorsque

nous configurons la bibliothèque NeoPixel, nous lui indiquons combien de pixels et quelle broche utiliser pour envoyer des signaux.

// Noter

que pour les anciennes bandes NeoPixel, vous devrez peut-être modifier le troisième paramètre - voir le strandtest

//

exemple pour plus d'informations sur les valeurs possibles.

Adafruit_NeoPixel

pixels = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

pause int

= 1; //retard2

entier

pause2 = 80; // baisse lorsque fsr est utilisé

entier

pause3 = 150; // faire quand fsr est utilisé

entier

délaival = 4; // retard1

entier

fsrPin = 0; // le FSR et le pulldown 10K sont connectés à a0

entier

fsrLecture;

annuler

mettre en place() {

pinMode(BUTTON_PIN, INPUT);

Serial.begin(9600);

pixels.begin(); // Ceci initialise le

Bibliothèque NeoPixel.

pixels.show();

}

bool

bouton pressé(int pin){

return digitalRead(pin);

}

annuler

loop() { // lit si l'entrée de la broche est vraie ou fausse

fsrReading = analogRead(fsrPin);

Serial.print("Lecture analogique = ");

Serial.print(fsrReading);

if (bouton pressé (BUTTON_PIN) == vrai){

//effet de lumière lors de l'utilisation du capteur fsr

if (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();

retard (pause3);

}

if (fsrLecture < 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();

retard (pause2);

}

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();

retard (pause3);

}

if (fsrLecture < 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();

retard(pause2);

}

if (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();

retard (pause3);

}

if (fsrLecture <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();

retard (40);

}

if (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();

retard (pause3);

}

if (fsrLecture <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();

retard(20);

}

}

autre{

respirer_bleu (20, 100, 0, 1, 1); // Ordinaire

effet

}

}

// Pause

= délai entre les transitions

// Pas

= nombre de pas

// R, V, B = valeurs RVB complètes

// De void respirer est voor het licht effect als de

fsrsensor niet gebruikt wordt. Deze void wordt in de void loop() weer aangeroepen.

void breathe_blue(int pause, int étapes, octet R, octet G, octet B) {

entier

tmpR, tmpG, tmpB; // Valeurs temporaires

// Fondu vers le haut

for (int s=1; s<=steps; s++) {

tmpR = (R * s) /

pas; // Multipliez d'abord pour éviter les erreurs de troncature

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (entier i=0;

jepixels.setPixelColor(0, tmpR, tmpG+1, tmpB);

pixels.setPixelColor(15, tmpR, tmpG+1, tmpB);

}

pixels.show();

retard(4);

}

// Fondu vers le haut

for (int s=1; s<=steps; s++) {

tmpR = (R * s) /

pas; // Multipliez d'abord pour éviter les erreurs de troncature

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (entier i=0;

jepixels.setPixelColor(1, tmpR, tmpG+1, tmpB);pixels.setPixelColor(14, tmpR, tmpG+1, tmpB);

}

pixels.show();

retard(4);

}

// Fondu vers le haut

for (int s=1; s<=steps; s++) {

tmpR = (R * s) /

pas; // Multipliez d'abord pour éviter les erreurs de troncature

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (entier i=0;

jepixels.setPixelColor(2, tmpR, tmpG+2, tmpB);pixels.setPixelColor(13, tmpR, tmpG+2, tmpB);

}

pixels.show();

retard (3.5);

}

// Fondu vers le haut

for (int s=1; s<=steps; s++) {

tmpR = (R * s) /

pas; // Multipliez d'abord pour éviter les erreurs de troncature

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (entier i=0;

jepixels.setPixelColor(3, tmpR, tmpG+3, tmpB+5);pixels.setPixelColor(12, tmpR, tmpG+3, tmpB+5);

}

pixels.show();

retard(3);

}

pour (entier i=0;

jepixels.setPixelColor(0, 0, 0, 0);pixels.setPixelColor(15, 0, 0, 0);

}

// Fondu vers le haut

for (int s=1; s<=steps; s++) {

tmpR = (R * s) /

pas; // Multipliez d'abord pour éviter les erreurs de troncature

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (entier i=0;

je

pixels.setPixelColor(4, tmpR, tmpG+3, tmpB+15);pixels.setPixelColor(11, tmpR, tmpG+3, tmpB+15);

}

pixels.show();

retard(3);

}

// Fondu vers le haut

for (int s=1; s<=steps; s++) {

tmpR = (R * s) /

pas; // Multipliez d'abord pour éviter les erreurs de troncature

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (entier i=0;

jepixels.setPixelColor(5, tmpR, tmpG+4, tmpB+20);pixels.setPixelColor(10, tmpR, tmpG+4, tmpB+20);

}

pixels.show();

retard(2);

}

pour (entier i=0;

jepixels.setPixelColor(1, 0, 0, 0);

pixels.setPixelColor(14, 0, 0, 0);

}

// Fondu vers le haut

for (int s=1; s<=steps; s++) {

tmpR = (R * s) /

pas; // Multipliez d'abord pour éviter les erreurs de troncature

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (entier i=0;

jepixels.setPixelColor(6, tmpR, tmpG+2, tmpB+40);

pixels.setPixelColor(9, tmpR, tmpG+2, tmpB+40);

}

pixels.show();

délai (valeur de délai);

}

pour (entier i=0;

jepixels.setPixelColor(2, 0, 0, 0);pixels.setPixelColor(13, 0, 0, 0);

}

// Fondu vers le haut

for (int s=1; s<=steps; s++) {

tmpR = (R * s) /

pas; // Multipliez d'abord pour éviter les erreurs de troncature

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (entier i=0;

je

pixels.setPixelColor(7, tmpR, tmpG, tmpB+44);pixels.setPixelColor(8, tmpR, tmpG, tmpB+44);

}

pixels.show();

délai (valeur de délai);

}

// Fondu vers le bas

for (int s=steps; s>0; s--) {

tmpR = (R * s) / pas; // Multipliez d'abord pour éviter la troncature

les erreurs

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (int i=0; i

pixels.setPixelColor(7, tmpR, tmpG, tmpB);

pixels.setPixelColor(8, tmpR, tmpG, tmpB);

}

pixels.show();

retard(1);

}

// Fondu vers le bas

for (int s=steps; s>0; s--) {

tmpR = (R * s) / pas; // Multipliez d'abord pour éviter la troncature

les erreurs

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (int i=0; i

pixels.setPixelColor(6, tmpR, tmpG, tmpB);

pixels.setPixelColor(9, tmpR, tmpG, tmpB);

}

pixels.show();

retard(1);

}

// Fondu vers le bas

for (int s=steps; s>0; s--) {

tmpR = (R * s) / pas; // Multipliez d'abord pour éviter la troncature

les erreurs

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (int i=0; i

pixels.setPixelColor(5, tmpR, tmpG, tmpB);

pixels.setPixelColor(10, tmpR, tmpG, tmpB);

}

pixels.show();

retard(2);

}

// Fondu vers le bas

for (int s=steps; s>0; s--) {

tmpR = (R * s) / pas; // Multipliez d'abord pour éviter la troncature

les erreurs

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (int i=0; i

pixels.setPixelColor(4, tmpR, tmpG, tmpB);

pixels.setPixelColor(11, tmpR, tmpG, tmpB);

}

pixels.show();

retard(2);

}

// Fondu vers le bas

for (int s=steps; s>0; s--) {

tmpR = (R * s) / pas; // Multipliez d'abord pour éviter la troncature

les erreurs

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (int i=0; i

pixels.setPixelColor(3, tmpR, tmpG, tmpB);

pixels.setPixelColor(12, tmpR, tmpG, tmpB);

}

pixels.show();

retard(3);

}

// Fondu vers le bas

for (int s=steps; s>0; s--) {

tmpR = (R * s) / pas; //

Multipliez d'abord pour éviter les erreurs de troncature

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (int i=0; i

pixels.setPixelColor(2, tmpR, tmpG, tmpB);

pixels.setPixelColor(13, tmpR, tmpG, tmpB);

}

pixels.show();

retard(3);

}

// Fondu vers le bas

for (int s=steps; s>0; s--) {

tmpR = (R * s) / pas; // Multipliez d'abord pour éviter la troncature

les erreurs

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (int i=0; i

pixels.setPixelColor(1, tmpR, tmpG, tmpB);

pixels.setPixelColor(14, tmpR, tmpG, tmpB);

}

pixels.show();

retard(4);

}

// Fondu vers le bas

for (int s=steps; s>0; s--) {

tmpR = (R * s) / pas; // Multipliez d'abord pour éviter la troncature

les erreurs

tmpG = (G * s) / pas;

tmpB = (B * s) / pas;

pour (int i=0; i

pixels.setPixelColor(0, tmpR, tmpG, tmpB);

pixels.setPixelColor(15, tmpR, tmpG, tmpB);

}

pixels.show();

retard(4);

}

}

Étape 5: Tout assembler:

Tout mettre ensemble
Tout mettre ensemble

Vous pouvez simplement laisser tous vos fils connectés à votre planche à pain ou à un PVC, c'est à vous de décider (j'ai choisi de mettre un PVC sur l'arduino c'est joli et soigné comme ça).

L'étape suivante consiste à mettre des tubes thermorétractables autour de tous les fils afin que ce soit moins de gâchis.

Si vous avez choisi d'utiliser un PVC, vous devriez déjà avoir tout soudé ensemble.

Après cela, vous placez les anneaux néopixels à l'extérieur des lunettes (assurez-vous que les leds sont alignées au fond) et fixez-les en place avec du ruban adhésif ou de la colle (j'ai utilisé du ruban adhésif).

Vous pouvez choisir de coller le capteur fsr à l'élastique avec du ruban adhésif ou de le laisser seul.

Profitez de vos lunettes:)

Conseillé: