Inhoudsopgave:

Ontspanningsbril - ITTT - Ajarnpa
Ontspanningsbril - ITTT - Ajarnpa

Video: Ontspanningsbril - ITTT - Ajarnpa

Video: Ontspanningsbril - ITTT - Ajarnpa
Video: มีแค่ 2 ข้อนี้ ชีวิตคู่ของคุณจะไม่มีปัญหาอีกเลย 2024, November
Anonim
Ontspanningsbril - ITTT
Ontspanningsbril - ITTT
Ontspanningsbril - ITTT
Ontspanningsbril - ITTT
Ontspanningsbril - ITTT
Ontspanningsbril - ITTT

HKU-project - ITTT (Als dit dan dat) - Julia Berkouwer, 1B

Heb je je ooit gestrest gevoeld en weet je gewoon niet hoe je jezelf moet kalmeren, dan moet je deze ontspanningsbril eens proberen! Je doet ze aan en sluit je ogen, dan speelt er een ademhalingspatroon. Door dit ademhalingspatroon te volgen, gaat je ademhalingsritme terug naar 6 keer per minuut in- en uitademen. Door dit te doen, wordt de dagelijkse stress verlicht.

Je kunt je ademhalingsintensiteit ook volgen door een schakelaar om te draaien met behulp van een fsr-sensor.

Met deze handleiding begeleid ik je stap voor stap bij het bouwen van je eigen relaxbril.

Stap 1: Benodigde materialen en onderdelen:

Benodigde materialen en onderdelen
Benodigde materialen en onderdelen
Benodigde materialen en onderdelen
Benodigde materialen en onderdelen
Benodigde materialen en onderdelen
Benodigde materialen en onderdelen

Materialen:

1x arduino uno;

1x breadboard of PCV;

3x 10k weerstanden

Draden (bij voorkeur verschillende kleuren, zodat het gemakkelijker is om te zien welke dingen naar de grond gaan en welke naar verschillende pinnen, enz.);

Sommige krimpkousen;

2x NeoPixel Ring - 16 x 5050 RGB LED met geïntegreerde drivers;

1x schakelaar;

1x FSR-sensor;

1x SteamPunk-bril (Deze kun je kopen bij een feestwinkel, ze zijn gemakkelijk te gebruiken omdat de neopixel-ring perfect op de bril past. Je probeert altijd een andere bril te gebruiken of je eigen bril te maken.);

1x een soort (elastiek) bandje om om je borst te doen.

Hulpmiddelen:-Laptop

-Soldeerbout

-Arduino IDE-software

Je ziet twee knoppen en een schakelaar op mijn pvc, ik gebruik alleen de linkerknop om hem aan te sluiten op de schakelaar, ik gebruik niet de tweede knop aan de rechterkant van de foto. Ik plaatste de knoppen op het pvc voordat ik me realiseerde dat ik ze niet nodig had en in plaats daarvan een schakelaar moest gebruiken.

Hieronder zie je foto's van alles wat ik heb gebruikt:

Stap 2: Neopixel-ringen

Neopixel-ringen
Neopixel-ringen

De witte draad is verbonden met de aarde aan de achterkant van de neopixelring.

De oranje draad is aangesloten op de 5V.

En de bruine draad is verbonden met de data-ingang

Stap 3: Aansluitingen

Verbindingen
Verbindingen
Verbindingen
Verbindingen

Dit is hoe mijn breadboard eruit zag tijdens het maken van een prototype, je kunt dit als referentie gebruiken.

Ik heb ook een lay-out gemaakt van de bedrading van hoe het eruit moet zien met slechts één knop.

Stap 4: De code:

Het is waarschijnlijk niet de meest efficiënte code, maar het werkt voor mij. Daag jezelf uit en probeer het efficiënter te maken;P

#erbij betrekken

// Die

pin op de Arduino is verbonden met de NeoPixels?

#definiëren

PIN 6

// Die

pin op de Arduino is verbonden met de knop

#definiëren

BUTTON_PIN 9

// Hoe

veel NeoPixels zijn aangesloten op de Arduino?

#definiëren

NUMPIXELS 16

// Wanneer

we stellen de NeoPixel-bibliotheek in, we vertellen hem hoeveel pixels en welke pin we moeten gebruiken om signalen te verzenden.

// Opmerking

dat u voor oudere NeoPixel-strips mogelijk de derde parameter moet wijzigen - zie de strandtest

//

voorbeeld voor meer informatie over mogelijke waarden.

Adafruit_NeoPixel

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

int pauze

= 1; //vertraging2

int

pauze2 = 80; // naar beneden gaan wanneer fsr wordt gebruikt

int

pauze3 = 150; // omhoog doen wanneer fsr wordt gebruikt

int

vertragingswaarde = 4; // vertraging1

int

fsrPin = 0; // de FSR en 10K pulldown zijn verbonden met a0

int

fsrLezen;

leegte

opstelling() {

pinMode (BUTTON_PIN, INPUT);

Serieel.begin(9600);

pixels.begin(); // Dit initialiseert de

NeoPixel-bibliotheek.

pixels.show();

}

bool

ingedrukt (int pin){

retour digitalRead (pin);

}

leegte

loop () {// leest of pin-invoer waar of onwaar is

fsrReading = analoogRead(fsrPin);

Serial.print("Analoge uitlezing = ");

Serial.print (fsrReading);

if (knop ingedrukt (BUTTON_PIN) == waar){

// lichteffect bij gebruik van fsr-sensor

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

vertraging (pauze3);

}

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

vertraging (pauze2);

}

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

vertraging (pauze3);

}

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

vertraging (pauze2);

}

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

vertraging (pauze3);

}

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

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

vertraging (pauze3);

}

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

vertraging(20);

}

}

anders{

ademen_blauw (20, 100, 0, 1, 1); // normaal

effect

}

}

// Pauze

= vertraging tussen overgangen

// Stappen

= aantal stappen

// R, G, B = Volledige RGB-waarden

// De leegte ademen is voor het licht effect als de

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

void breath_blue (int pauze, int stappen, byte R, byte G, byte B) {

int

tmpR, tmpG, tmpB; // Temp-waarden

// Vervagen

voor (int s=1; s<=stappen; s++) {

tmpR = (R * s) /

stappen; // Vermenigvuldig eerst om afbreekfouten te voorkomen

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0;

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

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

}

pixels.show();

vertraging(4);

}

// Vervagen

voor (int s=1; s<=stappen; s++) {

tmpR = (R * s) /

stappen; // Eerst vermenigvuldigen om afbreekfouten te voorkomen

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0;

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

}

pixels.show();

vertraging(4);

}

// Vervagen

voor (int s=1; s<=stappen; s++) {

tmpR = (R * s) /

stappen; // Eerst vermenigvuldigen om afbreekfouten te voorkomen

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0;

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

}

pixels.show();

vertraging (3.5);

}

// Vervagen

voor (int s=1; s<=stappen; s++) {

tmpR = (R * s) /

stappen; // Eerst vermenigvuldigen om afbreekfouten te voorkomen

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0;

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

}

pixels.show();

vertraging (3);

}

voor (int i=0;

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

}

// Vervagen

voor (int s=1; s<=stappen; s++) {

tmpR = (R * s) /

stappen; // Vermenigvuldig eerst om afbreekfouten te voorkomen

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0;

l

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

}

pixels.show();

vertraging (3);

}

// Vervagen

voor (int s=1; s<=stappen; s++) {

tmpR = (R * s) /

stappen; // Vermenigvuldig eerst om afbreekfouten te voorkomen

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0;

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

}

pixels.show();

vertraging(2);

}

voor (int i=0;

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

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

}

// Vervagen

voor (int s=1; s<=stappen; s++) {

tmpR = (R * s) /

stappen; // Eerst vermenigvuldigen om afbreekfouten te voorkomen

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0;

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

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

}

pixels.show();

vertraging (vertragingswaarde);

}

voor (int i=0;

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

}

// Vervagen

voor (int s=1; s<=stappen; s++) {

tmpR = (R * s) /

stappen; // Eerst vermenigvuldigen om afbreekfouten te voorkomen

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0;

l

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

}

pixels.show();

vertraging (vertragingswaarde);

}

// Vervagen

voor (int s=stappen; s>0; s--) {

tmpR = (R * s) / stappen; // Vermenigvuldig eerst om afkappen te voorkomen

fouten

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0; i

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

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

}

pixels.show();

vertraging(1);

}

// Vervagen

voor (int s=stappen; s>0; s--) {

tmpR = (R * s) / stappen; // Vermenigvuldig eerst om afkappen te voorkomen

fouten

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0; i

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

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

}

pixels.show();

vertraging(1);

}

// Vervagen

voor (int s=stappen; s>0; s--) {

tmpR = (R * s) / stappen; // Vermenigvuldig eerst om afkappen te voorkomen

fouten

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0; i

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

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

}

pixels.show();

vertraging(2);

}

// Vervagen

voor (int s=stappen; s>0; s--) {

tmpR = (R * s) / stappen; // Vermenigvuldig eerst om afkappen te voorkomen

fouten

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0; i

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

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

}

pixels.show();

vertraging(2);

}

// Vervagen

voor (int s=stappen; s>0; s--) {

tmpR = (R * s) / stappen; // Vermenigvuldig eerst om afkappen te voorkomen

fouten

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0; i

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

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

}

pixels.show();

vertraging (3);

}

// Vervagen

voor (int s=stappen; s>0; s--) {

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

Vermenigvuldig eerst om afbreekfouten te voorkomen

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0; i

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

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

}

pixels.show();

vertraging (3);

}

// Vervagen

voor (int s=stappen; s>0; s--) {

tmpR = (R * s) / stappen; // Vermenigvuldig eerst om afkappen te voorkomen

fouten

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0; i

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

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

}

pixels.show();

vertraging(4);

}

// Vervagen

voor (int s=stappen; s>0; s--) {

tmpR = (R * s) / stappen; // Vermenigvuldig eerst om afkappen te voorkomen

fouten

tmpG = (G * s) / stappen;

tmpB = (B * s) / stappen;

voor (int i=0; i

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

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

}

pixels.show();

vertraging(4);

}

}

Stap 5: Alles samenvoegen:

Alles samenvoegen
Alles samenvoegen

Je kunt gewoon al je draden aangesloten laten op je breadboard of een PVC, dat is aan jou (ik heb ervoor gekozen om een PVC op de Arduino te plaatsen, het is mooi en netjes op die manier).

De volgende stap is om krimpkousen rond alle draden te plaatsen, zodat het minder rommelig wordt.

Als je ervoor hebt gekozen om een PVC te gebruiken, dan zou je nu alles aan elkaar moeten hebben gesoldeerd.

Daarna plaats je de neopixel ringen aan de buitenkant van de bril (zorg dat de leds aan de onderkant goed uitgelijnd zijn) en zet je ze vast met wat tape of lijm (ik gebruikte tape).

Je kunt ervoor kiezen om de fsr-sensor met wat tape op de elastische band te plakken of hem gewoon los te laten.

Veel plezier met je bril:)