جدول المحتويات:
- الخطوة 1: المعدات
- الخطوة 2: إعداد اردوينو
- الخطوة الثالثة: البرنامج النهائي
- الخطوة 4: دليل الفيديو
- الخطوة 5: الخاتمة
فيديو: بلاط البيانو لعب ذراع الروبوت: 5 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
تتكون المجموعة من اثنين من مهندسي التشغيل الآلي من UCN ، الذين توصلوا إلى فكرة رائعة ولدينا الحافز للقيام بها وتطويرها. تعتمد الفكرة على لوحة Arduino تتحكم في ذراع آلية. لوحة Arduino هي العقل المدبر للعملية ، وبعد ذلك سيقوم مشغل العملية ، الذراع الروبوتية ، بما يحتاج إليه. سيأتي الشرح الأكثر عمقًا لاحقًا.
الخطوة 1: المعدات
ذراع الروبوت:
طقم ذراع الروبوت Phantomx Pincher Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
برنامج للروبوت- https://www.arduino.cc/en/Main/OldSoftwareRelease… كاميرا الكشف عن الألوان:
كاميرا CMUcam5 Pixy - (https://charmedlabs.com/default/pixy-cmucam5/)
البرمجيات - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
الخطوة 2: إعداد اردوينو
يمكنك رؤية الإعداد على السبورة هنا ، وهو أمر سهل للغاية.
على اليسار هو مصدر الطاقة.
الوسط هو من أجل المؤازرة الأولى ، والتي يتم توصيلها لاحقًا بالمضاعفات الأخرى ، المؤازرة بواسطة المؤازرة.
الجزء السفلي هو المكان الذي نتحكم فيه في اللوحة من جهاز كمبيوتر شخصي أو كمبيوتر محمول ، يحتوي على مدخل USB على الطرف الآخر.
الخطوة الثالثة: البرنامج النهائي
||| البرنامج |||
#يشمل
# تضمين # تضمين "poses.h" # تضمين // Pixy Library #include
#define POSECOUNT 5
BioloidController bioloid = BioloidController (1000000) ؛
const int SERVOCOUNT = 5 ؛ معرف int نقاط البيع int معرف منطقي ؛ منطقية RunCheck ؛
إعداد باطل () {pinMode (0 ، الإخراج) ؛ ax12SetRegister2 (1 ، 32 ، 50) ؛ // تعيين رقم المفصل 1 سجل 32 إلى السرعة 50. ax12SetRegister2 (2 ، 32 ، 50) ؛ // تعيين رقم المفصل 2 سجل 32 إلى السرعة 50. ax12SetRegister2 (3 ، 32 ، 50) ؛ // تعيين رقم المفصل 3 سجل 32 إلى السرعة 50. ax12SetRegister2 (4 ، 32 ، 50) ؛ // تعيين رقم المفصل 4 سجل 32 إلى السرعة 50. ax12SetRegister2 (5 ، 32 ، 100) ؛ // تعيين رقم مشترك 5 سجل 32 لتسريع 100. // تهيئة المتغيرات معرف = 1 ؛ نقاط البيع = 0 ؛ IDCheck = 1 ؛ RunCheck = 0 ؛ // فتح المنفذ التسلسلي Serial.begin (9600) ؛ تأخير (500) ؛ Serial.println ("############################")؛ Serial.println ("تم إنشاء الاتصال التسلسلي") ؛
// تحقق من فحص الجهد الكهربائي لبطارية يبو () ؛
// مسح الماكينات ، إرجاع موضع MoveTest () ؛ غير منزله()؛ خيارات القائمة()؛ RunCheck = 1 ؛ }
حلقة فارغة () {// قراءة المستشعر: int inByte = Serial.read () ؛
التبديل (inByte) {
الحالة '1': MovePose1 () ؛ استراحة؛
الحالة '2': MovePose2 () ؛ استراحة؛ الحالة '3': MovePose3 () ؛ استراحة؛
الحالة '4': MovePose4 () ؛ استراحة؛
الحالة '5': MoveHome () ؛ استراحة؛ الحالة "6": انتزاع () ؛ استراحة؛
الحالة '7': LEDTest () ؛ استراحة؛
الحالة "8": RelaxServos () ؛ استراحة؛ }}
باطل CheckVoltage () {// انتظر ، ثم تحقق من الجهد العائم (سلامة LiPO) = (ax12GetRegister (1، AX_PRESENT_VOLTAGE، 1)) / 10.0 ؛ Serial.println ("############################")؛ Serial.print ("جهد النظام:") ؛ Serial.print (الجهد) ؛ Serial.println ("فولت") ؛ إذا (الجهد 10.0) {Serial.println ("مستويات الجهد الاسمي.") ؛ } إذا (RunCheck == 1) {MenuOptions () ؛ } Serial.println ("#############################")؛ }
باطل MoveHome () {delay (100) ؛ // موصى به وقفة bioloid.loadPose (الصفحة الرئيسية) ؛ // قم بتحميل الوضع من FLASH ، إلى bioloid المخزن المؤقت التاليPose.readPose () ؛ // قراءة في مواضع المؤازرة الحالية إلى المخزن المؤقت curPose Serial.println ("############################") ؛ Serial.println ("نقل الماكينات إلى موضع المنزل") ؛ Serial.println ("############################")؛ تأخير (1000) ؛ bioloid.interpolateSetup (1000) ؛ // إعداد الاستيفاء من التيار-> التالي أكثر من 1/2 ثانية بينما (bioloid.interpolating> 0) {// افعل هذا بينما لم نصل إلى وضعنا الجديد bioloid.interpolateStep () ؛ // نقل الماكينات ، إذا لزم الأمر. تأخير (3) ؛ } إذا (RunCheck == 1) {MenuOptions () ؛ }}
void MovePose1 () {delay (100) ؛ // يوصى بإيقاف bioloid.loadPose (Pose1) ؛ // قم بتحميل الوضع من FLASH ، إلى bioloid المخزن المؤقت التاليPose.readPose () ؛ // قراءة في مواضع المؤازرة الحالية إلى المخزن المؤقت curPose Serial.println ("############################") ؛ Serial.println ("نقل الماكينات إلى المركز الأول") ؛ Serial.println ("############################")؛ تأخير (1000) ؛ bioloid.interpolateSetup (1000) ؛ // إعداد الاستيفاء من التيار-> التالي أكثر من 1/2 ثانية بينما (bioloid.interpolating> 0) {// افعل هذا بينما لم نصل إلى وضعنا الجديد bioloid.interpolateStep () ؛ // نقل الماكينات ، إذا لزم الأمر. تأخير (3) ؛ } SetPosition (3 ، 291) ؛ // اضبط موضع المفصل 3 على "0" تأخير (100) ؛ // انتظر حتى يتحرك المفصل إذا (RunCheck == 1) {MenuOptions () ؛ }}
void MovePose2 () {delay (100) ؛ // يوصى بإيقاف bioloid.loadPose (Pose2) ؛ // قم بتحميل الوضع من FLASH ، إلى bioloid المخزن المؤقت التاليPose.readPose () ؛ // قراءة في مواضع المؤازرة الحالية إلى المخزن المؤقت curPose Serial.println ("############################") ؛ Serial.println ("نقل الماكينات إلى الموضع الثاني") ؛ Serial.println ("############################")؛ تأخير (1000) ؛ bioloid.interpolateSetup (1000) ؛ // إعداد الاستيفاء من التيار-> التالي أكثر من 1/2 ثانية بينما (bioloid.interpolating> 0) {// افعل هذا بينما لم نصل إلى وضعنا الجديد bioloid.interpolateStep () ؛ // نقل الماكينات ، إذا لزم الأمر. تأخير (3) ؛ } SetPosition (3 ، 291) ؛ // اضبط موضع المفصل 3 على "0" تأخير (100) ؛ // انتظر حتى يتحرك المفصل إذا (RunCheck == 1) {MenuOptions () ؛ }} void MovePose3 () {delay (100)؛ // يوصى بإيقاف bioloid.loadPose (Pose3) ؛ // قم بتحميل الوضع من FLASH ، إلى bioloid المخزن المؤقت التاليPose.readPose () ؛ // قراءة في مواضع المؤازرة الحالية إلى المخزن المؤقت curPose Serial.println ("############################") ؛ Serial.println ("نقل الماكينات إلى الموضع الثالث") ؛ Serial.println ("############################")؛ تأخير (1000) ؛ bioloid.interpolateSetup (1000) ؛ // إعداد الاستيفاء من التيار-> التالي أكثر من 1/2 ثانية بينما (bioloid.interpolating> 0) {// افعل هذا بينما لم نصل إلى وضعنا الجديد bioloid.interpolateStep () ؛ // نقل الماكينات ، إذا لزم الأمر. تأخير (3) ؛ } SetPosition (3 ، 291) ؛ // اضبط موضع المفصل 3 على "0" تأخير (100) ؛ // انتظر حتى يتحرك المفصل إذا (RunCheck == 1) {MenuOptions () ؛ }}
void MovePose4 () {delay (100) ؛ // يوصى بإيقاف bioloid.loadPose (Pose4) ؛ // قم بتحميل الوضع من FLASH ، إلى bioloid المخزن المؤقت التاليPose.readPose () ؛ // قراءة في مواضع المؤازرة الحالية إلى المخزن المؤقت curPose Serial.println ("############################") ؛ Serial.println ("نقل الماكينات إلى الموضع الرابع") ؛ Serial.println ("############################")؛ تأخير (1000) ؛ bioloid.interpolateSetup (1000) ؛ // إعداد الاستيفاء من التيار-> التالي أكثر من 1/2 ثانية بينما (bioloid.interpolating> 0) {// افعل هذا بينما لم نصل إلى وضعنا الجديد bioloid.interpolateStep () ؛ // نقل الماكينات ، إذا لزم الأمر. تأخير (3) ؛ } SetPosition (3 ، 291) ؛ // اضبط موضع المفصل 3 على "0" تأخير (100) ؛ // انتظر حتى يتحرك المفصل إذا (RunCheck == 1) {MenuOptions () ؛ }}
void MoveTest () {Serial.println ("############################") ؛ Serial.println ("اختبار تهيئة علامة الحركة") ؛ Serial.println ("############################")؛ تأخير (500) ؛ معرف = 1 ؛ نقاط البيع = 512 ؛ while (id <= SERVOCOUNT) {Serial.print ("Moving Servo ID:") ؛ Serial.println (معرف) ؛
while (pos> = 312) {SetPosition (id، pos) ؛ نقاط البيع = نقاط البيع-- ؛ تأخير (10) ؛ }
while (pos <= 512) {SetPosition (id، pos) ؛ نقاط البيع = نقاط البيع ++ ؛ تأخير (10) ؛ }
// كرر إلى معرف المؤازرة التالي id = id ++ ؛
} إذا (RunCheck == 1) {MenuOptions () ؛ }}
باطل MenuOptions () {Serial.println ("###########################")؛ Serial.println ("الرجاء إدخال الخيار 1-5 لتشغيل الاختبارات الفردية مرة أخرى.") ؛ Serial.println ("1) المركز الأول") ؛ Serial.println ("2) المركز الثاني") ؛ Serial.println ("3) المركز الثالث") ؛ Serial.println ("4) المركز الرابع") ؛ Serial.println ("5) Home Position") ؛ Serial.println ("6) فحص جهد النظام") ؛ Serial.println ("7) أداء اختبار LED") ؛ Serial.println ("8) Relax Servos") ؛ Serial.println ("############################")؛ }
RelaxServos باطل () {id = 1 ؛ Serial.println ("############################")؛ Serial.println ("الاسترخاء الماكينات.") ؛ Serial.println ("############################")؛ بينما (المعرف <= SERVOCOUNT) {Relax (id) ؛ معرف = (معرف ++)٪ SERVOCOUNT ؛ تأخير (50) ؛ } إذا (RunCheck == 1) {MenuOptions () ؛ }}
LEDTest باطل () {معرف = 1 ؛ Serial.println ("############################")؛ Serial.println ("اختبار LED قيد التشغيل") ؛ Serial.println ("############################")؛ بينما (المعرف <= SERVOCOUNT) {ax12SetRegister (المعرف ، 25 ، 1) ؛ Serial.print ("LED ON - معرّف أجهزة:") ؛ Serial.println (معرف) ؛ تأخير (3000) ؛ ax12SetRegister (معرف ، 25 ، 0) ؛ Serial.print ("LED OFF - معرّف أجهزة:") ؛ Serial.println (معرف) ؛ تأخير (3000) ؛ معرف = معرف ++ ؛ } إذا (RunCheck == 1) {MenuOptions () ؛ }}
انتزاع باطل () {SetPosition (5 ، 800) ؛ // اضبط موضع المفصل 1 على تأخير '0' (100) ؛ // انتظر حتى يتحرك المفصل
}
لقد اعتمدنا برنامجنا على برنامج PincherTest الخاص بالمصنعين مع بعض التعديلات الرئيسية في حالة تحديد المواقع. استخدمنا الوضعيات (poses.h) لكي يكون للروبوت مواضع في الذاكرة. أولاً ، حاولنا إنشاء ذراع اللعب الخاص بنا باستخدام Pixycam ليكون تلقائيًا ، ولكن بسبب مشاكل الشاشة الخفيفة والصغيرة ، لم يحدث ذلك. يتمتع الروبوت بموقع رئيسي أساسي ، بعد تحميل البرنامج ، سيختبر جميع الماكينات الموجودة في الروبوت. لقد قمنا بتعيين الأوضاع للأزرار من 1 إلى 4 ، لذلك سيكون من السهل تذكرها. لا تتردد في استخدام البرنامج.
الخطوة 4: دليل الفيديو
الخطوة 5: الخاتمة
في الختام ، يعتبر الروبوت مشروعًا صغيرًا ممتعًا لنا ، وهو شيء ممتع نلعبه ونجربه. أنا أشجعك على تجربته وتخصيصه أيضًا.
موصى به:
التحكم في ذراع الروبوت باستخدام TLV493D وعصا التحكم و Arduino: 3 خطوات
التحكم في ذراع الروبوت باستخدام TLV493D وعصا التحكم و Arduino: وحدة تحكم بديلة للروبوت الخاص بك مع مستشعر TLV493D ، ومستشعر مغناطيسي مع 3 درجات من الحرية (x ، y ، z) باستخدام هذه يمكنك التحكم في مشاريعك الجديدة من خلال اتصال I2C على جهازك المتحكمات الدقيقة واللوحة الإلكترونية التي Bast P
ذراع الروبوت المؤازر: 4 خطوات
ذراع الروبوت المؤازر: هذا ذراع روبوت مؤازر بسيط قادر على التقاط الأشياء ووضعها في منطقة معينة. سيتطلب هذا المشروع معظم وقته للتجميع نظرًا لأهمية التأكد من أن الذراع مستقرة وقادرة على أداء المهام مع
ذراع الروبوت: 5 خطوات
ذراع الروبوت: الهدف من Instructable هذا هو مساعدتك في بناء ذراع الروبوت الخاص بك بطباعة ثلاثية الأبعاد. يأتي حافزي لبناء ذراع الروبوت هذا من الاهتمام بالميكاترونكس والافتقار إلى التوثيق الجيد لبناء ذراع من 4 محاور بمحركات متدرجة ، Ardu
اردوينو - بلاط البيانو: 16 خطوة (بالصور)
Arduino - Piano Tiles: مرحبًا بأشخاص الإنترنت ، سيكون هذا حول كيفية جعل ما لا يمثل بالتأكيد سرقة لعبة محمولة على اردوينو uno r3. للبدء ، ستحتاج إلى جميع الأجزاء ، وهي على النحو التالي ! 1x Arduino Uno r3 (42 دولارًا) 2x LCD Keypad Shield (19 دولارًا لكل منهما) 5
كيفية تجميع ذراع روبوت خشبي مثير للإعجاب (الجزء 3: ذراع الروبوت) - استنادًا إلى الميكرو: بيت: 8 خطوات
كيفية تجميع ذراع روبوت خشبي مثير للإعجاب (الجزء 3: ذراع الروبوت) - استنادًا إلى الميكرو: BITN: تعتمد عملية التثبيت التالية على إكمال وضع تجنب العائق. عملية التثبيت في القسم السابق هي نفس عملية التثبيت في وضع تتبع الخط. ثم دعونا نلقي نظرة على الشكل النهائي لـ A