Isi kandungan:

Kacamata Relaksasi - ITTT: 5 Langkah (dengan Gambar)
Kacamata Relaksasi - ITTT: 5 Langkah (dengan Gambar)

Video: Kacamata Relaksasi - ITTT: 5 Langkah (dengan Gambar)

Video: Kacamata Relaksasi - ITTT: 5 Langkah (dengan Gambar)
Video: Tes Mata Minus Online - VIO Optical Clinic 2024, Julai
Anonim
Kacamata Relaksasi - ITTT
Kacamata Relaksasi - ITTT
Kacamata Relaksasi - ITTT
Kacamata Relaksasi - ITTT
Kacamata Relaksasi - ITTT
Kacamata Relaksasi - ITTT

Projek HKU - ITTT (Jika Ini Kemudian) - Julia Berkouwer, 1B

Adakah anda pernah merasa tertekan dan anda tidak tahu bagaimana menenangkan diri, maka anda harus mencuba kacamata relaksasi ini! Anda meletakkannya dan menutup mata anda, maka corak pernafasan akan dimainkan. Dengan mengikuti corak pernafasan ini, pernafasan anda akan bernafas masuk dan keluar 6 kali seminit. Melakukan ini melepaskan tekanan setiap hari.

Anda juga dapat mengesan intensiti pernafasan anda dengan menghidupkan suis, menggunakan sensor fsr.

Dengan toturial ini saya akan membimbing anda untuk membina kacamata relaksasi anda sendiri selangkah demi selangkah.

Langkah 1: Bahan dan Bahagian yang Diperlukan:

Bahan dan Bahagian yang Diperlukan
Bahan dan Bahagian yang Diperlukan
Bahan dan Bahagian yang Diperlukan
Bahan dan Bahagian yang Diperlukan
Bahan dan Bahagian yang Diperlukan
Bahan dan Bahagian yang Diperlukan

Bahan:

1x arduino uno;

1xbreadboard atau PCV;

Perintang 3x 10k

Wayar (Lebih disukai warna yang berbeza sehingga lebih mudah untuk mengetahui perkara mana yang menuju ke tanah dan yang mana yang akan ke pin yang berbeza, dll.);

Beberapa tiub pengecutan haba;

2x NeoPixel Ring - 16 x 5050 RGB LED dengan Pemacu Bersepadu;

Suis 1x;

Sensor FSR 1x;

1x kacamata SteamPunk (Anda boleh membelinya di kedai pesta, ia mudah digunakan kerana cincin neopixel sangat sesuai pada cermin mata. Anda selalu mencuba menggunakan kacamata lain atau membuat sendiri.);

1x sejenis band (elastick) untuk diletakkan di dada anda.

Alatan:-Laptop

-Besi pematerian

-Arduino IDE perisian

Anda akan melihat dua butang dan suis pada pvc saya, saya hanya menggunakan butang kiri untuk menyambungkannya ke suis, saya tidak menggunakan butang kedua di sebelah kanan gambar. Saya meletakkan butang pada pvc sebelum menyedari bahawa saya tidak memerlukannya dan saya perlu menggunakan suis sebagai gantinya.

Di bawah ini anda akan melihat gambar semua yang saya gunakan:

Langkah 2: Cincin Neopixel

Cincin Neopixel
Cincin Neopixel

Kawat putih disambungkan ke tanah di bahagian belakang cincin neopixel.

Kawat jingga disambungkan ke 5V.

Dan wayar coklat disambungkan ke input data

Langkah 3: Sambungan

Sambungan
Sambungan
Sambungan
Sambungan

Seperti paparan papan roti saya semasa membuat prototaip, anda boleh menggunakannya sebagai rujukan.

Saya juga membuat susun atur pendawaian seperti apa seharusnya dengan hanya satu butang.

Langkah 4: Kod:

Ia mungkin bukan kod yang paling berkesan, tetapi ia berfungsi untuk saya. Tentukan diri anda dan cuba menjadikannya lebih cekap; h

#sertakan

// Yang mana

pin pada Arduino disambungkan ke NeoPixels?

#tentukan

PIN 6

// Yang mana

pin pada Arduino disambungkan ke butang

#tentukan

BUTTON_PIN 9

// Bagaimana

banyak NeoPixels yang melekat pada Arduino?

#tentukan

NUMPIXEL 16

// Bila

kami menyediakan pustaka NeoPixel, kami memberitahu berapa piksel, dan pin mana yang akan digunakan untuk menghantar isyarat.

// Catatan

bahawa untuk jalur NeoPixel yang lebih tua, anda mungkin perlu menukar parameter ketiga - lihat rentetan

//

contoh untuk maklumat lebih lanjut mengenai nilai yang mungkin.

Adafruit_NeoPixel

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

jeda int

= 1; // kelewatan2

int

jeda2 = 80; // turun ketika fsr sedang digunakan

int

jeda3 = 150; // lakukan ketika fsr sedang digunakan

int

kelewatan = 4; // kelewatan1

int

fsrPin = 0; // pulldown FSR dan 10K disambungkan ke a0

int

fsrReading;

batal

persediaan () {

pinMode (BUTTON_PIN, INPUT);

Serial.begin (9600);

piksel.begin (); // Ini memulakan

Perpustakaan NeoPixel.

piksel.show ();

}

bool

tekan butang (int pin) {

pulangkan digitalRead (pin);

}

batal

gelung () {// membaca sama ada input pin betul atau salah

fsrReading = analogRead (fsrPin);

Serial.print ("Bacaan analog =");

Serial.print (fsrReading);

jika (ditekan butang (BUTTON_PIN) == benar) {

// kesan cahaya semasa menggunakan sensor fsr

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

piksel.show ();

kelewatan (jeda3);

}

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

piksel.show ();

kelewatan (jeda2);

}

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

piksel.show ();

kelewatan (jeda3);

}

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

piksel.show ();

kelewatan (jeda2);

}

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

piksel.show ();

kelewatan (jeda3);

}

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

piksel.show ();

kelewatan (40);

}

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

piksel.show ();

kelewatan (jeda3);

}

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

piksel.show ();

kelewatan (20);

}

}

lain {

nafas_blue (20, 100, 0, 1, 1); // biasa

kesan

}

}

// Jeda

= kelewatan antara peralihan

// Langkah-langkah

= bilangan langkah

// R, G, B = Nilai RGB penuh

// De void bernafas adalah buruk tetapi juga kesannya

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

kekosongan nafas kosong (int pause, int step, byte R, byte G, bait B) {

int

tmpR, tmpG, tmpB; // Nilai suhu

// Pudar

untuk (int s = 1; s <= langkah; s ++) {

tmpR = (R * s) /

langkah-langkah; // Gandakan terlebih dahulu untuk mengelakkan kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0;

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

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

}

piksel.show ();

kelewatan (4);

}

// Pudar

untuk (int s = 1; s <= langkah; s ++) {

tmpR = (R * s) /

langkah-langkah; // Gandakan terlebih dahulu untuk mengelakkan kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0;

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

}

piksel.show ();

kelewatan (4);

}

// Pudar

untuk (int s = 1; s <= langkah; s ++) {

tmpR = (R * s) /

langkah-langkah; // Gandakan terlebih dahulu untuk mengelakkan kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0;

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

}

piksel.show ();

kelewatan (3.5);

}

// Pudar

untuk (int s = 1; s <= langkah; s ++) {

tmpR = (R * s) /

langkah-langkah; // Gandakan terlebih dahulu untuk mengelakkan kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0;

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

}

piksel.show ();

kelewatan (3);

}

untuk (int i = 0;

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

}

// Pudar

untuk (int s = 1; s <= langkah; s ++) {

tmpR = (R * s) /

langkah-langkah; // Gandakan terlebih dahulu untuk mengelakkan kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0;

i

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

}

piksel.show ();

kelewatan (3);

}

// Pudar

untuk (int s = 1; s <= langkah; s ++) {

tmpR = (R * s) /

langkah-langkah; // Gandakan terlebih dahulu untuk mengelakkan kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0;

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

}

piksel.show ();

kelewatan (2);

}

untuk (int i = 0;

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

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

}

// Pudar

untuk (int s = 1; s <= langkah; s ++) {

tmpR = (R * s) /

langkah-langkah; // Gandakan terlebih dahulu untuk mengelakkan kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0;

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

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

}

piksel.show ();

kelewatan (delayval);

}

untuk (int i = 0;

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

}

// Pudar

untuk (int s = 1; s <= langkah; s ++) {

tmpR = (R * s) /

langkah-langkah; // Gandakan terlebih dahulu untuk mengelakkan kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0;

i

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

}

piksel.show ();

kelewatan (delayval);

}

// Pudar

untuk (int s = langkah; s> 0; s--) {

tmpR = (R * s) / langkah; // Gandakan terlebih dahulu untuk mengelakkan pemotongan

kesilapan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0; i

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

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

}

piksel.show ();

kelewatan (1);

}

// Pudar

untuk (int s = langkah; s> 0; s--) {

tmpR = (R * s) / langkah; // Gandakan terlebih dahulu untuk mengelakkan pemotongan

kesilapan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0; i

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

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

}

piksel.show ();

kelewatan (1);

}

// Pudar

untuk (int s = langkah; s> 0; s--) {

tmpR = (R * s) / langkah; // Gandakan terlebih dahulu untuk mengelakkan pemotongan

kesilapan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0; i

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

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

}

piksel.show ();

kelewatan (2);

}

// Pudar

untuk (int s = langkah; s> 0; s--) {

tmpR = (R * s) / langkah; // Gandakan terlebih dahulu untuk mengelakkan pemotongan

kesilapan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0; i

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

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

}

piksel.show ();

kelewatan (2);

}

// Pudar

untuk (int s = langkah; s> 0; s--) {

tmpR = (R * s) / langkah; // Gandakan terlebih dahulu untuk mengelakkan pemotongan

kesilapan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0; i

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

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

}

piksel.show ();

kelewatan (3);

}

// Pudar

untuk (int s = langkah; s> 0; s--) {

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

Gandakan terlebih dahulu untuk mengelakkan kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0; i

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

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

}

piksel.show ();

kelewatan (3);

}

// Pudar

untuk (int s = langkah; s> 0; s--) {

tmpR = (R * s) / langkah; // Gandakan terlebih dahulu untuk mengelakkan pemotongan

kesilapan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0; i

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

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

}

piksel.show ();

kelewatan (4);

}

// Pudar

untuk (int s = langkah; s> 0; s--) {

tmpR = (R * s) / langkah; // Gandakan terlebih dahulu untuk mengelakkan pemotongan

kesilapan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i = 0; i

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

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

}

piksel.show ();

kelewatan (4);

}

}

Langkah 5: Menggabungkan Semuanya:

Menggabungkan Semuanya
Menggabungkan Semuanya

Anda boleh membiarkan semua wayar anda disambungkan ke papan roti atau PVC, terpulang kepada anda (saya memilih untuk meletakkan PVC di atas arduino itu bagus dan kemas dengan cara itu).

Langkah seterusnya adalah meletakkan tiub penyusutan haba di sekitar semua wayar sehingga kurang berantakan.

Sekiranya anda memilih untuk menggunakan PVC maka anda sudah semestinya menyolder semuanya sekarang.

Selepas itu, anda meletakkan cincin neopixel di bahagian luar kacamata (pastikan lekukan diselaraskan di bahagian pantat) dan pasangkannya dengan pita atau gam (saya menggunakan pita).

Anda boleh memilih untuk melekatkan sensor fsr pada jalur elastik dengan beberapa pita atau membiarkannya keluar sendiri.

Nikmati kacamata anda:)

Disyorkan: