جدول المحتويات:

نظارات الاسترخاء - ITTT: 5 خطوات (بالصور)
نظارات الاسترخاء - ITTT: 5 خطوات (بالصور)

فيديو: نظارات الاسترخاء - ITTT: 5 خطوات (بالصور)

فيديو: نظارات الاسترخاء - ITTT: 5 خطوات (بالصور)
فيديو: اتهموها باستغلال الموقف.. ممرضة أميركية تنشر فيديو غريب من داخل مستشفى 2024, شهر نوفمبر
Anonim
نظارات الاسترخاء - ITTT
نظارات الاسترخاء - ITTT
نظارات الاسترخاء - ITTT
نظارات الاسترخاء - ITTT
نظارات الاسترخاء - ITTT
نظارات الاسترخاء - ITTT

مشروع HKU - ITTT (إذا كان هذا بعد ذلك) - جوليا بيركوير ، 1B

هل سبق لك أن شعرت بالتوتر ولا تعرف كيف تهدئ نفسك ، فعليك أن تجرب نظارات الاسترخاء هذه! تضعها وتغلق عينيك ، ثم سيلعب نمط التنفس. باتباع نمط التنفس هذا ، فإن نظام التنفس الخاص بك سينخفض إلى الشهيق والزفير 6 مرات في الدقيقة. القيام بذلك يخفف الضغط اليومي.

يمكنك أيضًا تتبع شدة تنفسك عن طريق الضغط على مفتاح باستخدام مستشعر fsr.

مع هذا البرنامج الشامل ، سوف أرشدك خلال بناء نظارات الاسترخاء الخاصة بك خطوة بخطوة.

الخطوة الأولى: المواد والأجزاء المطلوبة:

المواد والأجزاء المطلوبة
المواد والأجزاء المطلوبة
المواد والأجزاء المطلوبة
المواد والأجزاء المطلوبة
المواد والأجزاء المطلوبة
المواد والأجزاء المطلوبة

المواد:

1x اردوينو أونو ؛

1xbreadboard أو PCV ؛

3x 10 كيلو مقاومات

الأسلاك (يفضل ألوان مختلفة لذلك من السهل معرفة الأشياء التي ستسقط على الأرض وأيها ستذهب إلى دبابيس مختلفة ، وما إلى ذلك) ؛

بعض أنابيب الانكماش الحراري.

2x NeoPixel Ring - 16 × 5050 RGB LED مع برامج تشغيل مدمجة ؛

1x التبديل

مستشعر 1x FSR

1x SteamPunk من النظارات الواقية (يمكنك شرائها من متجر الحفلات ، فهي سهلة الاستخدام لأن حلقة neopixel تتناسب تمامًا مع النظارات. تحاول دائمًا استخدام نظارات أخرى أو إنشاء نظاراتك الخاصة) ؛

1x نوع من رباط (مطاطي) لوضعه حول صدرك.

الأدوات: - كمبيوتر محمول

-لحام حديد

-Arduino IDE البرمجيات

سترى زرين ومفتاحًا على بولي كلوريد الفينيل ، وأنا أستخدم الزر الأيسر فقط لتوصيله بالمفتاح ، ولا أستخدم الزر الثاني على يمين الصورة. أضع الأزرار على PVC قبل أن أدرك أنني لست بحاجة إليها واحتجت إلى استخدام مفتاح بدلاً من ذلك.

أدناه سترى صورًا لكل ما استخدمته:

الخطوة 2: حلقات Neopixel

حلقات Neopixel
حلقات Neopixel

السلك الأبيض متصل بالأرضي خلف حلقة نيوبكسل.

السلك البرتقالي متصل بـ 5V.

والسلك البني متصل بإدخال البيانات

الخطوة 3: التوصيلات

روابط
روابط
روابط
روابط

هذا ما بدت عليه لوحة التجارب الخاصة بي أثناء عمل النماذج الأولية ، يمكنك استخدام هذا كمرجع.

لقد قمت أيضًا بعمل تخطيط للأسلاك بالشكل المفترض أن تبدو عليه بزر واحد فقط.

الخطوة الرابعة: الكود:

ربما لا يكون الرمز الأكثر فعالية ، لكنه يعمل بالنسبة لي. تحدى نفسك وحاول أن تجعلها أكثر كفاءة ؛ ص

#يشمل

// أي

دبوس على Arduino متصل بـ NeoPixels؟

#حدد

رقم التعريف الشخصي 6

// أي

دبوس على Arduino متصل بالزر

#حدد

BUTTON_PIN 9

// كيف

العديد من NeoPixels مُلحقة بـ Arduino؟

#حدد

رقم 16

// متي

نقوم بإعداد مكتبة NeoPixel ، ونخبرها بعدد البكسل ، والدبوس الذي يجب استخدامه لإرسال الإشارات.

// ملحوظة

أنه بالنسبة لشرائط NeoPixel الأقدم ، قد تحتاج إلى تغيير المعامل الثالث - انظر strandtest

//

مثال لمزيد من المعلومات حول القيم الممكنة.

Adafruit_NeoPixel

وحدات البكسل = Adafruit_NeoPixel (NUMPIXELS، PIN، NEO_GRB + NEO_KHZ800) ؛

وقفة كثافة العمليات

= 1 ؛ // تأخير 2

int

وقفة 2 = 80 ؛ // النزول عند استخدام fsr

int

وقفة 3 = 150 ؛ // القيام عند استخدام fsr

int

تأخير = 4 ؛ // تأخير 1

int

fsrPin = 0 ؛ // FSR و 10K المنسدلة متصلة بـ a0

int

قراءة.

فارغ

اقامة() {

pinMode (BUTTON_PIN ، INPUT) ،

Serial.begin (9600) ؛

pixels.begin () ، // يؤدي هذا إلى تهيئة ملف

مكتبة NeoPixel.

pixels.show () ،

}

منطقي

زر مضغوط (دبوس int) {

إرجاع digitalRead (دبوس) ؛

}

فارغ

loop () {// تقرأ ما إذا كان إدخال الدبوس صحيحًا أم خطأ

fsrReading = analogRead (fsrPin) ،

Serial.print ("قراءة تناظرية =") ؛

Serial.print (fsrReading) ؛

إذا (ضغط الزر (BUTTON_PIN) == صحيح) {

// تأثير الضوء عند استخدام مستشعر fsr

إذا (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) ؛

pixels.show () ،

تأخير (وقفة 3) ؛

}

إذا (fsr قراءة <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) ؛

pixels.show () ،

تأخير (وقفة 2) ؛

}

إذا (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) ؛

pixels.show () ،

تأخير (وقفة 3) ؛

}

إذا (fsr قراءة <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) ؛

pixels.show () ،

تأخير (وقفة 2) ؛

}

إذا (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) ؛

pixels.show () ،

تأخير (وقفة 3) ؛

}

إذا (fsr قراءة <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) ؛

pixels.show () ،

تأخير (40) ؛

}

إذا (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) ؛

pixels.show () ،

تأخير (وقفة 3) ؛

}

إذا (fsr قراءة <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) ؛

pixels.show () ،

تأخير (20) ؛

}

}

آخر{

breathe_blue (20 ، 100 ، 0 ، 1 ، 1) ؛ // عادي

تأثير

}

}

// يوقف

= التأخير بين الانتقالات

// الخطوات

= عدد الخطوات

// R ، G ،

B = قيم RGB كاملة

// التنفس الفارغ له تأثير مشابه أيضًا

كلمة fsrsensor niet gebruikt. فك الكلمات الباطلة في حلقة الفراغ () نحن aangeroepen.

void breathe_blue (توقف int ، خطوات int ، بايت R ، بايت G ،

بايت ب) {

int

تمبر ، تمبج ، تمب ؛ // قيم درجة الحرارة

// تتلاشى

لـ (int s = 1 ؛ s <= steps ؛ s ++) {

tmpR = (R * s) /

خطوات؛ // الضرب أولاً لتجنب أخطاء الاقتطاع

tmpG = (G * s) / الخطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛

أناpixels.setPixelColor (0 ، tmpR ، tmpG + 1 ، tmpB) ؛

pixels.setPixelColor (15 ، tmpR ، tmpG + 1 ، tmpB) ؛

}

pixels.show () ،

تأخير (4) ؛

}

// تتلاشى

لـ (int s = 1 ؛ s <= steps ؛ s ++) {

tmpR = (R * s) /

خطوات؛ // الضرب أولاً لتجنب أخطاء الاقتطاع

tmpG = (G * s) / خطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛

أناpixels.setPixelColor (1 ، tmpR ، tmpG + 1 ، tmpB) ؛pixels.setPixelColor (14 ، tmpR ، tmpG + 1 ، tmpB) ؛

}

pixels.show () ،

تأخير (4) ؛

}

// تتلاشى

لـ (int s = 1 ؛ s <= steps ؛ s ++) {

tmpR = (R * s) /

خطوات؛ // الضرب أولاً لتجنب أخطاء الاقتطاع

tmpG = (G * s) / خطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛

أناpixels.setPixelColor (2 ، tmpR ، tmpG + 2 ، tmpB) ؛pixels.setPixelColor (13 ، tmpR ، tmpG + 2 ، tmpB) ؛

}

pixels.show () ،

تأخير (3.5) ؛

}

// تتلاشى

لـ (int s = 1 ؛ s <= steps ؛ s ++) {

tmpR = (R * s) /

خطوات؛ // الضرب أولاً لتجنب أخطاء الاقتطاع

tmpG = (G * s) / الخطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛

أناpixels.setPixelColor (3 ، tmpR ، tmpG + 3 ، tmpB + 5) ؛pixels.setPixelColor (12 ، tmpR ، tmpG + 3 ، tmpB + 5) ؛

}

pixels.show () ،

تأخير (3) ؛

}

لـ (int i = 0 ؛

أناpixels.setPixelColor (0 ، 0 ، 0 ، 0) ؛pixels.setPixelColor (15 ، 0 ، 0 ، 0) ؛

}

// تتلاشى

لـ (int s = 1 ؛ s <= steps ؛ s ++) {

tmpR = (R * s) /

خطوات؛ // الضرب أولاً لتجنب أخطاء الاقتطاع

tmpG = (G * s) / خطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛

أنا

pixels.setPixelColor (4 ، tmpR ، tmpG + 3 ، tmpB + 15) ؛pixels.setPixelColor (11 ، tmpR ، tmpG + 3 ، tmpB + 15) ؛

}

pixels.show () ،

تأخير (3) ؛

}

// تتلاشى

لـ (int s = 1 ؛ s <= steps ؛ s ++) {

tmpR = (R * s) /

خطوات؛ // الضرب أولاً لتجنب أخطاء الاقتطاع

tmpG = (G * s) / الخطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛

أناpixels.setPixelColor (5 ، tmpR ، tmpG + 4 ، tmpB + 20) ؛pixels.setPixelColor (10 ، tmpR ، tmpG + 4 ، tmpB + 20) ؛

}

pixels.show () ،

تأخير (2) ؛

}

لـ (int i = 0 ؛

أناpixels.setPixelColor (1 ، 0 ، 0 ، 0) ؛

pixels.setPixelColor (14 ، 0 ، 0 ، 0) ؛

}

// تتلاشى

لـ (int s = 1 ؛ s <= steps ؛ s ++) {

tmpR = (R * s) /

خطوات؛ // الضرب أولاً لتجنب أخطاء الاقتطاع

tmpG = (G * s) / الخطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛

أناpixels.setPixelColor (6 ، tmpR ، tmpG + 2 ، tmpB + 40) ؛

pixels.setPixelColor (9 ، tmpR ، tmpG + 2 ، tmpB + 40) ؛

}

pixels.show () ،

تأخير (تأخير) ؛

}

لـ (int i = 0 ؛

أناpixels.setPixelColor (2 ، 0 ، 0 ، 0) ؛pixels.setPixelColor (13 ، 0 ، 0 ، 0) ؛

}

// تتلاشى

لـ (int s = 1 ؛ s <= steps ؛ s ++) {

tmpR = (R * s) /

خطوات؛ // الضرب أولاً لتجنب أخطاء الاقتطاع

tmpG = (G * s) / خطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛

أنا

pixels.setPixelColor (7 ، tmpR ، tmpG ، tmpB + 44) ؛pixels.setPixelColor (8 ، tmpR ، tmpG ، tmpB + 44) ؛

}

pixels.show () ،

تأخير (تأخير) ؛

}

// تتلاشى

لـ (int s = steps ؛ s> 0 ؛ s--) {

tmpR = (R * s) / خطوات ؛ // الضرب أولاً لتجنب الاقتطاع

أخطاء

tmpG = (G * s) / خطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛ i

pixels.setPixelColor (7 ، tmpR ، tmpG ، tmpB) ؛

pixels.setPixelColor (8 ، tmpR ، tmpG ، tmpB) ؛

}

pixels.show () ،

تأخير (1) ؛

}

// تتلاشى

لـ (int s = steps ؛ s> 0 ؛ s--) {

tmpR = (R * s) / خطوات ؛ // الضرب أولاً لتجنب الاقتطاع

أخطاء

tmpG = (G * s) / الخطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛ i

pixels.setPixelColor (6 ، tmpR ، tmpG ، tmpB) ؛

pixels.setPixelColor (9 ، tmpR ، tmpG ، tmpB) ؛

}

pixels.show () ،

تأخير (1) ؛

}

// تتلاشى

لـ (int s = steps ؛ s> 0 ؛ s--) {

tmpR = (R * s) / خطوات ؛ // الضرب أولاً لتجنب الاقتطاع

أخطاء

tmpG = (G * s) / الخطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛ i

pixels.setPixelColor (5 ، tmpR ، tmpG ، tmpB) ؛

pixels.setPixelColor (10 ، tmpR ، tmpG ، tmpB) ؛

}

pixels.show () ،

تأخير (2) ؛

}

// تتلاشى

لـ (int s = steps ؛ s> 0 ؛ s--) {

tmpR = (R * s) / خطوات ؛ // الضرب أولاً لتجنب الاقتطاع

أخطاء

tmpG = (G * s) / الخطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛ i

pixels.setPixelColor (4 ، tmpR ، tmpG ، tmpB) ؛

pixels.setPixelColor (11 ، tmpR ، tmpG ، tmpB) ؛

}

pixels.show () ،

تأخير (2) ؛

}

// تتلاشى

لـ (int s = steps ؛ s> 0 ؛ s--) {

tmpR = (R * s) / خطوات ؛ // الضرب أولاً لتجنب الاقتطاع

أخطاء

tmpG = (G * s) / الخطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛ i

pixels.setPixelColor (3 ، tmpR ، tmpG ، tmpB) ؛

pixels.setPixelColor (12 ، tmpR ، tmpG ، tmpB) ؛

}

pixels.show () ،

تأخير (3) ؛

}

// تتلاشى

لـ (int s = steps ؛ s> 0 ؛ s--) {

tmpR = (R * s) / خطوات ؛ //

اضرب أولاً لتجنب أخطاء الاقتطاع

tmpG = (G * s) / خطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛ i

pixels.setPixelColor (2 ، tmpR ، tmpG ، tmpB) ؛

pixels.setPixelColor (13 ، tmpR ، tmpG ، tmpB) ؛

}

pixels.show () ،

تأخير (3) ؛

}

// تتلاشى

لـ (int s = steps ؛ s> 0 ؛ s--) {

tmpR = (R * s) / خطوات ؛ // الضرب أولاً لتجنب الاقتطاع

أخطاء

tmpG = (G * s) / خطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛ i

pixels.setPixelColor (1 ، tmpR ، tmpG ، tmpB) ؛

pixels.setPixelColor (14 ، tmpR ، tmpG ، tmpB) ؛

}

pixels.show () ،

تأخير (4) ؛

}

// تتلاشى

لـ (int s = steps ؛ s> 0 ؛ s--) {

tmpR = (R * s) / خطوات ؛ // الضرب أولاً لتجنب الاقتطاع

أخطاء

tmpG = (G * s) / الخطوات ؛

tmpB = (B * s) / خطوات ؛

لـ (int i = 0 ؛ i

pixels.setPixelColor (0 ، tmpR ، tmpG ، tmpB) ؛

pixels.setPixelColor (15 ، tmpR ، tmpG ، tmpB) ؛

}

pixels.show () ،

تأخير (4) ؛

}

}

الخطوة الخامسة: وضع كل شيء معًا:

نضع كل شيء معًا
نضع كل شيء معًا

يمكنك فقط ترك جميع الأسلاك الخاصة بك متصلة بلوح التجارب الخاص بك أو PVC ، الأمر متروك لك (اخترت وضع PVC فوق اردوينو ، إنه لطيف وأنيق بهذه الطريقة).

الخطوة التالية هي وضع أنابيب الانكماش الحراري حول جميع الأسلاك بحيث تكون أقل فوضى.

إذا اخترت استخدام PVC ، فيجب أن تكون قد قمت بلحام كل شيء معًا الآن.

بعد ذلك ، يمكنك وضع حلقات neopixel على الجزء الخارجي من النظارات الواقية (تأكد من محاذاة المصابيح في المؤخرة) وتثبيتها في مكانها ببعض الشريط اللاصق أو الغراء (لقد استخدمت الشريط).

يمكنك اختيار لصق مستشعر fsr بالشريط المطاطي ببعض الشريط اللاصق أو تركه بمفرده.

استمتع بنظاراتك:)

موصى به: