جدول المحتويات:
- الخطوة الأولى: المواد والأجزاء المطلوبة:
- الخطوة 2: حلقات Neopixel
- الخطوة 3: التوصيلات
- الخطوة الرابعة: الكود:
- الخطوة الخامسة: وضع كل شيء معًا:
فيديو: نظارات الاسترخاء - ITTT: 5 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:41
مشروع 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
السلك الأبيض متصل بالأرضي خلف حلقة نيوبكسل.
السلك البرتقالي متصل بـ 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 بالشريط المطاطي ببعض الشريط اللاصق أو تركه بمفرده.
استمتع بنظاراتك:)
موصى به:
نظارات الرؤية الليلية لـ Google Cardboard: 10 خطوات (بالصور)
نظارات الرؤية الليلية لـ Google Cardboard: إخلاء المسؤولية: استخدام هذا الجهاز مخصص للترفيه والتعليم والاستخدام العلمي فقط ؛ ليس للتجسس و / أو المراقبة. & quot؛ أداة التجسس & quot؛ تمت إضافة ميزات إلى التطبيق للمتعة فقط ولن تخدم أي غرض عملي لـ
افعلها بنفسك - نظارات RGB: 3 خطوات (بالصور)
افعلها بنفسك | RGB Goggles: مرحبًا! لقد صنعت RGB Goggles باستخدام WS2812B LEDs و Arduino Nano. تحتوي Goggles على العديد من الرسوم المتحركة التي يمكن التحكم فيها باستخدام تطبيق جوال ، ويمكن للتطبيق التواصل مع arduino من خلال وحدة Bluetooth
مفتاح الضوء المتحكم فيه بالعين باستخدام نظارات Shota Aizawa's Eraser Head Goggles (My Hero Academia): 8 خطوات (بالصور)
مفتاح الضوء المتحكم فيه بالعين باستخدام نظارات Shota Aizawa's Eraser Head Goggles (My Hero Academia): إذا كنت تقرأ مانغا بطلي الأكاديمي أو شاهدت أنمي أكاديميتي البطل ، فيجب أن تعرف شخصية شاركتات تدعى شوتا أيزاوا. شوتا أيزاوا المعروف أيضًا باسم Eraser Head ، هو بطل محترف ومعلم الصف في الإمارات العربية المتحدة من الدرجة 1-A. كويرك شوتا يعطيه أب
مشاهدة نظارات القراءة الكسوف (وعدم حرق عيني): 4 خطوات (بالصور)
مشاهدة نظارات القراءة الكسوف (ولا تحرق عيني): مرحبًا ، هل لفتت انتباهك إلى عنواني؟ لقد فعل والدي أيضًا ، بينما كنا نسير في Montr القديم وكل شيء بالأمس ، سحب نظارته وأظهر لي كيف أرى كيف أرى الكسوف فكر في نظارة القراءة الخاصة به. لذلك كل شيء
نظارات الكريستال السائل للحول (نظارات التدريب على الانسداد بالتناوب) [ATtiny13]: 10 خطوات (بالصور)
نظارات الكريستال السائل للحول (نظارات التدريب على الانسداد المتناوب) [ATtiny13]: الغمش (العين الكسولة) ، وهو اضطراب في البصر يؤثر على ما يقرب من 3 ٪ من السكان ، وعادة ما يتم علاجه عن طريق لصقات العين البسيطة أو قطرات الأتروبين. لسوء الحظ ، تسد طرق العلاج هذه عينًا أقوى لفترات طويلة غير متقطعة ، لا