كيف تصنع آلة أخرى عديمة الفائدة: سهلة الصنع ، وصعبة الاستخدام: 9 خطوات (مع صور)

سكس نار Video

سكس نار Video

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

Anonim

تم بناء العديد من الآلات عديمة الفائدة ، لماذا بناء واحدة أخرى؟ ببساطة ، إنها حقا متعة :) ، متعة البناء ومتعة اللعب بها.
حاولت إعطاء هذا الإصدار شخصية ، حيث شعرت دائمًا أن هناك شخصًا ما "يفكر داخل الصندوق" ، لذلك حاولت هنا ، وآمل أن أكون قد نجحت في منح "حياتها" حياة!
يسعدني حقًا أن أطلعكم على جميع الخطوات ، مع كل الآمال في أن تكونوا قادرين على بناء شخصيتك بسهولة ومنحها شخصية مريرة أو أفضل! يعتمد الإصدار الخاص بي على Arduino ، قد تعتقد أنها مبالغة ، لكن بالنظر إلى المرونة التي أعطتها لي ، أعتقد أن الأمر يستحق ذلك.
هنا شريط فيديو عن كل شيء مجتمعة. في وقت لاحق ، سوف ننتقل إلى الأجزاء والخطوات والخطط والرمز
اسمحوا لي أن أعرف تعليقاتكم و / أو الأسئلة إن وجدت.
آمل أن تستمتع!
F.

اللوازم:

الخطوة 1: كيف يعمل؟

كل شيء متصل بلوحة Arduino ، تنتظر اللوحة حتى يتم ضبط المفتاح على المنطق العالي ، أي عندما تنقر المفتاح ، فإن اللوحة تشير إلى محركين مؤازرين للتحرك بطريقة محددة (المزيد حول ذلك لاحقًا) ، وبعد ذلك ، المؤازرة المتصلة بـ "اليد" ستنقر المفتاح مرة أخرى إلى وضع إيقاف التشغيل ، وتعود مرة أخرى إلى المربع ، متبوعة بمضاعفات "الباب". ثم كل شيء يكرر.
إذا شاهدت الفيديو أعلاه ، في كل مرة يتم فيها تبديل التبديل ، يستجيب الجهاز بطريقة مختلفة ، ويتم ذلك ببساطة عن طريق كتابة وظائف مختلفة مع توقيتات مختلفة في كود Arduino ، (أدعوهم "ينقل"). في كل مرة يتم فيها تبديل المفتاح ، أدعو إلى خطوة جديدة حتى يتم الانتهاء من ذلك كله ، أبدأ من جديد. لاحظ أنه في الخطوة 9 ، قدمت نسخة أخرى من الكود الذي يختار التحركات العشوائية بدلاً من التسلسل. يمكنك إضافة العديد من التحركات كما تريد ، طالما أن لديك ذاكرة كافية على Arduino.
يتم تشغيل Arduino دائمًا ، ولهذا قمت بإضافة مفتاح للبطارية لتوفير بعض الطاقة عندما لا يكون الجهاز قيد الاستخدام. أخطط بالفعل لاستخدام مقاطعة على المفتاح ، بدلاً من اكتشاف HIGH / LOW الحالي البسيط ، والاقتران مع وضع السكون. يعمل هذا على توفير الطاقة عندما لا يكون الجهاز قيد الاستخدام ، ويسمح أيضًا له أن يكون جاهزًا دائمًا (ولكن هذا سيعقد أيضًا الكود) لذلك ، في الوقت الحالي ، إنه مجرد مفتاح تشغيل / إيقاف بسيط ، ويتم تشغيل اللوحة دائمًا .

الخطوة 2: الأجزاء

سوف تحتاج:
إلزامية:
1. مربع
2. أي لوحة Arduino مع مخرجات PWM (صادفت أن لدي لوحة قديمة حولها ، و Diecimila)
3. محركان مؤازران RC قياسيين (استخدمت Futaba - S3003 ، لديهم عزم دوران 3،2 كجم / سم ، أكثر من كافية لتحريك الباب أو اليد)
4. بطارية 6-12 فولت (استخدمت بطارية AR بدون طيار ، وهي 11.1 فولت / 1000 مللي أمبير)
3. مفتاح SPTT أو SPST للمشغل (في الأساس ، أي مفتاح يناسبك!)
5. مفتاح آخر للبطارية
6. زر الضغط لإعادة ضبط اردوينو في حال كنت ترغب في إعادة تشغيل التحركات / رمز من الأعلى.
7. بعض الأسلاك الطائر

اختياري:
في حال كنت ترغب في تصميم حركة تتضمن تحريك الصندوق (مثل آخر حركة في الفيديو) ، فيمكنك الحصول على:
1. درع محرك Arduino ، سيكون هذا مفيدًا أيضًا للمشاريع الأخرى (أو يمكنك تصميم جسر H بنفسك ، والبحث عنه)
2. سيارة RC رخيصة حتى يمكنك أن تأخذ محرك DC وصندوق التروس
علاوة على ذلك ، ما زلت في قسم "اختياري" ، لقد قمت ببناء دائرة إلغاء ترتد الأجهزة للحصول على مشغل نظيف عند تشغيل / إيقاف تشغيل المفتاح. يمكن تخطي ذلك وتطبيقه بسهولة في برنامج arduino باستخدام التأخير أو المؤقتات. لقد قمت بالتخلي عن الأجهزة لأنني سوف أقوم قريباً بتغيير الكود لاستخدام المقاطعات ، وبما أن الأخير لا يسمح باستخدام موثوق به لوظائف التأخير / الموقت في الروتين ، لذلك اضطررت إلى بناء دائرة إلغاء ترتد بسيطة للاستخدام في المستقبل . إذا كنت ترغب في تخطي هذا الجزء ، فقم فقط بتوصيل مفتاح / المقاوم بسيط للدبوس 2 من اردوينو وتنفيذ روتين debounce البرنامج.
ل debounce الأجهزة:
1. 10mF كهربائيا مكثف
2. 10K المقاوم
3. منطق NOT بوابة أي العاكس (رقاقة 74HC04) هذا لديه ستة محولات ، ولكنك لن تحتاج إلا واحد.
دعنا نبنيه …

الخطوة 3: بناء الصندوق

يمكنك استخدام أي صندوق تجده مناسبًا. لقد بنيت لي ، ربما ليست مثالية ، ولكن لا يزال الشخصية :)
1. لقد استخدمت ورقتين من خشب BALSA بحجم 5 مم ، سهل للغاية في العمل باستخدام قاطعة ، وقوية نسبيًا نظرًا لوزنها الخفيف المذهل.
2. تستهلك 5 أنابيب من الغراء Cyanoacrylat (ويعرف أيضا باسم مواد لاصقة قوية المفعول بسرعة)
ها هو:
ا 22 × 14 × 14 سم صندوق

الخطوة 4: التخطيطي

أعلاه تخطيطي (مرسوم باستخدام فريتزنج) ، يظهر:
الجزء العلوي: اللوحة الرئيسية اردوينو ، 2 الماكينات والتبديل الاتصال. لاحظ أنه كما ذكر سابقًا ، يمكنك استبدال دارة debounce (أعلى اليمين) بالكامل بمحول / مفتاح بسيط.
يتم تشغيل الماكينات "door" و "hand" مباشرة من دبوس 5v في Arduino. ترتبط الأسلاك إشارة إلى دبوس 9 و 10 على التوالي. تدعم هذه المسامير PWM ، وبالتالي أنا أستخدمها للتحكم في زاوية / موضع المؤازرة (من 0 إلى 180 درجة كحد أقصى).
ملاحظة: زر الضغط الأحمر هو مجرد إعادة ضبط (على غرار الزر الموجود على وجه لوحة اردوينو). لقد أضفته للوصول السريع لإعادة ضبط اللوحة / البرنامج في أي وقت دون فتح المربع. ببساطة يربط دبوس إعادة تعيين إلى الأرض لجعل إعادة تعيين.
الجزء السفلي: هناك حاجة إذا كنت ترغب في استخدام محرك DC ونقل الجهاز في جميع أنحاء. هذا هو درع محرك اردوينو ، وهو مثبت على قمة اردوينو ، لذلك كل المسامير في كل لوحين متصلتان ببعضهما. أنا أراهم أدناه مفصولين فقط من أجل الوضوح ، على أمل! يمكن لهذا الدرع التحكم في ما يصل إلى محركين DC (قناتان A / B) بسهولة مذهلة. أنا أستخدم واحد فقط الآن. يسمح بتعيين الشفرة والاتجاه والسرعة وفواصل أي من القنوات / المحركات المتاحة. أنا أستخدم القناة B كما هو موضح أدناه. حيث دبوس
13 للاتجاه ، 11 دبوس للسرعة و 8 دبوس للسيطرة على الفرامل.
البطارية 11.1 / 1000 مللي أمبير ، متصلة بالدرع ، وبالتالي تغذية محرك DC ، لوحة اردوينو الرئيسية وأجهزة الماكينات. إذا لم تكن تستخدم الدرع ، فيمكنك توصيل البطارية مباشرة ببرميل الطاقة الموجود على لوحة اردوينو الرئيسية.

الخطوة 5: إصلاح الماكينات

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


الخطوة 6: توصيل التبديل ، الماكينات واردوينو

اجعل جميع الاتصالات التي تمت رؤيتها في الخطوة التخطيطية ، وحاول أن تضع كل ما بداخل الصندوق بشكل مماثل لما هو موضح أعلاه:

الخطوة 7: اختياري: محرك DC والبطارية

أعلاه هو كيف وضعت علبة تروس المحرك DC (مأخوذة من سيارة RC رخيصة) ، والتي تبين أيضا موضع الخليط والتبديل.
تأكد من وضع الترس في مركزه قدر الإمكان لموازنة الصندوق ، فقد تحتاج إلى وضع بعض الوزن داخل الصندوق لموازنته أكثر بعد التجميع النهائي ، لأن البطارية التي استخدمتها ثقيلة بعض الشيء (100 غرام) وتسببت في بعض الاهتزاز عند التبديل أو تحريك الصندوق.
لاحظ أن محرك العاصمة سرعة يتم التحكم بواسطة دبوس 11, اتجاه بواسطة دبوس 13و فرامل على دبوس 8, هذه تعتبر القناة B على درع محرك اردوينو.
حاولت من خلال التجميع إخفاء جميع مفاتيح الأسلاك والمكونات الأخرى من أجل الحصول على صندوق أصيل بسيط. ينطبق هذا على العجلات ، لذلك صنعت حوافًا حولها تستضيف كل من العجلات والبطارية ، وتوفر أيضًا إمكانية الوصول إلى زر إعادة الضبط الأحمر.

الخطوة 8: المدونة

من أجل كتابة التعليمات البرمجية لاردوينو ، تحتاج إلى IDE اردوينو (تنزيله هنا)
أنا أستخدم الإصدار 1.0.5 ، فقط تأكد من تحديد منفذ COM الصحيح (windows) ونوع اللوحة من داخل IDE ، ثم استخدم الكود أدناه ، واضغط على التحميل.
ملاحظة: القيم التي استخدمتها في الكود لتعيين أقصى انحراف للأجهزة مصنوعة بالضبط لهذا المربع مع الأخذ في الاعتبار تحديد موضع الماكينات والمحور والزوايا. حصلت على هذا من خلال المحاكمة. لذلك تحتاج إلى وضع القيم الخاصة بك وفقا لمربع الخاص بك و التنسيب المؤازرة.
كمرجع ، أدناه هي القيم min / max التي استخدمتها لكل مضاعفات كما ستراها تحدث في الكود:
الباب:
80 الاختباء ، 155 مفتوحة بالكامل
اليد:
0 الاختباء ، 129 الضغط على التبديل

إليك الرمز (من الأفضل تنزيل الملف المرفق بهذه الخطوة بدلاً من نسخ / لصق من أدناه):
#تتضمن
سيرفو الباب
مضاعفات handServo.
int switch_pin = 2 ؛ / / تعيين التبديل على دبوس 2
المتغيرات الحركية
int motorThrottle = 11 ؛
int motorDirection = 13 ؛
دراجة نارية كثافة العمليات = 8 ؛
نقاط البيع = 0 ؛
int selectMove = 0 ؛ // نقل محدد
int Testmove = 0 ؛ // test mode: اضبط لنقل العدد لاختبار حركة واحدة محددة فقط
// (اضبط على Zero ليتم تشغيله بشكل طبيعي ، مثل: roundrobbin عند تحركات amm)
الإعداد باطل()
{
Serial.begin (9600)؛
pinMode (switch_pin ، INPUT) ؛
doorServo.attach (9)؛ / / تعيين مضاعفات الباب على دبوس 9 مساء
handServo.attach (10)؛ / / تعيين مضاعفات اليد على دبوس 10 مساء
doorServo.write (80)؛ // تعيين الباب لإخفاء الموقف
handServo.write (0)؛ // تعيين اليد لإخفاء الموقف

// إعداد القناة B ، (نظرًا لأن القناة A محجوزة من قبل الماكينات اليدوية والبابية ولا يمكن استخدامها في نفس الوقت)
pinMode (motorDirection ، OUTPUT) ؛ / / يبدأ موتور قناة B دبوس
pinMode (motorBrake ، OUTPUT) ؛ // يبدأ دبوس قناة B الفرامل

}

حلقة فارغة()
{
إذا (Testmove! = 0) {
selectMove = Testmove ؛
}

// إذا كان المفتاح في وضع التشغيل ، فقم بتحريك الباب واليد لإيقافه …
إذا (digitalRead (switch_pin) == عالية)
{

إذا (selectMove> 10) {selectMove = 0؛ } // عندما يتم لعب جميع التحركات ، كرر التحركات من البداية
/ / فيما يلي جميع "التحركات" التي صممتها حتى الآن ، كل منها عبارة عن وظيفة مكتوبة أدناه في الكود ، مع استثناء الأسماء ، هل أنت غريب؟ نعم لأن بعضها مكتوب باللغة العربية
إذا (selectMove == 0) {switchoff () ؛ }
وإلا إذا (selectMove == 1) {switchoff () ؛ }
وإلا إذا (selectMove == 2) {switchoffbitaraddod () ؛ }
وإلا إذا (selectMove == 3) {crazydoor () ؛ }
وإلا إذا (selectMove == 4) {crazyslow () ؛ }
وإلا إذا (selectMove == 5) {m7anika7anika () ؛ }
وإلا إذا (selectMove == 6) {m3alla2 () ؛ }
وإلا إذا (selectMove == 7) {switchoff () ؛ }
وإلا إذا (selectMove == 8) {matrix () ؛ }
وإلا إذا (selectMove == 9) {sneak () ؛ }
وإلا إذا (selectMove == 10) {zee7 () ؛ }

إذا (Testmove == 0) {
selectedMove ++؛ // سويث إلى الخطوة التالية إن لم يكن في وضع الاختبار
}
}
}

// مكتبة التحركات
// الخطوة الأساسية
إبطال التبديل ()
{
// تتحرك الباب
لـ (pos = 80 ؛ pos <155 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// تتحرك اليد
لـ (pos = 0 ؛ pos <129 ؛ نقاط البيع = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ اليد
لـ (pos = 129؛ pos> = 0؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 155 ؛ pos> = 80 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
}

/ / الخطوة 3: فتح وانتظر ، ثم تحرك ناحية وانتظر ، ثم التبديل والاختباء
باطلة switchoffbitaraddod ()
{
// تتحرك الباب
لـ (pos = 80 ؛ pos <155 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (800)؛
// تتحرك اليد
لـ (pos = 0 ؛ نقاط البيع <100 ؛ نقاط البيع = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (1000)؛
لـ (pos = 100 ؛ pos <129 ؛ pos = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ اليد
لـ (pos = 129؛ pos> = 0؛ pos- = 5)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 155 ؛ pos> = 80 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛


}

}

// move 4: افتح الباب ثم أغلقه عدة مرات ، انتظر ، ثم أعد فتحه بسرعة ثم أخفيه.

crazydoor باطلة ()
{

// تتحرك الباب
لـ (pos = 80 ؛ pos <125 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 125؛ pos> = 80؛ pos- = 5)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
// تتحرك الباب
لـ (pos = 80 ؛ pos <110 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 110؛ pos> = 80؛ pos- = 15)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (700)؛
// تتحرك الباب
لـ (pos = 80 ؛ pos <125 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (700)؛
// يختبئ الباب
لـ (pos = 125؛ pos> = 80؛ pos- = 5)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// ---- من التبديل ---- //
// تتحرك الباب
لـ (pos = 80 ؛ pos <155 ؛ pos = 8)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// تتحرك اليد
لـ (pos = 0 ؛ pos <129 ؛ نقاط البيع = 3)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ اليد
لـ (pos = 129؛ pos> = 0؛ pos- = 3)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 155 ؛ pos> = 80 ؛ pos- = 15)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

}

// الخطوة 5: الباب المفتوح ، ثم حرك اليد ببطء إلى الأمام والعودة للاختباء ببطء شديد ، ثم أغلق الباب بسرعة
كرايسلو باطل ()
{
// تتحرك الباب
لـ (pos = 80 ؛ pos <155 ؛ pos = 1)
{
doorServo.write (نقاط البيع)؛
تأخير (30)؛
}

// تتحرك اليد
لـ (pos = 0 ؛ pos <129 ؛ نقاط البيع = 1)
{
handServo.write (نقاط البيع)؛
تأخير (30)؛
}

// يختبئ اليد
لـ (pos = 129؛ pos> = 0؛ pos- = 1)
{
handServo.write (نقاط البيع)؛
تأخير (30)؛
}

// يختبئ الباب
لـ (pos = 155 ؛ pos> = 125 ؛ pos- = 1)
{
doorServo.write (نقاط البيع)؛
تأخير (30)؛
}
تأخير (100)؛
لـ (pos = 125؛ pos> = 80؛ pos- = 4)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

}
/ / الخطوة 6:
باطل m7anika7anika () {
// تتحرك الباب
لـ (pos = 80 ؛ pos <155 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// تتحرك اليد
لـ (pos = 0 ؛ pos <70 ؛ pos = 1)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (800)؛


// يختبئ الباب
لـ (pos = 155 ؛ pos> = 130 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 130 ؛ pos <155 ؛ pos = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
// يختبئ الباب
لـ (pos = 155 ؛ pos> = 130 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
// يختبئ الباب
لـ (pos = 130 ؛ pos <155 ؛ pos = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

handServo.write (40)؛
تأخير (1000)؛

// تتحرك اليد
لـ (pos = 40 ؛ pos <129 ؛ pos = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ اليد
لـ (pos = 129؛ pos> = 0؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}


لـ (pos = 120؛ pos> = 80؛ pos - = 1)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}



}
باطل m3alla2 () {
// تتحرك الباب
لـ (pos = 80 ؛ pos <155 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// تتحرك اليد
لـ (pos = 0 ؛ pos <127 ؛ نقاط البيع = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
// يختبئ الباب
لـ (pos = 155 ؛ pos> = 130 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (2000)؛

لـ (pos = 130 ؛ pos <155 ؛ pos = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

لـ (pos = 155؛ pos> = 140؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
لـ (pos = 140 ؛ pos <155 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (500)؛
// يختبئ اليد
لـ (pos = 127؛ pos> = 0؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 155 ؛ pos> = 80 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
}

مصفوفة باطلة ()
{
// تتحرك الباب
لـ (pos = 80 ؛ pos <155 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// تتحرك اليد
لـ (pos = 0 ؛ نقاط البيع <80 ؛ نقاط البيع = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

لـ (pos = 80 ؛ pos <129 ؛ نقاط البيع = 1)
{
handServo.write (نقاط البيع)؛
تأخير (30)؛
}
تأخير (300)؛

لـ (pos = 129؛ pos> = 0؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (10)؛
}

// يختبئ الباب
لـ (pos = 155 ؛ pos> = 80 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

}
التسلل باطلة ()
{
// تتحرك الباب
لـ (pos = 80 ؛ pos <130 ؛ pos = 1)
{
doorServo.write (نقاط البيع)؛
تأخير (30)؛
}
تأخير (2000)؛

// تتحرك اليد
لـ (pos = 0 ؛ نقاط البيع <40 ؛ نقاط البيع = 1)
{
handServo.write (نقاط البيع)؛
تأخير (30)؛
}

تأخير (500)؛

لـ (pos = 130 ؛ pos <155 ؛ pos = 4)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (100)؛

لـ (pos = 40 ؛ pos <90 ؛ نقاط البيع = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (500)؛
// يختبئ اليد
لـ (pos = 90 ؛ pos> = 70 ؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (100)؛
لـ (pos = 70 ؛ pos <90 ؛ pos = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (100)؛
لـ (pos = 90 ؛ pos> = 70 ؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (100)؛

لـ (pos = 70 ؛ pos <129 ؛ pos = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

لـ (pos = 129؛ pos> = 0؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
// يختبئ الباب
لـ (pos = 155 ؛ pos> = 80 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
}


باطل zee7 ()
{
// تتحرك الباب
لـ (pos = 80 ؛ pos <155 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (2000)؛
// الأمام @ نصف السرعة إلى اليسار
digitalWrite (motorDirection، LOW)؛ / يحدد الاتجاه الصحيح للقناة B
digitalWrite (دراجة نارية ، منخفضة) ؛ // فك ارتباط الفرامل للقناة B
analogWrite (motorThrottle، 100)؛ // يدور المحرك على القناة B بأقصى سرعة
تأخير (300)؛
digitalWrite (دراجة نارية ، عالية) ؛ / / قم بتكوين الفرامل للقناة B
تأخير (2000)؛

// الى الوراء @ نصف السرعة إلى اليمين
digitalWrite (motorDirection ، عالية) ؛ // يحدد اتجاه اليسار للقناة ب
digitalWrite (دراجة نارية ، منخفضة) ؛ // فك ارتباط الفرامل للقناة B
analogWrite (motorThrottle، 100)؛ // يدور المحرك على القناة B بنصف السرعة
تأخير (300)؛
digitalWrite (دراجة نارية ، عالية) ؛ / / قم بتكوين الفرامل للقناة B
تأخير (1000)؛

// تتحرك اليد
لـ (pos = 0 ؛ pos <129 ؛ نقاط البيع = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ اليد
لـ (pos = 129؛ pos> = 0؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 155 ؛ pos> = 80 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
}


الخطوة 9: التحديث الاختياري: كشف الحركة

لدي جهاز استشعار عن قرب اليوم (GP2Y0A21) ، لذا يمكنني الآن استخدامه لتحريك الجهاز إذا كان المستخدم يقترب من مفتاح التبديل :)
لهذه الخطوة الإضافية ، أفترض أنك قمت بالفعل ببناء العجلات للسماح بالحركة (انظر الخطوة 8 الاختيارية). كل ما تبقى الآن هو إضافة المستشعر وإجراء بعض التعديلات في الكود لاكتشاف الحركة.
يحتوي المستشعر على 3 أسلاك ، سلك إشارة أصفر متصل دبوس 3 على اردوينو ، في حين أن أحمر و أسود متصلا V5 و أرض على التوالي على متن الطائرة.
لقد وضعت المستشعر مخفيًا تحت الباب كما هو موضح في الصورة ، وبالتالي لا يمكنه "رؤية" حركة المستخدم إلا عند فتح الباب. بالضبط ما أحتاجه!
اضطررت أيضًا إلى تغيير الرمز قليلاً (هنا) لتطبيق روتين الكشف عن الحركة (انظر الرمز ، في الوظيفة zee7 () ) ، عند اكتشاف الحركة ، سينتقل الصندوق ، أولاً إلى اليمين ، ثم إلى اليسار ، ثم تقلب اليد المفتاح وتخفيه. تم التعليق بشدة على الكود ، آمل ألا أفرط في ذلك!
يمكنك العثور على الكود الذي تم تحديثه أدناه ، لاحظ أيضًا أنني قمت بجعل الجهاز يختار الحركات بشكل عشوائي ، ويمكن تغيير ذلك إلى متسلسل من خلال الإعداد ببساطة منطقية عشوائيا = خطأ.
شكرا للجميع على اقتراحاتكم العظيمة!
الرمز (من الأفضل تنزيل الملف المرفق بهذه الخطوة بدلاً من نسخ / لصق من أدناه):
#تتضمن
سيرفو الباب
مضاعفات handServo.
غير موقعة طويلة TimerA ، TimerB ؛ // الموقت للروتين كشف الحركة
int switch_pin = 2 ؛ / / تعيين التبديل على دبوس 2
المتغيرات الحركية
int motorThrottle = 11 ؛
int motorDirection = 13 ؛
دراجة نارية كثافة العمليات = 8 ؛
// متغيرات المسافة
int motionPin = 3 ؛ // استشعار الحركة دبوس على التناظرية 0
int lastDist = 0 ؛ / / لتذكر المسافة الأخيرة
int CurrentDist = 0 ؛
int thresh = 200 ؛ // عتبة الحركة (اضبطها بحيث تحصل على الحساسية المطلوبة لاكتشاف الحركة)

نقاط البيع = 0 ؛
int selectMove = 0 ؛ // نقل محدد
int Testmove = 0 ؛ // test mode: اضبط لنقل العدد لاختبار حركة واحدة محددة فقط
// (اضبط على الصفر لتعمل بشكل طبيعي ، مثل: roundrobbin على كل الحركات)
العشوائية منطقية = صحيح ؛ / / إذا كان هذا صحيحًا ، فسيعمل الصندوق على نقله بشكل عشوائي ، وإذا تم ضبطه على "خطأ" ، فسيتم تنفيذ الحركات بالتسلسل من 1 إلى 10

الإعداد باطل()
{
Serial.begin (9600)؛
pinMode (switch_pin ، INPUT) ؛
doorServo.attach (9)؛ / / تعيين مضاعفات الباب على دبوس 9 مساء
handServo.attach (10)؛ / / تعيين مضاعفات اليد على دبوس 10 مساء
doorServo.write (80)؛ // تعيين الباب لإخفاء الموقف
handServo.write (0)؛ // تعيين اليد لإخفاء الموقف
// إعداد القناة B ، نظرًا لأن القناة A محجوزة بواسطة الماكينات اليدوية والبابية ولا يمكن استخدامها في نفس الوقت
pinMode (motorDirection ، OUTPUT) ؛ / / يبدأ موتور قناة B دبوس
pinMode (motorBrake ، OUTPUT) ؛ // يبدأ دبوس قناة B الفرامل

}

حلقة فارغة()
{
// إذا كان المفتاح في وضع التشغيل ، فقم بتحريك الباب واليد لإيقافه …
إذا (digitalRead (switch_pin) == عالية)
{

إذا (Testmove == 0)
{

إذا (عشوائي == خطأ)
{
إذا (محددأكثر> 10)
{
selectMove = 0 ؛ / / عندما يتم لعب جميع التحركات ، كرر التحركات من البداية
}
}
آخر
{
selectMove = عشوائي (11) ؛
}
}
آخر
{
selectMove = Testmove ؛
}
Serial.println (selectedMove)؛
إذا (selectMove == 0) {switchoff () ؛ }
وإلا إذا (selectMove == 1) {switchoff () ؛ }
وإلا إذا (selectMove == 2) {switchoffbitaraddod () ؛ }
وإلا إذا (selectMove == 3) {crazydoor () ؛ }
وإلا إذا (selectMove == 4) {crazyslow () ؛ }
وإلا إذا (selectMove == 5) {m7anika7anika () ؛ }
وإلا إذا (selectMove == 6) {m3alla2 () ؛ }
وإلا إذا (selectMove == 7) {switchoff () ؛ }
وإلا إذا (selectMove == 8) {matrix () ؛ }
وإلا إذا (selectMove == 9) {sneak () ؛ }
وإلا إذا (selectMove == 10) {zee7 () ؛ }

if (Testmove == 0 && randomize == false) {
selectedMove ++؛ // التبديل إلى الخطوة التالية إن لم يكن في وضع الاختبار
}
}
}
// مكتبة التحركات
// الخطوة الأساسية
إبطال التبديل ()
{
// تتحرك الباب
لـ (pos = 80 ؛ pos <155 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// تتحرك اليد
لـ (pos = 0 ؛ pos <129 ؛ نقاط البيع = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ اليد
لـ (pos = 129؛ pos> = 0؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 155 ؛ pos> = 80 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
}

/ / الخطوة 3: فتح وانتظر ، ثم تحرك ناحية وانتظر ، ثم التبديل والاختباء
باطلة switchoffbitaraddod ()
{
// تتحرك الباب
لـ (pos = 80 ؛ pos <155 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (800)؛
// تتحرك اليد
لـ (pos = 0 ؛ نقاط البيع <100 ؛ نقاط البيع = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (1000)؛
لـ (pos = 100 ؛ pos <129 ؛ pos = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ اليد
لـ (pos = 129؛ pos> = 0؛ pos- = 5)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 155 ؛ pos> = 80 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛


}

}

// move 4: افتح الباب ثم أغلقه عدة مرات ، انتظر ، ثم أعد فتحه بسرعة ثم أخفيه.

crazydoor باطلة ()
{

// تتحرك الباب
لـ (pos = 80 ؛ pos <125 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 125؛ pos> = 80؛ pos- = 5)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
// تتحرك الباب
لـ (pos = 80 ؛ pos <110 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 110؛ pos> = 80؛ pos- = 15)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (700)؛
// تتحرك الباب
لـ (pos = 80 ؛ pos <125 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (700)؛
// يختبئ الباب
لـ (pos = 125؛ pos> = 80؛ pos- = 5)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// ---- من التبديل ---- //
// تتحرك الباب
لـ (pos = 80 ؛ pos <155 ؛ pos = 8)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// تتحرك اليد
لـ (pos = 0 ؛ pos <129 ؛ نقاط البيع = 3)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ اليد
لـ (pos = 129؛ pos> = 0؛ pos- = 3)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 155 ؛ pos> = 80 ؛ pos- = 15)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

}

// الخطوة 5: الباب المفتوح ، ثم حرك اليد ببطء إلى الأمام والعودة للاختباء ببطء شديد ، ثم أغلق الباب بسرعة
كرايسلو باطل ()
{
// تتحرك الباب
لـ (pos = 80 ؛ pos <155 ؛ pos = 1)
{
doorServo.write (نقاط البيع)؛
تأخير (30)؛
}

// تتحرك اليد
لـ (pos = 0 ؛ pos <129 ؛ نقاط البيع = 1)
{
handServo.write (نقاط البيع)؛
تأخير (30)؛
}

// يختبئ اليد
لـ (pos = 129؛ pos> = 0؛ pos- = 1)
{
handServo.write (نقاط البيع)؛
تأخير (30)؛
}

// يختبئ الباب
لـ (pos = 155 ؛ pos> = 125 ؛ pos- = 1)
{
doorServo.write (نقاط البيع)؛
تأخير (30)؛
}
تأخير (100)؛
لـ (pos = 125؛ pos> = 80؛ pos- = 4)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

}
/ / الخطوة 6:
باطل m7anika7anika () {
// تتحرك الباب
لـ (pos = 80 ؛ pos <155 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// تتحرك اليد
لـ (pos = 0 ؛ نقاط البيع <70 ؛ نقاط البيع = 1)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (800)؛


// يختبئ الباب
لـ (pos = 155 ؛ pos> = 130 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 130 ؛ pos <155 ؛ pos = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
// يختبئ الباب
لـ (pos = 155 ؛ pos> = 130 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
// يختبئ الباب
لـ (pos = 130 ؛ pos <155 ؛ pos = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

handServo.write (40)؛
تأخير (1000)؛

// تتحرك اليد
لـ (pos = 40 ؛ pos <129 ؛ pos = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ اليد
لـ (pos = 129؛ pos> = 0؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}


لـ (pos = 120؛ pos> = 80؛ pos - = 1)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}



}
باطل m3alla2 () {
// تتحرك الباب
لـ (pos = 80 ؛ pos <155 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// تتحرك اليد
لـ (pos = 0 ؛ pos <127 ؛ نقاط البيع = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
// يختبئ الباب
لـ (pos = 155 ؛ pos> = 130 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (2000)؛

لـ (pos = 130 ؛ pos <155 ؛ pos = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

لـ (pos = 155؛ pos> = 140؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
لـ (pos = 140 ؛ pos <155 ؛ pos = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (500)؛
// يختبئ اليد
لـ (pos = 127؛ pos> = 0؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 155 ؛ pos> = 80 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
}

مصفوفة باطلة ()
{
// تتحرك الباب
لـ (pos = 80 ؛ pos <155 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

// تتحرك اليد
لـ (pos = 0 ؛ نقاط البيع <80 ؛ نقاط البيع = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

لـ (pos = 80 ؛ pos <129 ؛ نقاط البيع = 1)
{
handServo.write (نقاط البيع)؛
تأخير (30)؛
}
تأخير (300)؛

لـ (pos = 129؛ pos> = 0؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (10)؛
}

// يختبئ الباب
لـ (pos = 155 ؛ pos> = 80 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}

}
التسلل باطلة ()
{
// تتحرك الباب
لـ (pos = 80 ؛ pos <130 ؛ pos = 1)
{
doorServo.write (نقاط البيع)؛
تأخير (30)؛
}
تأخير (2000)؛

// تتحرك اليد
لـ (pos = 0 ؛ نقاط البيع <40 ؛ نقاط البيع = 1)
{
handServo.write (نقاط البيع)؛
تأخير (30)؛
}

تأخير (500)؛

لـ (pos = 130 ؛ pos <155 ؛ pos = 4)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (100)؛

لـ (pos = 40 ؛ pos <90 ؛ نقاط البيع = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (500)؛
// يختبئ اليد
لـ (pos = 90 ؛ pos> = 70 ؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (100)؛
لـ (pos = 70 ؛ pos <90 ؛ pos = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (100)؛
لـ (pos = 90 ؛ pos> = 70 ؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (100)؛

لـ (pos = 70 ؛ pos <129 ؛ pos = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

لـ (pos = 129؛ pos> = 0؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}
// يختبئ الباب
لـ (pos = 155 ؛ pos> = 80 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
}

// هذه الخطوة ستفتح الباب وتنتظر الحركة ، إذا تم اكتشافها بالقرب من المفتاح ،
/ / سينتقل الصندوق أولاً إلى اليمين ، ثم إلى اليسار ، وأخيراً تتحرك اليد وتطفئ المفتاح
باطل zee7 ()
{

//باب مفتوح
لـ (pos = 80 ؛ pos <155 ؛ نقاط البيع = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
تأخير (1200)؛ // انتظر لتثبيت قراءات المستشعر بعد فتح الباب

// ضبط الموقت وقراءة المستشعر
// انتظر الحركة التي تتجاوز العتبة أو إذا انتهت صلاحية الموقت (5 ثوانٍ) ،
lastDist = analogRead (motionPin) ؛
TimerA = ميلي () ؛

بينما (مللي () - TimerA <= 5000)
{
currentDist = analogRead (motionPin) ؛

// هل المسافة الحالية تنحرف عن المسافة الأخيرة بأكثر من العتبة؟
/ / إذا كانت الإجابة بنعم ، ثم حرك المربع إلى اليمين
if ((currentDist> lastDist thresh || currentDist <lastDist - thresh) || currentDist> 300)
{
// forward @ half speed إلى اليسار (اختر السرعة والتأخير
//(i.e تأخير (300) وفقًا لمربع البطارية والجهد الكهربائي بحيث تكون حركة الحركة مرغوبة)
digitalWrite (motorDirection، LOW)؛ / / يحدد الاتجاه الصحيح للقناة أ
digitalWrite (دراجة نارية ، منخفضة) ؛ // فك ارتباط الفرامل للقناة B
analogWrite (motorThrottle، 100)؛ // يدور المحرك على القناة B بأقصى سرعة
تأخير (300)؛
digitalWrite (دراجة نارية ، عالية) ؛ / / قم بتكوين الفرامل للقناة B
استراحة؛
}
lastDist = currentDist ؛
}

// ضبط الموقت وقراءة المستشعر
// انتظر الحركة التي تتجاوز العتبة أو إذا انتهت صلاحية الموقت (5 ثوانٍ) ،
تأخير (1200)؛ // انتظر لتثبيت قراءات المستشعر بعد فتح الباب
lastDist = analogRead (motionPin) ؛
TimerB = ميلي () ؛
بينما (مللي () - TimerB <= 5000)
{
currentDist = analogRead (motionPin) ؛
// هل تحرك الصندوق بالفعل إلى اليمين والمسافة الحالية تنحرف عن المسافة الأخيرة بأكثر من العتبة؟
/ / إذا كان الجواب نعم ، فانتقل إلى اليسار
if ((currentDist> lastDist thresh || currentDist <lastDist - thresh) || currentDist> 300)
{
// backward @ half speed إلى اليمين (اختر السرعة والتأخير
//(i.e تأخير (300) وفقًا لمربع البطارية والجهد الكهربائي بحيث تكون حركة الحركة مرغوبة)
digitalWrite (motorDirection ، عالية) ؛ // يحدد اتجاه اليسار للقناة ب
digitalWrite (دراجة نارية ، منخفضة) ؛ // فك ارتباط الفرامل للقناة B
analogWrite (motorThrottle، 100)؛ // يدور المحرك على القناة B بنصف السرعة
تأخير (300)؛
digitalWrite (دراجة نارية ، عالية) ؛ / / قم بتكوين الفرامل للقناة B
استراحة؛
}

lastDist = currentDist ؛

}
تأخير (100)؛
// تتحرك اليد
لـ (pos = 0 ؛ نقاط البيع <130 ؛ نقاط البيع = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ اليد
لـ (pos = 130؛ pos> = 0؛ pos- = 4)
{
handServo.write (نقاط البيع)؛
تأخير (15)؛
}

// يختبئ الباب
لـ (pos = 155 ؛ pos> = 80 ؛ pos- = 3)
{
doorServo.write (نقاط البيع)؛
تأخير (15)؛
}
}

3 أشخاص صنعوا هذا المشروع!

  • جعل AndyC159 ذلك!

  • صنع SamL84!

  • جعل melton1313 ذلك!

هل قمت بهذا المشروع؟ شاركه معنا!

توصيات

  • آلة فرز المسمار

  • PCB BOT (تتبع الخط ، تجنب العوائق وروبوت متحكم فيه بتقنية Bluetooth في PCB فردي)

  • فئة إنترنت الأشياء

  • ألوان مسابقة قوس قزح

  • مسابقة عشوائية

  • تحدي الحزب

194 المناقشات

0

هل تحاول

منذ 4 سنوات على مقدمة

شكرا على هذا! لقد تقدمت لأول مشروع أردوينو بناءً على هذا التدريب: تنين عديم الفائدة!

4 ردود 0

Ajannهل تحاول

الرد منذ 3 سنوات

آلة التنين الخاصة بك رائع. !!! فني

0

TJAOkevinهل تحاول

الرد منذ 3 سنوات

رائع!!!!!

0

رياشيهل تحاول

الرد منذ 4 سنوات على مقدمة

إنك لرائع :) !!!

شخصية عظيمة للتنين! أتمنى أن تتمكن من إعادة الفيديو أثناء مواجهة التنين مباشرةً أمام الكاميرا (العرض العلوي) ، أشعر أن هذا سيكون فرحانًا ، لذا شاهد اللسان يتسلل للخارج!

نشكرك على مشاركة مقطع الفيديو الخاص بك وسعداء ساعدتني

0

هل تحاولرياشي

الرد منذ 4 سنوات على مقدمة

لقد جربت العرض الأعلى في مرحلة سابقة ، لكنها لم تنجح (شاهدت الكثير من الدواسات الفوضوية) لذا فقد رفضتها عندما التقطت هذا الفيديو. أعتقد أنك على صواب: في المرحلة النهائية ، ستبدو رائعة! لسوء الحظ ، لقد أعطيت التنين بعيدًا … وهكذا إلى المشروع التالي!

0

br1pro

منذ 4 سنوات

ممتع جدا! العمل الشاق إصلاح الماكينات وتصميم اليد. شكرا على هذا التدريب!

1 الرد 0

رياشيbr1pro

الرد منذ 4 سنوات على مقدمة

رجل عظيم العمل! حقا لطيف :) أي فيديو؟

0

clincoln

منذ 5 سنوات

مشاهدة الفيديو على ذلك أولا ثم تضحك عليك الحمار

1 الرد 0

TobiasVclincoln

الرد منذ 4 سنوات على مقدمة

أعلم أنني فعلت! :د

0

rileyw

منذ 5 سنوات

رائع رائع الفيديو جعلها تبدو وكأنها لديها عقل خاص بها

0

Elitekilla117

منذ 5 سنوات على مقدمة

بلدي آلة عديمة الفائدة مع اردوينو و riachis رمز! تحولت إلى tardis من Dr.who. :)
http://www.youtube.com/watch؟v=aDs0T52o6-M

2 الردود 0

رياشيElitekilla117

الرد منذ 5 سنوات على مقدمة

أحبها!!!! :)) رجل أحسنت حقا ، سعيد جدا لرؤية bombbox الخاص بك على قيد الحياة! أنا أيضًا التمثيل المسرحي والموسيقى: p لا أستطيع إيقاف نفسي لأقترح 3 تعديلات صغيرة إذا جاز لي :)؟
- سيكون من الرائع وضع الماكينة في وضع الوقوف ، وأنا أعلم أن هذا سوف يفقد مساعدة الجاذبية لإغلاق الباب ، ولكن الحل البسيط هو وضع شريطين مطاطيين متصلين بالداخل من الباب على جانب واحد إلى الجانب الداخلي من الصندوق للطرف الآخر ، سيؤدي ذلك إلى إغلاق الباب عند إغلاق مؤازرة الباب … تحقق من خطوات الإنشاء الخاصة بي ، سترى الشريط المطاطي في الخطوة 6 …
- ماذا عن طلاء الأيدي باللون الأسود؟
! كما يمكن رسم رأس اليد باللون الأحمر الدامي أو مزينة وجه مجنون أو شيء من هذا القبيل ..
- قم بإزالة الخطوة الأخيرة حيث لم يحدث شيء فيها (من المفترض أن تكون الخطوة التي تحرك المربع) واكتب الخطوة الخاصة بك …
ومع ذلك ، ننسى الاقتراحات ، وأنا أحب machineeee الخاص بك! وبفضل هذا الرجل شكرا جزيلا ، من فضلك يمكنك تقليلها والحفاظ على تركيز الفيديو على الجهاز :)
نأمل الخاص بك فرنك غيني أحب ذلك!

0

Elitekilla117رياشي

الرد منذ 5 سنوات على مقدمة

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

0

chuckletushy

منذ 5 سنوات

هذا يجب أن أقوم به … إنه أمر رائع

0

wrs715

منذ 5 سنوات على مقدمة

هذا هو المشروع الأول الذي رأيته باستخدام Arduino حيث فكرت ، "نعم ، هذا يستحق كل هذا العناء. الآن يجب أن أحصل عليه." بعمل رائع!

0

siliconghost

منذ 5 سنوات على مقدمة

واو ، رهيبة تأخذ على مشروع مشترك! أحب تدور حول جعلها أكثر إثارة للاهتمام!

0

bob3030

منذ 5 سنوات

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

0

المتمايل

منذ 5 سنوات على مقدمة

الفكر 1: استخدام اردوينو لهذا هو مجرد مبالغة سخيفة
الفكر 2: بعد مشاهدة الفيديو باستخدام اردوينو لهذا هو مجرد عبقرية نقية!
أنا تنحني لإبداعك!

0

stumitch

منذ 5 سنوات على مقدمة

هذا عظيم على محمل الجد! نوع من يذكرني شخصية الجدار- E. شكرا على هذا المشروع الرائع

0

gazillabytes

منذ 5 سنوات على مقدمة

لا طائل منه حقا! لطيفة ible. أنا مصدر إلهام وأحتاج إلى بناء واحد لمكتبي. شكر.