Isi kandungan:
- Langkah 1: Bahan dan Bahagian yang Diperlukan:
- Langkah 2: Cincin Neopixel
- Langkah 3: Sambungan
- Langkah 4: Kod:
- Langkah 5: Menggabungkan Semuanya:
Video: Kacamata Relaksasi - ITTT: 5 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:12
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:
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
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
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:
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:
AI Aids Eyes (Sistem Penglihatan Komputer untuk Mengingatkan Pengendali Memakai Kacamata Keselamatan): 4 Langkah
AI Aids Eyes (Sistem Penglihatan Komputer untuk Mengingatkan Pengendali Memakai Kacamata Keselamatan): Berikut adalah demo sistem. Apabila sistem mengesan bahawa gerudi diambil, secara automatik akan mengeluarkan amaran kacamata keselamatan. Untuk mewakili kehadiran amaran kacamata keselamatan, sempadan gambar RGB berwarna merah dalam demo
Kacamata Latihan Kesalahan Bergantian Voltan Tinggi [ATtiny13]: 5 Langkah (dengan Gambar)
Kacamata Latihan Kesalahan Bervariasi Voltan Tinggi [ATtiny13]: Dalam arahan pertama saya, saya telah menerangkan cara membina peranti yang semestinya sangat membantu seseorang yang ingin merawat amblyopia (mata malas). Reka bentuknya sangat sederhana dan mempunyai beberapa kekurangan (ia memerlukan penggunaan dua bateri dan cecair
Kaca Kristal Cecair untuk Amblyopia (Kacamata Latihan Penggantian Alternatif) [ATtiny13]: 10 Langkah (dengan Gambar)
Kacamata Kristal Cecair untuk Amblyopia (Kacamata Latihan Penggabungan Alternatif) [ATtiny13]: Amblyopia (mata malas), gangguan penglihatan yang mempengaruhi kira-kira 3% populasi, biasanya dirawat dengan cantuman mata sederhana atau titisan atropin. Malangnya, kaedah rawatan tersebut merangkumi mata yang lebih kuat untuk jangka masa yang lama dan tidak terganggu, tidak
Kacamata Realiti Maya dan Campuran: 15 Langkah (dengan Gambar)
Kacamata Realiti Maya dan Campuran: Pengenalan: Semasa kursus master Teknologi untuk Konsep Reka Bentuk, kami diminta untuk meneroka teknologi baru yang sesuai dengan projek utama kami dan menguji teknologi ini dengan membuat prototaip. Teknologi yang kami pilih adalah realiti maya
Kacamata Keselamatan LED yang boleh dicas semula: 3 Langkah (dengan Gambar)
Kaca Keselamatan LED yang boleh dicas semula: Inilah cara untuk menyusun bateri boleh dicas semula kamera digital dengan cermin mata keselamatan LED. Latar belakang: Beberapa saat kemudian, saya membeli sepasang klip tersebut pada lampu LED yang melekat pada lengan cermin mata. Pada mulanya, mereka bekerja hebat. Tetapi setelah beberapa jam penggunaan