Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
HKU loyihasi - ITTT (agar shunday bo'lsa) - Yuliya Berkuver, 1B
Hech qachon stressni boshdan kechirganmisiz va o'zingizni qanday tinchlantirishni bilmayapsizmi, demak, siz ko'zoynakni ishlatib ko'ring! Siz ularni kiyib, ko'zingizni yumasiz, keyin nafas olish sxemasi o'ynaydi. Ushbu nafas olish tartibiga rioya qilgan holda, sizning nafas ritmingiz daqiqada 6 marta nafas olish va nafas olish darajasiga tushadi. Shunday qilib, u kunlik stressdan xalos bo'ladi.
Siz fsr-sensor yordamida kalitni bosib, nafas olish intensivligini kuzatishingiz mumkin.
Ushbu toturial yordamida men sizga o'zingizni dam olish ko'zoynaklaringizni bosqichma -bosqich qurishingizni ko'rsataman.
1 -qadam: Kerakli materiallar va ehtiyot qismlar:
Materiallar:
1 marta arduino bilan;
1 ta elektron jadval yoki PCV;
3x 10k rezistorlar
Simlar (Tercihen turli xil ranglar, shuning uchun qaysi narsalar erga ketayotganini, qaysi biri esa har xil pimlarga ketayotganini aniqlash osonroq bo'ladi);
Ba'zi issiqlik qisqaradigan quvurlar;
2x NeoPixel uzuk - o'rnatilgan haydovchilar bilan 16 x 5050 RGB LED;
1x kalit;
1 x FSR sensori;
1x SteamPunk ko'zoynaklari (Siz ularni ziyofat do'konida sotib olishingiz mumkin, ulardan foydalanish oson, chunki neopikselli halqa ko'zoynakka juda mos keladi. Siz har doim boshqa ko'zoynakni ishlatishga harakat qilasiz yoki o'zingiznikini yaratasiz.);
1x ko'kragingizga o'rash uchun (elastik) tasma.
Asboblar:-Laptop
-payvandlash temir
-Arduino IDE dasturi
Siz pvc -da ikkita tugmachani va kalitni ko'rasiz, men uni tugmachaga ulash uchun faqat chap tugmani ishlataman, men rasmning o'ng tomonidagi ikkinchi tugmani ishlatmayman. Men tugmachalarni pvc -ga qo'ydim, ular menga kerak emasligini va buning o'rniga kalitni ishlatishim kerakligini angladim.
Quyida men ishlatgan hamma narsaning rasmlarini ko'rasiz:
2 -qadam: Neopixel uzuklar
Oq sim neopixel halqasining orqa tarafidagi erga ulangan.
To'q sariq sim 5V ga ulangan.
Va jigarrang sim ma'lumotlar kirishiga ulangan
3 -qadam: ulanishlar
Mening non taxtam prototiplashda shunday ko'rinardi, siz buni mos yozuvlar sifatida ishlatishingiz mumkin.
Men, shuningdek, bitta tugma bilan qanday bo'lishi kerak bo'lgan simlarning sxemasini tuzdim.
4 -qadam: Kod:
Bu, ehtimol, eng samarali kod emas, lekin u men uchun ishlaydi. O'zingizni sinab ko'ring va uni yanada samaraliroq qilishga harakat qiling; P.
#qo'shing
// Qaysi
Arduino -dagi pin NeoPixels -ga ulanganmi?
#aniqlang
PIN 6
// Qaysi
tugmachaga Arduino -dagi pin ulangan
#aniqlang
BUTTON_PIN 9
// Qanaqasiga
ko'p NeoPixel Arduino -ga biriktirilganmi?
#aniqlang
NUMPIXELS 16
// Qachon
Biz NeoPixel kutubxonasini o'rnatamiz, unga qancha piksel va qaysi pinni signal yuborish kerakligini aytamiz.
// Eslatma
eski NeoPixel chiziqlar uchun uchinchi parametrni o'zgartirish kerak bo'lishi mumkin-strandtestga qarang
//
mumkin bo'lgan qiymatlar haqida qo'shimcha ma'lumot olish uchun misol.
Adafruit_NeoPixel
piksel = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
pauza
= 1; // kechikish2
int
pauza2 = 80; // fsr ishlatilganda pastga tushadi
int
pauza3 = 150; // fsr ishlatilganda bajariladi
int
kechikish = 4; // kechikish1
int
fsrPin = 0; // FSR va 10K ochilish a0 ga ulangan
int
fsrReading;
bo'sh
sozlash() {
pinMod (BUTTON_PIN, INPUT);
Serial.begin (9600);
piksel.begin (); // Bu ishga tushiradi
NeoPixel kutubxonasi.
piksel.show ();
}
bool
tugma bosilgan (ichki pin) {
digitalRead (pin) ni qaytarish;
}
bo'sh
loop () {// pin kiritish to'g'ri yoki noto'g'ri ekanligini o'qiydi
fsrReading = analogRead (fsrPin);
Serial.print ("Analog o'qish =");
Serial.print (fsrReading);
agar (tugma bosilsa (BUTTON_PIN) == rost) {
// fsr sensori ishlatilganda yorug'lik effekti
agar (fsrReading> 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.show ();
kechikish (pauza 3);
}
if (fsrReading <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.show ();
kechikish (pauza 2);
}
agar (fsrReading> 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.show ();
kechikish (pauza 3);
}
if (fsrReading <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.show ();
kechikish (pauza 2);
}
agar (fsrReading> 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.show ();
kechikish (pauza 3);
}
if (fsrReading <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.show ();
kechikish (40);
}
agar (fsrReading> 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.show ();
kechikish (pauza 3);
}
agar (fsrReading <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.show ();
kechikish (20);
}
}
boshqa {
nafas olish -ko'k (20, 100, 0, 1, 1); // oddiy
ta'siri
}
}
// To'xtatish
= o'tish o'rtasidagi kechikish
// Qadamlar
= qadamlar soni
// R, G, B = To'liq RGB qiymatlari
// Bo'sh nafas - bu ham ta'sir qiladi
fsrsensor niet gebruikt wordt. Deze void wordt in de void loop () weer aangeroepen.
bo'sh nafas olish ko'k (pauza, int qadam, bayt R, bayt G, bayt B) {
int
tmpR, tmpG, tmpB; // Harorat qiymatlari
// Tushing
uchun (int s = 1; s <= qadamlar; s ++) {
tmpR = (R * s) /
qadamlar; // Kesish xatolarining oldini olish uchun avval ko'paytirish
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0;
ipiksel.setPixelColor (0, tmpR, tmpG+1, tmpB);
piksel.setPixelColor (15, tmpR, tmpG+1, tmpB);
}
piksel.show ();
kechikish (4);
}
// Tushing
uchun (int s = 1; s <= qadamlar; s ++) {
tmpR = (R * s) /
qadamlar; // Kesish xatolarining oldini olish uchun avval ko'paytirish
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0;
ipiksel.setPixelColor (1, tmpR, tmpG+1, tmpB);piksel.setPixelColor (14, tmpR, tmpG+1, tmpB);
}
piksel.show ();
kechikish (4);
}
// Tushing
uchun (int s = 1; s <= qadamlar; s ++) {
tmpR = (R * s) /
qadamlar; // Kesish xatolarining oldini olish uchun avval ko'paytirish
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0;
ipiksel.setPixelColor (2, tmpR, tmpG+2, tmpB);piksel.setPixelColor (13, tmpR, tmpG+2, tmpB);
}
piksel.show ();
kechikish (3.5);
}
// Tushing
uchun (int s = 1; s <= qadamlar; s ++) {
tmpR = (R * s) /
qadamlar; // Kesish xatolarining oldini olish uchun avval ko'paytirish
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0;
ipiksel.setPixelColor (3, tmpR, tmpG+3, tmpB+5);piksel.setPixelColor (12, tmpR, tmpG+3, tmpB+5);
}
piksel.show ();
kechikish (3);
}
uchun (int i = 0;
ipiksel.setPixelColor (0, 0, 0, 0);piksel.setPixelColor (15, 0, 0, 0);
}
// Tushing
uchun (int s = 1; s <= qadamlar; s ++) {
tmpR = (R * s) /
qadamlar; // Kesish xatolarining oldini olish uchun avval ko'paytirish
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0;
i
piksel.setPixelColor (4, tmpR, tmpG+3, tmpB+15);piksel.setPixelColor (11, tmpR, tmpG+3, tmpB+15);
}
piksel.show ();
kechikish (3);
}
// Tushing
uchun (int s = 1; s <= qadamlar; s ++) {
tmpR = (R * s) /
qadamlar; // Kesish xatolarining oldini olish uchun avval ko'paytirish
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0;
ipiksel.setPixelColor (5, tmpR, tmpG+4, tmpB+20);piksel.setPixelColor (10, tmpR, tmpG+4, tmpB+20);
}
piksel.show ();
kechikish (2);
}
uchun (int i = 0;
ipiksel.setPixelColor (1, 0, 0, 0);
piksel.setPixelColor (14, 0, 0, 0);
}
// Tushing
uchun (int s = 1; s <= qadamlar; s ++) {
tmpR = (R * s) /
qadamlar; // Kesish xatolarining oldini olish uchun avval ko'paytirish
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0;
ipiksel.setPixelColor (6, tmpR, tmpG+2, tmpB+40);
piksel.setPixelColor (9, tmpR, tmpG+2, tmpB+40);
}
piksel.show ();
kechikish (kechikish);
}
uchun (int i = 0;
ipiksel.setPixelColor (2, 0, 0, 0);piksel.setPixelColor (13, 0, 0, 0);
}
// Tushing
uchun (int s = 1; s <= qadamlar; s ++) {
tmpR = (R * s) /
qadamlar; // Kesish xatolarining oldini olish uchun avval ko'paytirish
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0;
i
piksel.setPixelColor (7, tmpR, tmpG, tmpB+44);piksel.setPixelColor (8, tmpR, tmpG, tmpB+44);
}
piksel.show ();
kechikish (kechikish);
}
// Pastga tushing
uchun (int s = qadamlar; s> 0; s--) {
tmpR = (R * s) / qadamlar; // Qisqartirmaslik uchun birinchi navbatda ko'paytiring
xatolar
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0; i
piksel.setPixelColor (7, tmpR, tmpG, tmpB);
piksel.setPixelColor (8, tmpR, tmpG, tmpB);
}
piksel.show ();
kechikish (1);
}
// Pastga tushing
uchun (int s = qadamlar; s> 0; s--) {
tmpR = (R * s) / qadamlar; // Qisqartirmaslik uchun birinchi navbatda ko'paytiring
xatolar
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0; i
piksel.setPixelColor (6, tmpR, tmpG, tmpB);
piksel.setPixelColor (9, tmpR, tmpG, tmpB);
}
piksel.show ();
kechikish (1);
}
// Pastga tushing
uchun (int s = qadamlar; s> 0; s--) {
tmpR = (R * s) / qadamlar; // Qisqartirmaslik uchun birinchi navbatda ko'paytiring
xatolar
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0; i
piksel.setPixelColor (5, tmpR, tmpG, tmpB);
piksel.setPixelColor (10, tmpR, tmpG, tmpB);
}
piksel.show ();
kechikish (2);
}
// Pastga tushing
uchun (int s = qadamlar; s> 0; s--) {
tmpR = (R * s) / qadamlar; // Qisqartirmaslik uchun birinchi navbatda ko'paytiring
xatolar
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0; i
piksel.setPixelColor (4, tmpR, tmpG, tmpB);
piksel.setPixelColor (11, tmpR, tmpG, tmpB);
}
piksel.show ();
kechikish (2);
}
// Pastga tushing
uchun (int s = qadamlar; s> 0; s--) {
tmpR = (R * s) / qadamlar; // Qisqartirmaslik uchun birinchi navbatda ko'paytiring
xatolar
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0; i
piksel.setPixelColor (3, tmpR, tmpG, tmpB);
piksel.setPixelColor (12, tmpR, tmpG, tmpB);
}
piksel.show ();
kechikish (3);
}
// Pastga tushing
uchun (int s = qadamlar; s> 0; s--) {
tmpR = (R * s) / qadamlar; //
Kesish xatolarini oldini olish uchun birinchi navbatda ko'paytiring
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0; i
piksel.setPixelColor (2, tmpR, tmpG, tmpB);
piksel.setPixelColor (13, tmpR, tmpG, tmpB);
}
piksel.show ();
kechikish (3);
}
// Pastga tushing
uchun (int s = qadamlar; s> 0; s--) {
tmpR = (R * s) / qadamlar; // Qisqartirmaslik uchun birinchi navbatda ko'paytiring
xatolar
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0; i
piksel.setPixelColor (1, tmpR, tmpG, tmpB);
piksel.setPixelColor (14, tmpR, tmpG, tmpB);
}
piksel.show ();
kechikish (4);
}
// Pastga tushing
uchun (int s = qadamlar; s> 0; s--) {
tmpR = (R * s) / qadamlar; // Qisqartirmaslik uchun birinchi navbatda ko'paytiring
xatolar
tmpG = (G * s) / qadamlar;
tmpB = (B * s) / qadamlar;
uchun (int i = 0; i
piksel.setPixelColor (0, tmpR, tmpG, tmpB);
piksel.setPixelColor (15, tmpR, tmpG, tmpB);
}
piksel.show ();
kechikish (4);
}
}
5 -qadam: Hammasini bir joyga to'plang:
Siz barcha simlaringizni non paneli yoki PVX ga ulab qo'yishingiz mumkin, bu sizga bog'liq (men arduino ustiga PVX qo'yishni tanladim, bu juda chiroyli va chiroyli).
Keyingi qadam, barcha simlarning atrofiga issiqlik qisqaruvchi naychalarni qo'yishdir, shunda ular chalkashliklarga olib kelmaydi.
Agar siz PVXdan foydalanishni tanlagan bo'lsangiz, hozirgacha hamma narsani lehimlashingiz kerak edi.
Shundan so'ng, siz ko'zoynakning tashqi qismiga neopikselli halqalarni qo'yasiz (LEDlarning pastki qismida joylashganligiga ishonch hosil qiling) va ularni lenta yoki elim bilan mahkamlang (men tasma ishlatardim).
Siz fsr-sensorni elastik tasmaga yopishqoq lenta bilan yopishtirishni tanlashingiz mumkin.
Ko'zoynakdan rohatlaning:)