Daftar Isi:

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, November
Anonim
Kacamata Relaksasi - ITTT
Kacamata Relaksasi - ITTT
Kacamata Relaksasi - ITTT
Kacamata Relaksasi - ITTT
Kacamata Relaksasi - ITTT
Kacamata Relaksasi - ITTT

Proyek HKU - ITTT (Jika Ini Maka Itu) - Julia Berkouwer, 1B

Pernahkah Anda merasa stres dan tidak tahu cara menenangkan diri, maka Anda harus mencoba kacamata relaksasi ini! Anda memakainya dan menutup mata Anda, maka pola pernapasan akan dimainkan. Dengan mengikuti pola pernapasan ini, ritme pernapasan Anda akan turun menjadi bernapas masuk dan keluar 6 kali dalam satu menit. Melakukan hal ini melepaskan stres sehari-hari.

Anda juga dapat melacak intensitas pernapasan Anda dengan menekan tombol, menggunakan sensor fsr.

Dengan toturial ini saya akan memandu Anda melalui membangun kacamata relaksasi Anda sendiri langkah demi langkah.

Langkah 1: Bahan dan Suku Cadang yang Dibutuhkan:

Bahan dan Bagian yang Dibutuhkan
Bahan dan Bagian yang Dibutuhkan
Bahan dan Bagian yang Dibutuhkan
Bahan dan Bagian yang Dibutuhkan
Bahan dan Bagian yang Dibutuhkan
Bahan dan Bagian yang Dibutuhkan

Bahan:

1x arduino uno;

1xbreadboard atau PCV;

3x 10k resistor

Kabel (Lebih disukai warna yang berbeda sehingga lebih mudah untuk membedakan mana yang akan ke tanah dan mana yang akan ke pin yang berbeda, dll.);

Beberapa tabung panas menyusut;

2x NeoPixel Ring - LED 16 x 5050 RGB dengan Driver Terintegrasi;

1x beralih;

1x sensor FSR;

1x kacamata SteamPunk (Anda dapat membelinya di toko pesta, mudah digunakan karena cincin neopiksel sangat pas dengan kacamata. Anda selalu mencoba menggunakan kacamata lain atau membuatnya sendiri.);

1x semacam pita (elastik) untuk melingkari dada Anda.

Alat:-Laptop

-Besi solder

-Perangkat lunak Arduino IDE

Anda akan melihat dua tombol dan sakelar di pvc saya, saya hanya menggunakan tombol kiri untuk menghubungkannya ke sakelar, saya tidak menggunakan tombol kedua di sebelah kanan gambar. Saya meletakkan tombol di pvc sebelum menyadari bahwa saya tidak membutuhkannya dan saya perlu menggunakan sakelar sebagai gantinya.

Di bawah ini Anda akan melihat gambar dari semua yang saya gunakan:

Langkah 2: Cincin Neopiksel

Cincin Neopiksel
Cincin Neopiksel

Kabel putih terhubung ke ground di bagian belakang cincin neopiksel.

Kabel oranye terhubung ke 5V.

Dan kabel coklat terhubung ke input data

Langkah 3: Koneksi

Koneksi
Koneksi
Koneksi
Koneksi

Ini adalah tampilan papan tempat memotong roti saya saat membuat prototipe, Anda dapat menggunakan ini sebagai referensi.

Saya juga membuat tata letak pengkabelan yang seharusnya terlihat hanya dengan satu tombol.

Langkah 4: Kode:

Ini mungkin bukan kode yang paling efisien, tetapi berfungsi untuk saya. Tantang diri Anda dan cobalah membuatnya lebih efisien;P

#termasuk

// Yang

pin pada Arduino terhubung ke NeoPixels?

#mendefinisikan

PIN 6

// Yang

pin pada Arduino terhubung ke tombol

#mendefinisikan

BUTTON_PIN 9

// Bagaimana

banyak NeoPixels yang terpasang ke Arduino?

#mendefinisikan

NUMPIXEL 16

// Kapan

kami menyiapkan perpustakaan NeoPixel, kami memberi tahu berapa banyak piksel, dan pin mana yang digunakan untuk mengirim sinyal.

// Catatan

bahwa untuk strip NeoPixel yang lebih lama Anda mungkin perlu mengubah parameter ketiga--lihat strandtest

//

contoh untuk informasi lebih lanjut tentang nilai-nilai yang mungkin.

Adafruit_NeoPixel

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

int jeda

= 1; //tunda2

ke dalam

jeda2 = 80; // turun saat fsr digunakan

ke dalam

jeda3 = 150; // melakukan up ketika fsr sedang digunakan

ke dalam

delayval = 4; // tunda1

ke dalam

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

ke dalam

fsrMembaca;

ruang kosong

mempersiapkan() {

pinMode(BUTTON_PIN, INPUT);

Serial.begin(9600);

piksel.mulai(); // Ini menginisialisasi

perpustakaan NeoPixel.

piksel.tampilkan();

}

bool

ditekan tombol(int pin){

kembalikan digitalRead(pin);

}

ruang kosong

loop() { //membaca apakah input pin benar atau salah

fsrReading = analogRead(fsrPin);

Serial.print("Bacaan Analog = ");

Serial.print(fsrMembaca);

if (ditekan tombol(BUTTON_PIN) == benar){

//efek cahaya saat menggunakan sensor fsr

if (fsrMembaca > 50){

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

piksel.setPixelColor(15, 1, 0, 1);

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

piksel.setPixelColor(14, 1, 0, 1);

piksel.tampilkan();

tunda(jeda3);

}

if (fsrMembaca < 52){

piksel.setPixelColor(0, 0, 0, 0);

piksel.setPixelColor(15, 0, 0, 0);

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

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

piksel.tampilkan();

tunda(jeda2);

}

if (fsrMembaca > 57){

piksel.setPixelColor(2, 1, 0, 1);

piksel.setPixelColor(13, 1, 0, 1);

piksel.setPixelColor(3, 1, 0, 1);

piksel.setPixelColor(12, 1, 0, 1);

piksel.tampilkan();

tunda(jeda3);

}

if (fsrMembaca <59){

piksel.setPixelColor(2, 0, 0, 0);

piksel.setPixelColor(13, 0, 0, 0);

piksel.setPixelColor(3, 0, 0, 0);

piksel.setPixelColor(12, 0, 0, 0);

piksel.tampilkan();

tunda(jeda2);

}

if (fsrMembaca > 65){

piksel.setPixelColor(4, 1, 0, 1);

piksel.setPixelColor(11, 1, 0, 1);

piksel.setPixelColor(5, 1, 0, 1);

piksel.setPixelColor(10, 1, 0, 1);

piksel.tampilkan();

tunda(jeda3);

}

if (fsrMembaca <67){

piksel.setPixelColor(4, 0, 0, 0);

piksel.setPixelColor(11, 0, 0, 0);

piksel.setPixelColor(5, 0, 0, 0);

piksel.setPixelColor(10, 0, 0, 0);

piksel.tampilkan();

penundaan (40);

}

if (fsrMembaca > 79){

piksel.setPixelColor(6, 1, 0, 1);

piksel.setPixelColor(9, 1, 0, 1);

piksel.setPixelColor(7, 1, 0, 1);

piksel.setPixelColor(8, 1, 0, 1);

piksel.tampilkan();

tunda(jeda3);

}

if (fsrMembaca <85){

piksel.setPixelColor(6, 0, 0, 0);

piksel.setPixelColor(9, 0, 0, 0);

piksel.setPixelColor(7, 0, 0, 0);

piksel.setPixelColor(8, 0, 0, 0);

piksel.tampilkan();

penundaan (20);

}

}

lain{

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

memengaruhi

}

}

// Jeda

= penundaan antar transisi

// Langkah

= jumlah langkah

// R, G, B = Nilai RGB aktif penuh

// De void bernafas adalah voor het licht effect als de

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

void breath_blue(int jeda, langkah int, byte R, byte G, byte B) {

ke dalam

tmpR, tmpG, tmpB; // Nilai suhu

// Memudar

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

tmpR = (R * s) /

Langkah; // Kalikan terlebih dahulu untuk menghindari kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0;

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

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

}

piksel.tampilkan();

penundaan (4);

}

// Memudar

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

tmpR = (R * s) /

Langkah; // Kalikan terlebih dahulu untuk menghindari kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0;

Sayapiksel.setPixelColor(1, tmpR, tmpG+1, tmpB);piksel.setPixelColor(14, tmpR, tmpG+1, tmpB);

}

piksel.tampilkan();

penundaan (4);

}

// Memudar

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

tmpR = (R * s) /

Langkah; // Kalikan terlebih dahulu untuk menghindari kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0;

Sayapiksel.setPixelColor(2, tmpR, tmpG+2, tmpB);piksel.setPixelColor(13, tmpR, tmpG+2, tmpB);

}

piksel.tampilkan();

penundaan(3.5);

}

// Memudar

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

tmpR = (R * s) /

Langkah; // Kalikan terlebih dahulu untuk menghindari kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0;

Sayapiksel.setPixelColor(3, tmpR, tmpG+3, tmpB+5);piksel.setPixelColor(12, tmpR, tmpG+3, tmpB+5);

}

piksel.tampilkan();

penundaan (3);

}

untuk (int i=0;

Sayapiksel.setPixelColor(0, 0, 0, 0);piksel.setPixelColor(15, 0, 0, 0);

}

// Memudar

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

tmpR = (R * s) /

Langkah; // Kalikan terlebih dahulu untuk menghindari kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0;

Saya

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

}

piksel.tampilkan();

penundaan (3);

}

// Memudar

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

tmpR = (R * s) /

Langkah; // Kalikan terlebih dahulu untuk menghindari kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0;

Sayapiksel.setPixelColor(5, tmpR, tmpG+4, tmpB+20);piksel.setPixelColor(10, tmpR, tmpG+4, tmpB+20);

}

piksel.tampilkan();

penundaan (2);

}

untuk (int i=0;

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

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

}

// Memudar

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

tmpR = (R * s) /

Langkah; // Kalikan terlebih dahulu untuk menghindari kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0;

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

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

}

piksel.tampilkan();

penundaan (delayval);

}

untuk (int i=0;

Sayapiksel.setPixelColor(2, 0, 0, 0);piksel.setPixelColor(13, 0, 0, 0);

}

// Memudar

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

tmpR = (R * s) /

Langkah; // Kalikan terlebih dahulu untuk menghindari kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0;

Saya

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

}

piksel.tampilkan();

penundaan (delayval);

}

// Memudar

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

tmpR = (R * s) / langkah; // Kalikan dulu untuk menghindari pemotongan

kesalahan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0; i

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

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

}

piksel.tampilkan();

penundaan (1);

}

// Memudar

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

tmpR = (R * s) / langkah; // Kalikan dulu untuk menghindari pemotongan

kesalahan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0; i

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

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

}

piksel.tampilkan();

penundaan (1);

}

// Memudar

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

tmpR = (R * s) / langkah; // Kalikan dulu untuk menghindari pemotongan

kesalahan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0; i

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

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

}

piksel.tampilkan();

penundaan (2);

}

// Memudar

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

tmpR = (R * s) / langkah; // Kalikan dulu untuk menghindari pemotongan

kesalahan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0; i

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

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

}

piksel.tampilkan();

penundaan (2);

}

// Memudar

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

tmpR = (R * s) / langkah; // Kalikan dulu untuk menghindari pemotongan

kesalahan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0; i

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

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

}

piksel.tampilkan();

penundaan (3);

}

// Memudar

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

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

Kalikan dulu untuk menghindari kesalahan pemotongan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0; i

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

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

}

piksel.tampilkan();

penundaan (3);

}

// Memudar

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

tmpR = (R * s) / langkah; // Kalikan dulu untuk menghindari pemotongan

kesalahan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0; i

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

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

}

piksel.tampilkan();

penundaan (4);

}

// Memudar

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

tmpR = (R * s) / langkah; // Kalikan dulu untuk menghindari pemotongan

kesalahan

tmpG = (G * s) / langkah;

tmpB = (B * s) / langkah;

untuk (int i=0; i

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

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

}

piksel.tampilkan();

penundaan (4);

}

}

Langkah 5: Menyatukan Semuanya:

Menyatukan Semuanya
Menyatukan Semuanya

Anda bisa membiarkan semua kabel Anda terhubung ke papan tempat memotong roti atau PVC, itu terserah Anda (saya memilih untuk meletakkan PVC di atas arduino itu bagus dan rapi seperti itu).

Langkah selanjutnya adalah memasang tabung panas menyusut di sekitar semua kabel sehingga tidak terlalu berantakan.

Jika Anda memilih untuk menggunakan PVC maka Anda seharusnya sudah menyolder semuanya bersama-sama sekarang.

Setelah itu Anda meletakkan cincin neopixel di bagian luar kacamata (pastikan led sejajar di bagian bawah) dan kencangkan dengan selotip atau lem (saya menggunakan selotip).

Anda dapat memilih untuk menempelkan sensor fsr ke karet gelang dengan selotip atau membiarkannya begitu saja.

Selamat menikmati kacamata:)

Direkomendasikan: