Sadržaj:

Naočale za opuštanje - ITTT: 5 koraka (sa slikama)
Naočale za opuštanje - ITTT: 5 koraka (sa slikama)

Video: Naočale za opuštanje - ITTT: 5 koraka (sa slikama)

Video: Naočale za opuštanje - ITTT: 5 koraka (sa slikama)
Video: САМЫЙ ВКУСНЫЙ СОУС С МЯСОМ/ РЕЦЕПТ ТАВАДУРИ 2024, Srpanj
Anonim
Naočale za opuštanje - ITTT
Naočale za opuštanje - ITTT
Naočale za opuštanje - ITTT
Naočale za opuštanje - ITTT
Naočale za opuštanje - ITTT
Naočale za opuštanje - ITTT

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

Jeste li se ikada osjećali pod stresom i jednostavno ne znate kako se smiriti, onda biste trebali isprobati ove naočale za opuštanje! Stavite ih i zatvorite oči, a zatim će se igrati obrazac disanja. Slijedeći ovaj obrazac disanja, vaš će se disanje prenijeti na udisanje i izdisaj 6 puta u minuti. Time se oslobađate svakodnevnog stresa.

Intenzitet disanja možete pratiti i pritiskom na prekidač, pomoću fsr-senzora.

Pomoću ovog toturiala vodit ću vas kroz izgradnju vlastitih naočala za opuštanje korak po korak.

Korak 1: Potrebni materijali i dijelovi:

Potrebni materijali i dijelovi
Potrebni materijali i dijelovi
Potrebni materijali i dijelovi
Potrebni materijali i dijelovi
Potrebni materijali i dijelovi
Potrebni materijali i dijelovi

Materijali:

1x arduino uno;

1xbreadboard ili PCV;

3x 10k otpornici

Žice (po mogućnosti različite boje pa je lakše odrediti koje stvari idu na tlo, a koje na različite igle itd.);

Neke cijevi za skupljanje topline;

2x NeoPixel prsten - 16 x 5050 RGB LED sa integriranim upravljačkim programima;

1x prekidač;

1x FSR senzor;

1x SteamPunk naočale (Ove možete kupiti u party shopu, jednostavne su za upotrebu jer prsten od neopiksela savršeno pristaje na čaše. Uvijek pokušavate koristiti druge naočale ili stvoriti vlastite.);

1x stavite nekakvu (elastičnu) traku oko grudi.

Alati: -Laptop

-Lemilica

-Arduino IDE softver

Vidjet ćete dva gumba i prekidač na mom pvc -u, koristim samo lijevi gumb za spajanje na prekidač, ne koristim drugi gumb desno od slike. Stavio sam gumbe na pvc prije nego što sam shvatio da mi ne trebaju i da sam umjesto toga morao koristiti prekidač.

Ispod ćete vidjeti slike svega što sam koristio:

Korak 2: Neopixel prstenovi

Prstenovi od neopiksela
Prstenovi od neopiksela

Bijela žica spojena je na masu na stražnjoj strani neopiksela.

Narančasta žica spojena je na 5V.

Smeđa žica spojena je na ulaz podataka

Korak 3: Veze

Veze
Veze
Veze
Veze

Ovako je izgledala moja ploča tijekom izrade prototipa, možete je koristiti kao referencu.

Također sam sa samo jednim gumbom napravio raspored ožičenja kako bi trebao izgledati.

Korak 4: Kôd:

To vjerojatno nije najučinkovitiji kod, ali meni radi. Izazovite sebe i pokušajte je učiniti učinkovitijom; P

#uključi

// Koji

pin na Arduinu je spojen na NeoPixels?

#definirati

PIN 6

// Koji

pin na Arduinu povezan je s gumbom

#definirati

BUTTON_PIN 9

// Kako

mnogi NeoPixeli su spojeni na Arduino?

#definirati

BROJEVI 16

// Kada

postavljamo NeoPixel knjižnicu, govorimo joj koliko piksela i koji pin koristiti za slanje signala.

// Bilješka

da ćete za starije NeoPixel trake možda trebati promijeniti treći parametar-pogledajte strandtest

//

primjer za više informacija o mogućim vrijednostima.

Adafruit_NeoPixel

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

int stanka

= 1; // odgoda2

int

pauza2 = 80; // pada prema dolje kada se koristi fsr

int

pauza3 = 150; // dotjerivanje kada se koristi fsr

int

delayval = 4; // odgoda1

int

fsrPin = 0; // FSR i 10K padajući izbornik povezani su s a0

int

fsrReading;

poništiti

postaviti() {

pinMode (BUTTON_PIN, INPUT);

Serial.begin (9600);

pikseli.begin (); // Ovo inicijalizira

Knjižnica NeoPixel.

pikseli.show ();

}

bool

pritisnuto na gumb (int pin) {

return digitalRead (pin);

}

poništiti

loop () {// čita je li pin input istinit ili false

fsrReading = analogRead (fsrPin);

Serial.print ("Analogno čitanje =");

Serial.print (fsrReading);

if (pritisnuto dugme (BUTTON_PIN) == true) {

// svjetlosni efekt pri upotrebi fsr senzora

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

pikseli.show ();

odgoda (pauza3);

}

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

pikseli.show ();

odgoda (pauza2);

}

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

pikseli.show ();

odgoda (pauza3);

}

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

pikseli.show ();

odgoda (pauza2);

}

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

pikseli.show ();

odgoda (pauza3);

}

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

pikseli.show ();

kašnjenje (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);

pikseli.show ();

odgoda (pauza3);

}

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

pikseli.show ();

kašnjenje (20);

}

}

drugo{

disati_plavo (20, 100, 0, 1, 1); // normalno

utjecaj

}

}

// Pauza

= kašnjenje između prijelaza

// Koraci

= broj koraka

// R, G, B = Potpune RGB vrijednosti

// De void dishe is voor het licht effect als de

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

voidreathe_blue (int pauza, int koraci, byte R, byte G, bajt B) {

int

tmpR, tmpG, tmpB; // Temp vrijednosti

// Fade up

za (int s = 1; s <= koraci; s ++) {

tmpR = (R * s) /

koraci; // Najprije se pomnožite kako biste izbjegli pogreške pri skraćivanju

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0;

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

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

}

pikseli.show ();

kašnjenje (4);

}

// Fade up

za (int s = 1; s <= koraci; s ++) {

tmpR = (R * s) /

koraci; // Najprije se pomnožite kako biste izbjegli pogreške pri skraćivanju

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0;

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

}

pikseli.show ();

kašnjenje (4);

}

// Fade up

za (int s = 1; s <= koraci; s ++) {

tmpR = (R * s) /

koraci; // Najprije se pomnožite kako biste izbjegli pogreške pri skraćivanju

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0;

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

}

pikseli.show ();

kašnjenje (3,5);

}

// Fade up

za (int s = 1; s <= koraci; s ++) {

tmpR = (R * s) /

koraci; // Najprije se pomnožite kako biste izbjegli pogreške pri skraćivanju

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0;

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

}

pikseli.show ();

kašnjenje (3);

}

za (int i = 0;

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

}

// Fade up

za (int s = 1; s <= koraci; s ++) {

tmpR = (R * s) /

koraci; // Najprije se pomnožite kako biste izbjegli pogreške pri skraćivanju

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0;

i

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

}

pikseli.show ();

kašnjenje (3);

}

// Fade up

za (int s = 1; s <= koraci; s ++) {

tmpR = (R * s) /

koraci; // Najprije se pomnožite kako biste izbjegli pogreške pri skraćivanju

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0;

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

}

pikseli.show ();

kašnjenje (2);

}

za (int i = 0;

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

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

}

// Fade up

za (int s = 1; s <= koraci; s ++) {

tmpR = (R * s) /

koraci; // Najprije se pomnožite kako biste izbjegli pogreške pri skraćivanju

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0;

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

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

}

pikseli.show ();

odgoda (delayval);

}

za (int i = 0;

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

}

// Fade up

za (int s = 1; s <= koraci; s ++) {

tmpR = (R * s) /

koraci; // Najprije se pomnožite kako biste izbjegli pogreške pri skraćivanju

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0;

i

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

}

pikseli.show ();

odgoda (delayval);

}

// Smanjivanje

za (int s = koraci; s> 0; s--) {

tmpR = (R * s) / koraci; // Najprije se pomnožite kako biste izbjegli skraćivanje

pogreške

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0; i

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

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

}

pikseli.show ();

odgoda (1);

}

// Smanjivanje

za (int s = koraci; s> 0; s--) {

tmpR = (R * s) / koraci; // Najprije se pomnožite kako biste izbjegli skraćivanje

pogreške

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0; i

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

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

}

pikseli.show ();

odgoda (1);

}

// Smanjivanje

za (int s = koraci; s> 0; s--) {

tmpR = (R * s) / koraci; // Najprije se pomnožite kako biste izbjegli skraćivanje

pogreške

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0; i

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

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

}

pikseli.show ();

kašnjenje (2);

}

// Smanjivanje

za (int s = koraci; s> 0; s--) {

tmpR = (R * s) / koraci; // Najprije se pomnožite kako biste izbjegli skraćivanje

pogreške

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0; i

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

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

}

pikseli.show ();

kašnjenje (2);

}

// Smanjivanje

za (int s = koraci; s> 0; s--) {

tmpR = (R * s) / koraci; // Najprije se pomnožite kako biste izbjegli skraćivanje

pogreške

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0; i

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

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

}

pikseli.show ();

kašnjenje (3);

}

// Smanjivanje

za (int s = koraci; s> 0; s--) {

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

Prvo pomnožite kako biste izbjegli pogreške pri skraćivanju

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0; i

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

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

}

pikseli.show ();

kašnjenje (3);

}

// Smanjivanje

za (int s = koraci; s> 0; s--) {

tmpR = (R * s) / koraci; // Najprije se pomnožite kako biste izbjegli skraćivanje

pogreške

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0; i

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

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

}

pikseli.show ();

kašnjenje (4);

}

// Smanjivanje

za (int s = koraci; s> 0; s--) {

tmpR = (R * s) / koraci; // Najprije se pomnožite kako biste izbjegli skraćivanje

pogreške

tmpG = (G * s) / koraci;

tmpB = (B * s) / koraci;

za (int i = 0; i

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

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

}

pikseli.show ();

kašnjenje (4);

}

}

Korak 5: Sve spojite:

Spajanje svega
Spajanje svega

Mogli ste jednostavno ostaviti sve svoje žice spojene na vašu matičnu ploču ili PVC, to je na vama (ja sam odlučio staviti PVC na vrh arduina, tako je lijepo i uredno).

Sljedeći korak je staviti cijevi za skupljanje topline oko svih žica tako da bude manje nereda.

Ako ste odlučili koristiti PVC, do sada ste već trebali sve zalemiti.

Nakon toga stavite neopixel prstenove na vanjsku stranu naočala (provjerite jesu li LED diode poravnate na dnu) i pričvrstite ih na mjesto nekom trakom ili ljepilom (ja sam koristila traku).

Možete odabrati da zalijepite fsr-senzor na elastičnu traku nekom vrpcom ili ga samo izostavite.

Uživajte u naočarima:)

Preporučeni: