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

كاتب كود اردوينو مورس: 7 خطوات (بالصور)
كاتب كود اردوينو مورس: 7 خطوات (بالصور)

فيديو: كاتب كود اردوينو مورس: 7 خطوات (بالصور)

فيديو: كاتب كود اردوينو مورس: 7 خطوات (بالصور)
فيديو: طريقة برمجة الأردوينو للمبتدئين | شرح برنامج Arduino IDE 2024, يوليو
Anonim
Image
Image
كاتب كود اردوينو مورس
كاتب كود اردوينو مورس

لقد صنعت روبوتًا يمكنه تحويل أي نص معين إلى شفرة مورس ثم كتابته !! إنه مصنوع من الورق المقوى و Lego وللإلكترونيات استخدمت Arduino ومحركين فقط.

اللوازم

Arduino Uno board stepper motor مايكرو سيرفو SG90ULN2003 وحدة تشغيل محرك متدرج وحدة تزويد الطاقة اللوح 4 × أسلاك توصيل 6 × أسلاك دوبونت من الإناث إلى الذكور 9V1A محول USB كبل كرتون 2 × مسامير خشبية 2 × سبرينغز ورق أبيض ليغوسوبر الغراء مسدس الغراء الساخن شريط مرن (لصنع a حامل القلم) مقص القاطع

الخطوة الأولى: بناء القاعدة

بناء القاعدة
بناء القاعدة
بناء القاعدة
بناء القاعدة
بناء القاعدة
بناء القاعدة

ابدأ ببناء القاعدة. يبلغ عرض المنجم 4 دعامات وطول 20 مسمارًا ، وبعد بناء طبقة واحدة بهذه الأطوال ، قمت ببناء حد عريض واحد حوله تاركًا فجوة في جانب واحد لترك مساحة لمحرك السائر ، ثم أضفت قطع البلاط إلى الجزء الأوسط حيث سيكون شريط الورق. استخدام Lego جعله قويًا جدًا وسهل التعديل. لعمل لفافة الورق ، قمت بقص شرائط من ورق A4 بعرض 1.2 سم (اخترت هذا العرض لأنه نفس عرض عجلة Lego التي استخدمتها ، يمكنك جعلها أكبر أو أصغر حسب العجلة الخاصة بك) وقمت بلصق نهاياتها معًا لتشكيل شريط طويل جدًا ، ثم لفه حول العجلة.

الخطوة 2: قطعة المؤازرة

قطعة المؤازرة
قطعة المؤازرة
قطعة المؤازرة
قطعة المؤازرة
قطعة المؤازرة
قطعة المؤازرة

لهذه الخطوة تحتاج إلى:

  • اثنين من المسامير الخشبية 4 سم
  • نوابض بطول 2 سم
  • قشة واحدة مقطعة إلى قطعتين بطول 2 سم لكل منهما
  • قطعة واحدة من الورق المقوى مقاس 12 سم × 4 سم
  • قطعتان من الورق المقوى مقاس 4 سم × 1.5 سم
  • قطعة واحدة من الورق المقوى مقاس 4 سم × 2 سم

أولاً ، قم بلصق المسامير بواحدة من القطع 4 × 1.5 ، ثم أدخل الينابيع والقش في المسامير ، ثم قم بغراء قطعة الكرتون الأخرى على الجانب الآخر لتثبيت كل شيء في مكانه.

ثانيًا ، قم بغراء قطعة 4 سم × 2 سم فوق الشفاط.

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

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

انتهى بي الأمر بقطع حوالي 3 سم من الجزء السفلي للقطعة مقاس 12 سم × 4 سم ولصق قطعتين إضافيتين مقاس 4 سم × 1.5 سم عليها ، ثم قمت بتغطيتها بقطعة من الورق المقوى 5.5 × 4 سم. حلقة من الشريط المطاطي ولصقها على قطعة صغيرة من الورق المقوى ثم قمت بلصقها على قطعة 4 سم في 2 سم والتي ستتحرك لأسفل عند بدء تشغيل المؤازرة. أوقفت هذه الإضافات العلامة من التحرك من جانب إلى آخر عند عودة الينابيع.

الخطوة 3: إضافة محرك سيرفو وبكرة الورق إلى القاعدة

إضافة محرك سيرفو وبكرة الورق إلى القاعدة
إضافة محرك سيرفو وبكرة الورق إلى القاعدة
إضافة محرك سيرفو وبكرة الورق إلى القاعدة
إضافة محرك سيرفو وبكرة الورق إلى القاعدة

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

الخطوة 4: بناء إطار محرك متدرج

بناء إطار محرك متدرج
بناء إطار محرك متدرج
بناء إطار محرك متدرج
بناء إطار محرك متدرج
بناء إطار محرك متدرج
بناء إطار محرك متدرج

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

الخطوة 5: اللمسات الأخيرة

اللمسات الأخيرة
اللمسات الأخيرة
اللمسات الأخيرة
اللمسات الأخيرة
اللمسات الأخيرة
اللمسات الأخيرة
اللمسات الأخيرة
اللمسات الأخيرة

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

الخطوة السادسة: الإلكترونيات

إلكترونيات
إلكترونيات
إلكترونيات
إلكترونيات

أخيرًا ، يجب عليك توصيل المحركات بـ Arduino وتحميل الكود.

سنبدأ بمحرك سيرفو ، ونقوم بتوصيل السلك البني (السلك الأرضي) بدبوس GND ، ثم السلك الأحمر (سلك الطاقة) بالدبوس 5 فولت ، والسلك البرتقالي (سلك الإشارة) بالحفر رقم 5 دبوس. بعد ذلك ، محرك السائر ، قم بتوصيل 1N1 بـ Dig # 11 ، 1N2 إلى Dig # 10 ، 1N3 إلى Dig # 9 ، 1N4 إلى Dig # 8 ، 5V إلى الجانب الإيجابي من اللوح ودبوس الأرض إلى الجانب السلبي من اللوح. ولا تنس توصيل وحدة تزويد الطاقة بلوحة التجارب مع التأكد من محاذاة جوانبها الإيجابية والسلبية بشكل صحيح مع الجوانب المقابلة على اللوح. إذا نسيت القيام بذلك ، فستعكس قوة مشروعك ، وأنت لا تريد أن تفعل ذلك.

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

كيف تعمل

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

الرمز

#يشمل

# include #include # include const int stepsPerRevolution = 150 ؛ // هذا هو المتغير لمحرك السائر جملة String = "* hello" ؛ // قم بتغيير هذا المتغير لكتابة كلمات مختلفة ولكن اكتب فقط بأحرف صغيرة وابدأ كلمتك بـ "*" Stepper myStepper (stepsPerRevolution، 8، 10، 9، 11)؛ أجهزة myServo ؛ // هذه هي الطريقة التي تجعل الروبوت يكتب نقطة باطلة نقطة () {Serial.println ("نقطة البداية") ؛ myServo.write (160) ؛ تأخير (1000) ؛ myServo.write (90) ؛ تأخير (1000) ؛ myStepper.step (stepsPerRevolution) ، تأخير (1000) ؛ Serial.println ("نقطة تم") ؛ } // هذه هي الطريقة التي تجعل الروبوت يكتب شرطة باطلة () {Serial.println ("dash start")؛ myServo.write (160) ؛ تأخير (1000) ؛ myStepper.step (stepsPerRevolution) ، تأخير (1000) ؛ myServo.write (90) ؛ تأخير (1000) ؛ myStepper.step (stepsPerRevolution) ، تأخير (1000) ؛ Serial.println ("شرطة تم") ؛ } // هذه هي الطريقة التي تجعل الروبوت يترك مسافة بين كل حرف فراغ فراغ () {Serial.println ("space start")؛ myServo.write (90) ؛ تأخير (1000) ؛ myStepper.step (200) ، تأخير (1000) ؛ Serial.println ("تم الفضاء") ؛ } // هذه هي الطريقة التي تجعل الروبوت يترك مسافة أكبر بين كل كلمة void bigSpace () {myServo.write (90)؛ myStepper.step (250) ، تأخير (1000) ؛ } void setup () {// ضع كود الإعداد هنا ، للتشغيل مرة واحدة: Serial.begin (9600)؛ myStepper.setSpeed (100) ، myServo.attach (5) ، int first = wholesale.indexOf ('*') ؛ // هذه الحلقة for تمر عبر كل حرف من السلسلة ثم تستدعي الطرق الصحيحة لكتابتها من أجل (int i = 0؛ i == 'a') {Serial.print (".-") ؛ نقطة()؛ اندفاع()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'b') {Serial.print ("- …") ؛ اندفاع()؛ نقطة()؛ نقطة()؛ نقطة()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'c') {Serial.print ("-.-.") ؛ اندفاع()؛ نقطة()؛ اندفاع()؛ نقطة()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'd') {Serial.print ("-..")؛ اندفاع()؛ نقطة()؛ نقطة()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'e') {Serial.print (".")؛ نقطة()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'f') {Serial.print ("..-.")؛ نقطة()؛ نقطة()؛ اندفاع()؛ نقطة()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'g') {Serial.print ("-.")؛ اندفاع()؛ اندفاع()؛ نقطة()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'h') {Serial.print ("….") ؛ نقطة()؛ نقطة()؛ نقطة()؛ نقطة()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'i') {Serial.print ("..")؛ نقطة()؛ نقطة()؛ فضاء()؛ } else if (wholesale.charAt (first + i) == 'j') {Serial.print (".---")؛ نقطة()؛ اندفاع()؛ اندفاع()؛ اندفاع()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'k') {Serial.print ("-.-") ؛ اندفاع()؛ نقطة()؛ اندفاع()؛ فضاء()؛ } else if (wholesale.charAt (first + i) == 'l') {Serial.print (".-..")؛ نقطة()؛ اندفاع()؛ نقطة()؛ نقطة()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'm') {Serial.print ("-")؛ اندفاع()؛ اندفاع()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'n') {Serial.print ("-.")؛ اندفاع()؛ نقطة()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'o') {Serial.print ("---")؛ اندفاع()؛ اندفاع()؛ اندفاع()؛ فضاء()؛ } else if (wholesale.charAt (first + i) == 'p') {Serial.print (".--.")؛ نقطة()؛ اندفاع()؛ اندفاع()؛ نقطة()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'q') {Serial.print ("--.-")؛ اندفاع()؛ اندفاع()؛ نقطة()؛ اندفاع()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'r') {Serial.print (".-.") ؛ نقطة()؛ اندفاع()؛ نقطة()؛ فضاء()؛ } else if (wholesale.charAt (first + i) == 's') {Serial.print ("…") ؛ نقطة()؛ نقطة()؛ نقطة()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 't') {Serial.print ("-")؛ اندفاع()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'u') {Serial.print ("..-")؛ نقطة()؛ نقطة()؛ اندفاع()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'v') {Serial.print ("… -") ؛ نقطة()؛ نقطة()؛ نقطة()؛ اندفاع()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'w') {Serial.print (".--")؛ نقطة()؛ اندفاع()؛ اندفاع()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'x') {Serial.print ("-..-") ؛ اندفاع()؛ نقطة()؛ نقطة()؛ اندفاع()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'y') {Serial.print ("-.--")؛ اندفاع()؛ نقطة()؛ اندفاع()؛ اندفاع()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == 'z') {Serial.print ("-..")؛ اندفاع()؛ اندفاع()؛ نقطة()؛ نقطة()؛ فضاء()؛ } else if (الجملة.charAt (first + i) == '') {Serial.print ("/")؛ مساحة كبيرة()؛ }}} حلقة فارغة () {// لا تكتب أي شيء هنا}

الخطوة 7: استكشاف الأخطاء وإصلاحها

العجلة لا تتحرك

قد يكون هناك الكثير من الاحتكاك بين العجلة والورقة ، حاول رفع العجلة قليلاً أو تغييرها.

تسحب العجلة الورق لكنها تستمر في الدوران دون سحب الورق

تأكد من لصق العجلة في وسط محرك السائر

النقاط والشرطات متصلة

تحقق مما إذا كانت وظائف النقطة والشرطة والمسافة مكتوبة بشكل صحيح ، فيجب أن تكون على النحو التالي:

// هذه هي الطريقة التي تجعل الروبوت يكتب نقطة dotvoid () {Serial.println ("نقطة البداية") ؛ myServo.write (160) ؛ تأخير (1000) ؛ myServo.write (90) ؛ تأخير (1000) ؛ myStepper.step (stepsPerRevolution) ، تأخير (1000) ؛ Serial.println ("نقطة تم") ؛ }

// هذه هي الطريقة التي تجعل الروبوت يكتب شرطة

شرطة باطلة () {Serial.println ("شرطة البداية") ؛ myServo.write (160) ؛ تأخير (1000) ؛ myStepper.step (stepsPerRevolution) ، تأخير (1000) ؛ myServo.write (90) ؛ تأخير (1000) ؛ myStepper.step (stepsPerRevolution) ، تأخير (1000) ؛ Serial.println ("شرطة تم") ؛ }

// هذه هي الطريقة التي تجعل الروبوت يترك مسافة بين كل حرف

مساحة فارغة () {Serial.println ("مسافة البداية") ؛ myServo.write (90) ؛ تأخير (1000) ؛ myStepper.step (200) ، تأخير (1000) ؛ Serial.println ("تم الفضاء") ؛ }

موصى به: