Агуулгын хүснэгт:

Ардуино Морзын код бичигч: 7 алхам (зурагтай)
Ардуино Морзын код бичигч: 7 алхам (зурагтай)

Видео: Ардуино Морзын код бичигч: 7 алхам (зурагтай)

Видео: Ардуино Морзын код бичигч: 7 алхам (зурагтай)
Видео: Хэрхэн код бичиж сурах вэ? #1 ( How to Learn to Write a Code? ) 2024, Долдугаар сарын
Anonim
Image
Image
Ардуино Морзын код бичигч
Ардуино Морзын код бичигч

Би ямар ч текстийг Морзын код болгон хөрвүүлээд дараа нь бичих чадвартай робот бүтээсэн !! Энэ нь картон, Lego -оос хийгдсэн бөгөөд электроникийн хувьд би Arduino болон ердөө хоёр мотор ашигладаг байсан.

Хангамж

Arduino Uno самбар Stepper мотор Micro servo SG90ULN2003 stepper моторт драйвер модуль Цахилгаан хангамжийн модуль Breadboard4 × Jumper утас6 × Эмэгтэй-эрэгтэй dupont утас9V1A адаптер USB кабель картон 2 × модон алчуур 2 × булаг сүрэл цагаан цаас LegoSuper цавуу Халуун цавуу буу уян харимхай хамтлаг үзэг эзэмшигч) Хайч таслагч

Алхам 1: Суурийг бий болгох

Суурийг бий болгох
Суурийг бий болгох
Суурийг бий болгох
Суурийг бий болгох
Суурийг бий болгох
Суурийг бий болгох

Суурийг барьж эхлээрэй. Миний өргөн нь 4, 20 урт урт бөгөөд тэдгээр урттай нэг давхаргыг барьсны дараа би хажуу талдаа нэг хоосон зай үлдээж, нэг моторт өргөн хавтан барьж, дараа нь stepper моторт зай үлдээх хэрэгтэй. хавтангийн хэсгүүдийг цаасан тууз байх дунд хэсэгт байрлуулна. Lego -ийг ашигласнаар үүнийг маш бат бөх, өөрчлөхөд хялбар болгосон. Цаасан өнхрүүлгийг хийхийн тулд би 1.2см өргөнтэй А4 хэмжээтэй цаасан тууз хайчилж авлаа (энэ өргөнийг миний сонгосон Lego дугуйны өргөнтэй адилхан сонгосон тул та дугуйнаасаа хамаарч томруулж эсвэл жижиг болгож болно), би тэдний үзүүрийг наасан. маш урт тууз үүсгэхийн тулд би үүнийг дугуйнд ороосон.

Алхам 2: Servo Piece

Серво хэсэг
Серво хэсэг
Серво хэсэг
Серво хэсэг
Серво хэсэг
Серво хэсэг

Энэ алхамыг хийхийн тулд танд хэрэгтэй болно:

  • 4см урттай хоёр модон алчуур
  • 2 см урт хоёр булаг
  • тус бүр 2см урттай нэг ширхэг сүрэл
  • 12см -ээс 4см хэмжээтэй цаасан картон
  • 4 см -ээс 1.5 см хэмжээтэй хоёр ширхэг картон
  • 4см -ээс 2см хэмжээтэй нэг ширхэг картон

Нэгдүгээрт, алчуурыг 4 -ээс 1.5 ширхэг болгон нааж, дараа нь булаг, сүрлийг алчуурт хийж, нөгөө картон хэсгийг нөгөө талд нь нааж, бүх зүйлийг байрандаа байлга.

Хоёрдугаарт, 4см -ээс 2см хэмжээтэй хэсгийг сүрэл дээр наа.

Гуравдугаарт, хэсгийг бүхэлд нь эргүүлж, дундуур нь биш харин бага зэрэг зүүн талд нь жижигхэн алчуур наа. (Эхний зурган дээрх жижиг алчуураа оруулахаа мартсан байна)

Эцэст нь servo моторын урд талын хэмжээтэй том картон цоорхойг хайчилж, моторыг нааж, дараа нь бидний алчуураар хийсэн хэсгийг том хэсэг дээр нааж, servo хөдлөхөд тэр түлхэж өгдөг. жижиг алчуур, энэ нь эргээд булгийг бас түлхдэг.

Би 12см -ийн доод хэсгээс 3см орчим зүсэж, 4см -ээр 2см -ээр нэмж, 4см -ээр 1.5см -ийн хоёр ширхэгийг нааж, дараа нь 5.5см -ээс 4см хэмжээтэй картоноор хучиж, маркерыг барихын тулд би жижигхэн цаас хийв. уян харимхай туузны гогцоо хийж жижиг картон дээр наагаад дараа нь 4см -ээс 2см хэмжээтэй наасан бөгөөд энэ нь servo эхлэхэд доошоо хөдөлнө. Эдгээр нэмэлтүүд нь булаг буцаж ирэхэд маркерыг нөгөө талаас нөгөө тийш шилжүүлэхийг зогсоосон.

Алхам 3: Servo мотор ба цаасан өнхрүүлгийг сууринд нэмнэ

Servo мотор ба цаасан өнхрүүлгийг сууринд нэмж оруулах
Servo мотор ба цаасан өнхрүүлгийг сууринд нэмж оруулах
Servo мотор ба цаасан өнхрүүлгийг сууринд нэмж оруулах
Servo мотор ба цаасан өнхрүүлгийг сууринд нэмж оруулах

Би баганын нэг талд хоёр тоосго нэмж, servo хэсгийг дэмжихийн тулд нааж, дараа нь дугуйг суурийн хамгийн төгсгөлд нэмэв.

Алхам 4: Stepper моторын хүрээ барих

Stepper моторын хүрээ хийх
Stepper моторын хүрээ хийх
Stepper моторын хүрээ хийх
Stepper моторын хүрээ хийх
Stepper моторын хүрээ хийх
Stepper моторын хүрээ хийх

Энэ алхам нь жаахан бэрхшээлтэй байсан, учир нь моторыг Lego -той төгс тохируулаагүй болно. Гэсэн хэдий ч би үүнийг моторын хоёр цооног ашиглан бэхлэхийн тулд үүнийг хийж чадсан. Дараа нь би Lego дугуйг моторын үзүүрт наасан бөгөөд дараа нь 1 -р алхам дээр нээж орхисон хажуугийнхаа хажууд тавив.

Алхам 5: Хүрч дуусгах

Мэдээллийг дуусгах
Мэдээллийг дуусгах
Мэдээллийг дуусгах
Мэдээллийг дуусгах
Мэдээллийг дуусгах
Мэдээллийг дуусгах
Мэдээллийг дуусгах
Мэдээллийг дуусгах

Би цаасыг засахын тулд дугуйг таглахын тулд хоёр нуман хэсэг нэмэв. Тэгээд би хоёр жижиг нуман хэсгийг нэмж, нэг нь stepper моторын утас барих, нөгөө хэсгийг цаас барих. Эцэст нь би stepper моторын дугуйг арай том болгож сольсон нь хуучин дугуйнаас илүү сайн цаас хөдөлгөсөн юм.

Алхам 6: Электроник

Электроник
Электроник
Электроник
Электроник

Эцэст нь та моторыг Arduino -д холбож, кодыг байршуулах ёстой.

Бид servo мотороос эхэлж, хүрэн утсыг (газардуулгын утас) GND зүү, дараа нь улаан утас (цахилгаан утас) 5V зүү, улбар шар утас (дохионы утас) 5 -р ухах хүртэл холбоно. зүү Дараа нь stepper мотор, 1N1 -ийг 11 -р, 1N2 -ийг 10 -р, 1N3 -ийг No9, 1N4 -ийг 8 -р, 5V -ийг талхны эерэг тал, газардуулгын зүүг сөрөг тал руу холбоно. талх. Цахилгаан хангамжийн модулийг талбар дээр холбохоо бүү мартаарай, түүний эерэг ба сөрөг талууд талхны самбар дээрх харгалзах талуудтай зөв нийцэж байгаа эсэхийг шалгаарай. Хэрэв та үүнийг хийхээ мартсан бол төслийнхөө хүчийг буцаах болно, гэхдээ та үүнийг хийхийг хүсэхгүй байна.

Кодын хувьд би нэг цэг бичих, нэг тасар бичих, хоёр үсэг, үг бүрийн хооронд зай үлдээх гэсэн дөрвөн аргыг бичсэн. Ингэснээр би эдгээр аргуудыг үсэг бүрт дахин бичихийн оронд хэрэгтэй үед нь дуудаж болно. Дараа нь би текстийн үсэг бүрийг дайрч бичдэг for цикл бичээд дотор нь үсэг бүрийн хувьд if илэрхийлэл бичсэн боловч хэрэв та хүсвэл үүнийг switch оператороор бичиж болно. Мэдээжийн хэрэг та кодыг нэмж програмыг тоонуудыг унших боломжтой болгоно. Бүх утас бэлэн болсны дараа кодыг IDE руу хуулж оруулна уу. Stepper, servo, string санг суулгахаа бүү мартаарай. Үүний дараа та явахад тохиромжтой.

Хэрхэн ажилладаг

Arduino эхлэхэд програм нь текстийн эхний үсгийг хардаг бөгөөд аль нь байгаагаас хамааран үүнийг Морзын кодоор бичсэн функцийг дууддаг. Жишээлбэл, цэгийн функцийг дуудахад servo мотор нь үзэгийг доош нь хөдөлгөж 160 болгож тохируулсан бөгөөд дараа нь 90 рүү буцааж ирэхэд нь үзэгийг хөдөлгөж болно. Хэрэв зураасны функц гэж нэрлэгддэг бол servo үзэгийг доош нь хөдөлгөж, дараа нь stepper мотор нь дугуйг эргүүлж, цаасыг татаж, үзэгийг зураасаар бичнэ. Хэрэв сансрын функцуудын нэгийг stepper мотор эргэдэг боловч үзэг дээшээ харвал цаасыг татаж, үсэг эсвэл үгийн хооронд зай үлдээдэг. Үүнийг хийсний дараа дараагийн үсэг рүү очиж ижил үйлдлийг давтана. Чамд таалагдана гэдэгт итгэж байна;)

Код

#оруулах

#include #include #include const int stepsPerRevolution = 150; // Энэ бол stepper motor String өгүүлбэрийн хувьсагч = "*сайн уу"; // Энэ хувьсагчийг өөр өөр үг бичихийн тулд өөрчил, гэхдээ зөвхөн жижиг үсгээр бичээд "*" Stepper myStepper (StepPerRevolution, 8, 10, 9, 11) -ээр эхлүүлээрэй; Servo myServo; // Энэ бол роботыг цэг хоосон цэг бичихэд хүргэдэг арга () {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 ("зай дууссан"); } // Энэ бол роботыг хоосон үг бүрийн хооронд том зай үлдээх болгодог арга юм bigSpace () {myServo.write (90); myStepper.step (250); саатал (1000); } void setup () {// нэг удаа ажиллуулахын тулд тохиргооны кодоо энд оруулна уу: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int first = өгүүлбэр.indexOf ('*'); // энэ нь давталт нь мөрийн үсэг бүрийг дамжуулж, дараа нь үүнийг бичих зөв аргуудыг дууддаг (int i = 0; i <өгүүлбэр. урт (); би ++) {if (өгүүлбэр.чарАт (эхний+i)) == 'a') {Serial.print (".-"); цэг (); зураас (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'b') {Serial.print ("-…"); зураас (); цэг (); цэг (); цэг (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'c') {Serial.print ("-.-."); зураас (); цэг (); зураас (); цэг (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'd') {Serial.print ("-.."); зураас (); цэг (); цэг (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'e') {Serial.print ("."); цэг (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'f') {Serial.print ("..-."); цэг (); цэг (); зураас (); цэг (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'g') {Serial.print ("-."); зураас (); зураас (); цэг (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'h') {Serial.print ("…."); цэг (); цэг (); цэг (); цэг (); зай (); } else if (өгүүлбэр.charAt (эхний + i) == 'i') {Serial.print (".."); цэг (); цэг (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'j') {Serial.print (".---"); цэг (); зураас (); зураас (); зураас (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'k') {Serial.print ("-.-"); зураас (); цэг (); зураас (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'l') {Serial.print (".-.."); цэг (); зураас (); цэг (); цэг (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'm') {Serial.print ("-"); зураас (); зураас (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'n') {Serial.print ("-."); зураас (); цэг (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'o') {Serial.print ("---"); зураас (); зураас (); зураас (); зай (); } өөр if (өгүүлбэр.charAt (эхний + i) == 'p') {Цуваа.хэвлэх (".--."); цэг (); зураас (); зураас (); цэг (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'q') {Serial.print ("--.-"); зураас (); зураас (); цэг (); зураас (); зай (); } else if (өгүүлбэр.charAt (эхний + i) == 'r') {Serial.print (".-."); цэг (); зураас (); цэг (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 's) {Serial.print ("…"); цэг (); цэг (); цэг (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 't') {Serial.print ("-"); зураас (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'u') {Serial.print ("..-"); цэг (); цэг (); зураас (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'v') {Serial.print ("…-"); цэг (); цэг (); цэг (); зураас (); зай (); } өөр if (өгүүлбэр.charAt (эхний + i) == 'w') {Serial.print (".--"); цэг (); зураас (); зураас (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'x') {Serial.print ("-..-"); зураас (); цэг (); цэг (); зураас (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'y') {Serial.print ("-.--"); зураас (); цэг (); зураас (); зураас (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == 'z') {Serial.print ("-.."); зураас (); зураас (); цэг (); цэг (); зай (); } өөр бол (өгүүлбэр.charAt (эхний + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Энд юу ч битгий бичээрэй}

Алхам 7: Алдааг олж засварлах

Дугуй нь хөдөлдөггүй

Дугуй болон цаасны хооронд хэт их үрэлт үүсч магадгүй тул дугуйг бага зэрэг өргөж эсвэл сольж үзээрэй.

Дугуй нь цаасыг татдаг боловч дараа нь цаасыг таталгүйгээр эргүүлсээр байдаг

Дугуйг stepper моторын төв хэсэгт наасан эсэхээ шалгаарай

Цэг ба зураас хоорондоо холбогдсон байна

Цэг, зураас, зайны функцууд зөв бичигдсэн эсэхийг шалгаарай, иймэрхүү байх ёстой.

// Энэ бол роботыг dotvoid dot () {Serial.println ("цэг эхлэх") бичихэд хүргэдэг арга юм; myServo.write (160); саатал (1000); myServo.write (90); саатал (1000); myStepper.step (stepsPerRevolution); саатал (1000); Serial.println ("цэг хийсэн"); }

// Энэ бол роботыг зураасаар бичих арга юм

void dash () {Serial.println ("зураас эхлэх"); myServo.write (160); саатал (1000); myStepper.step (stepsPerRevolution); саатал (1000); myServo.write (90); саатал (1000); myStepper.step (stepsPerRevolution); саатал (1000); Serial.println ("зураас хийсэн"); }

// Энэ бол роботыг үсэг бүрийн хооронд зай үлдээх арга юм

void space () {Serial.println ("зай эхлэх"); myServo.write (90); саатал (1000); myStepper.step (200); саатал (1000); Serial.println ("зай дууссан"); }

Зөвлөмж болгож буй: