Სარჩევი:

არდუინოს მორსის კოდის ავტორი: 7 ნაბიჯი (სურათებით)
არდუინოს მორსის კოდის ავტორი: 7 ნაბიჯი (სურათებით)

ვიდეო: არდუინოს მორსის კოდის ავტორი: 7 ნაბიჯი (სურათებით)

ვიდეო: არდუინოს მორსის კოდის ავტორი: 7 ნაბიჯი (სურათებით)
ვიდეო: LEARN MORSE CODE from a MEMORY CHAMP (in 15 minutes) 2024, ივლისი
Anonim
Image
Image
არდუინოს მორსის კოდის დამწერი
არდუინოს მორსის კოდის დამწერი

მე გავაკეთე რობოტი, რომელსაც შეუძლია ნებისმიერი ტექსტი მორს კოდში გადააქციოს და შემდეგ ჩაწერო !! ის დამზადებულია მუყაოს და ლეგოსგან და ელექტრონიკისთვის გამოვიყენე არდუინო და მხოლოდ ორი ძრავა.

მარაგები

Arduino Uno board Stepper motor Micro servo SG90ULN2003 stepper motor driver module დენის წყაროს მოდული Breadboard4 × Jumper wires6 × მდედრობითი სქესის მამაკაცები dupont ხაზები 9V1A ადაპტერი USB კაბელი მუყაო 2 × ხის ძაფები 2 × Springs Straw White paperLegoSuper წებოს ცხელი წებოვანი იარაღი კალმის მფლობელი) მაკრატელი საჭრელი

ნაბიჯი 1: ბაზის მშენებლობა

ბაზის მშენებლობა
ბაზის მშენებლობა
ბაზის მშენებლობა
ბაზის მშენებლობა
ბაზის მშენებლობა
ბაზის მშენებლობა

დაიწყეთ ბაზის მშენებლობით. ჩემი არის 4 studs ფართო და 20 studs ხანგრძლივი, მას შემდეგ, რაც ერთი ფენა ამ სიგრძის, მე ავაშენე ერთი stud ფართო boarder მის გარშემო ტოვებს უფსკრული ერთ მხარეს დატოვოს სივრცე სტეპერი ძრავა, მაშინ მე დავამატე კრამიტის ნაჭრები შუა ნაწილამდე, სადაც იქნება ქაღალდის ზოლები. ლეგოს გამოყენებამ ის ძალიან მტკიცე და მარტივი შეცვალა. ქაღალდის გასაშლელად, მე დავჭრა A4 ქაღალდის ზოლები 1,2 სმ სიგანე (მე ეს სიგანე ავირჩიე, რადგან ის იგივე სიგანეა, რაც მე ვიყენებდი ლეგოს ბორბალს, თქვენ შეგიძლიათ თქვენი უფრო დიდი ან პატარა გახადოთ თქვენი ბორბლის მიხედვით) და მე დავამაგრე მათი ბოლოები ერთმანეთთან ერთი ძალიან გრძელი ზოლის შესაქმნელად, შემდეგ საჭეს შემოვხვიე.

ნაბიჯი 2: სერვო ცალი

სერვო ცალი
სერვო ცალი
სერვო ცალი
სერვო ცალი
სერვო ცალი
სერვო ცალი

ამ ნაბიჯის გადასაჭრელად გჭირდებათ:

  • ორი ხის ბუდე 4 სმ სიგრძის
  • ორი წყარო 2 სმ სიგრძის
  • ერთი ჩალი დაჭრილი ორ ნაწილად, თითოეული 2 სმ სიგრძით
  • ერთი მუყაოს 12 სმ 4 სმ
  • ორი მუყაოს 4 სმ 1.5 სმ
  • ერთი მუყაოს 4 სმ 2 სმ

პირველ რიგში, დააწებეთ დუელსი ერთ -ერთს 4 -დან 1.5 ცალით, შემდეგ ჩადეთ ზამბარები და ჩალები დუელებში, შემდეგ მეორე მხარეს მუყაოს ნაჭერი დაადეთ, რომ ყველაფერი ადგილზე იყოს.

მეორე, 4 სმ 2 სმ სიგრძის ნაჭერი წებოს თავზე.

მესამე, გადაატრიალეთ მთელი ნაჭერი და წებოვანა პატარა დუელი უკანა მხარეს, არა შუაში, არამედ ოდნავ მარცხნივ. (დამავიწყდა პატარა სურათის დამატება პირველ სურათზე)

დაბოლოს, გაჭერით ხვრელი დიდი მუყაოს სერვო ძრავის წინა ნაწილის ზომის და შეაწებეთ ძრავა, შემდეგ კი წებოვანი ნაჭერი, რომელიც ახლახან გავაკეთეთ დუელებით დიდ ნაწილზე ისე, რომ როდესაც სერვო მოძრაობს, ის უბიძგებს პატარა დუელი, რომელიც თავის მხრივ ზურგს უბიძგებს ასევე.

მე დავამთავრე 12 სმ -ის ქვედა ნაწილის დაახლოებით 3 სმ -ით 4 სმ -ის ნაჭერი და კიდევ ორი 4 სმ -ით 1.5 სმ -ის ნაჭერი, შემდეგ გადავაფარე მუყაოს 5.5 სმ -ით 4 სმ -ით. და მარკერის ჩასატარებლად გავაკეთე პატარა ელასტიური ჯგუფის მარყუჟი და დავამაგრე მუყაოს პატარა ნაჭერზე, შემდეგ დავამატე 4 სმ 2 სმ სიგრძის ნაჭერზე, რომელიც გადავა ქვევით, როდესაც სერვო იწყება. ამ დამატებებმა შეაჩერა მარკერის გადაადგილება გვერდიდან გვერდზე, როდესაც ზამბარები უკან იბრუნებს.

ნაბიჯი 3: სერვო ძრავისა და ქაღალდის რულეტის დამატება ბაზაზე

Servo Motor- ისა და Paper Roll- ის დამატება ბაზაზე
Servo Motor- ისა და Paper Roll- ის დამატება ბაზაზე
Servo Motor- ისა და Paper Roll- ის დამატება ბაზაზე
Servo Motor- ისა და Paper Roll- ის დამატება ბაზაზე

მე დავამატე კიდევ ორი აგური ერთ მხარეს ბაზაზე, რათა მხარი დავუჭირო სერვო ნაწილს და მე დავამატე ის ადგილზე. შემდეგ მე დავამატე საჭე ბაზის შორს.

ნაბიჯი 4: სტეპერიანი ძრავის ჩარჩოს შექმნა

სტეპერიანი ძრავის ჩარჩოს მშენებლობა
სტეპერიანი ძრავის ჩარჩოს მშენებლობა
სტეპერიანი ძრავის ჩარჩოს მშენებლობა
სტეპერიანი ძრავის ჩარჩოს მშენებლობა
სტეპერიანი ძრავის ჩარჩოს მშენებლობა
სტეპერიანი ძრავის ჩარჩოს მშენებლობა

ეს ნაბიჯი იყო გარკვეული გამოწვევა, რადგან ძრავა არ იყო სრულყოფილად მორგებული ლეგოსთან. თუმცა, მე შევძელი ამის გაკეთება ძრავის ორი ხვრელის გამოყენებით, რათა ის გამყარებულიყო. შემდეგი, მე დავამატე ლეგოს ბორბალი ძრავის წვერზე და შემდეგ დავდე ის ბაზის გვერდით, იმ მხარეს, რომელიც ღია დავტოვე 1 -ე საფეხურზე.

ნაბიჯი 5: შეხების დასრულება

დასრულების შეხება
დასრულების შეხება
დასრულების შეხება
დასრულების შეხება
დასრულების შეხება
დასრულების შეხება
დასრულების შეხება
დასრულების შეხება

მე დავამატე ორი რკალის ნაჭერი ბორბლის დასაფარავად, რათა ქაღალდი დაფიქსირდეს ადგილზე. მე დავამატე ორი პატარა რკალის ნაჭერი, ერთი სტეპერიანი ძრავის მავთულის დასაკავებლად და მეორე ქაღალდის დასაჭერად. და ბოლოს, მე შევცვალე სტეპერის ძრავის ბორბალი ოდნავ უფრო დიდზე, რომელიც ქაღალდს ძველ ბორბალზე უკეთ ამოძრავებდა.

ნაბიჯი 6: ელექტრონიკა

ელექტრონიკა
ელექტრონიკა
ელექტრონიკა
ელექტრონიკა

დაბოლოს, თქვენ უნდა დაუკავშიროთ ძრავები არდუინოს და ატვირთოთ კოდი.

ჩვენ დავიწყებთ სერვო ძრავით, შევაერთებთ ყავისფერ მავთულს (მიწის მავთულს) GND ქინძისთავთან, შემდეგ წითელ მავთულს (დენის მავთულს) 5V პინზე და ფორთოხლის მავთულს (სიგნალის მავთულს) თხრილში #5 პინი. შემდეგი, სტეპერიანი ძრავა, შეაერთეთ 1N1 თხრილში #11, 1N2 თხრილში #10, 1N3 თხრილში #9, 1N4 თხრილში #8, 5V პურის პოზიტიურ მხარეს და დაფქვილი პინი ნეგატიურ მხარეს პურის დაფა. და არ დაგავიწყდეთ ელექტროენერგიის მიწოდების მოდულის დაკავშირება პურის დაფაზე და დარწმუნდით, რომ მისი დადებითი და უარყოფითი მხარეები სწორად ემთხვევა პურის დაფაზე არსებულ შესაბამის მხარეებს. თუ დაგავიწყდებათ ამის გაკეთება, თქვენ გადაატრიალებთ ძალას თქვენს პროექტში და არ გსურთ ამის გაკეთება.

კოდისთვის, მე დავწერე ოთხი მეთოდი, ერთი წერტილის დასაწერად, ერთი ტირეზე და ორი, რათა დავტოვო ადგილი თითოეულ ასოსა და თითოეულ სიტყვას შორის. ამ გზით, მე შემიძლია უბრალოდ დავარქვა ამ მეთოდებს, როდესაც მე მჭირდება ისინი, ნაცვლად იმისა, რომ ხელახლა დავწერო ყოველი ასოზე. შემდეგ დავწერე for მარყუჟი, რომელიც გადის ტექსტის თითოეულ ასოს და ვწერ მას. შიგნით, მე დავწერე if განცხადება თითოეული ასოსთვის, მაგრამ თქვენ შეგიძლიათ ჩაწეროთ ის switch განცხადებაში, თუ გირჩევნიათ. რა თქმა უნდა, შეგიძლიათ დაამატოთ კოდი, რათა პროგრამამ შეძლოს რიცხვების წაკითხვა. როდესაც ყველა გაყვანილობა მზად არის, უბრალოდ დააკოპირეთ და ჩასვით კოდი თქვენს IDE- ში. არ დაგავიწყდეთ სტეპერი, სერვო და სიმებიანი ბიბლიოთეკების დაყენება. ამის შემდეგ, კარგია წასვლა.

Როგორ მუშაობს

როდესაც Arduino იწყებს პროგრამას უყურებს ტექსტის პირველ ასოს. მაგალითად, როდესაც წერტილის ფუნქცია იძახება, სერვო ძრავა დაყენებულია 160 -ზე, რომელიც კალამს ქვევით ამოძრავებს, შემდეგ ისევ 90 -ზე, რაც საშუალებას აძლევს ზამბარებს დაუბრუნდეს კალამი მათთან ერთად. და თუ ტირე ფუნქციაა გამოძახებული, სერვო მოძრაობს კალამს ქვემოთ, შემდეგ სტეპერიანი ძრავა ბრუნავს ბორბალს, რომელიც უბიძგებს ქაღალდს, რაც კალამს წერს ტირეს. და თუ სივრცის ერთ -ერთ ფუნქციას ეწოდება სტეპერიანი ძრავა ბრუნავს, მაგრამ კალამი მაღლა იწევს, ის იზიდავს ქაღალდს და ქმნის სივრცეს ასოებსა და სიტყვებს შორის. როდესაც ეს კეთდება, ის გადადის შემდეგ ასოზე და იმეორებს იგივე პროცესს. Იმედია მოგწონს;)

Კოდი

#ჩართეთ

#მოიცავს #მოიცავს #მოიცავს კონსტეტ ნაბიჯებს PerRevolution = 150; // ეს არის ცვლადი სტეპერმოტორული სიმებიანი წინადადება = "*გამარჯობა"; // შეცვალეთ ეს ცვლადი სხვადასხვა სიტყვების დასაწერად, მაგრამ დაწერეთ მხოლოდ მცირე ასოებით და დაიწყეთ თქვენი სიტყვა "*" Stepper myStepper (ნაბიჯები PerRevolution, 8, 10, 9, 11); Servo myServo; // ეს ის მეთოდია, რომელიც რობოტს აიძულებს დაწეროს წერტილი void dot () {Serial.println ("dot start"); myServo.write (160); დაგვიანება (1000); myServo.write (90); დაგვიანება (1000); myStepper.step (ნაბიჯები PerRevolution); დაგვიანება (1000); Serial.println ("წერტილი გაკეთებულია"); } // ეს ის მეთოდია, რომელიც რობოტს აიძულებს დაწეროს ტირე void dash () {Serial.println ("dash start"); myServo.write (160); დაგვიანება (1000); myStepper.step (ნაბიჯები PerRevolution); დაგვიანება (1000); myServo.write (90); დაგვიანება (1000); myStepper.step (ნაბიჯები PerRevolution); დაგვიანება (1000); Serial.println ("ტირე გაკეთებულია"); } // ეს არის მეთოდი, რომელიც რობოტს უტოვებს სივრცეს თითოეულ ასოს შორის void space () {Serial.println ("სივრცის დაწყება"); 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 პირველი = წინადადება. indexOf ('*'); // ეს for loop გადის სტრიქონის თითოეულ ასოს და შემდეგ იძახებს მის დასაწერად სწორ მეთოდებს (int i = 0; i <sent.length (); i ++) {if (sentences.charAt (პირველი+i) == 'a') {Serial.print (".-"); წერტილი(); ტირე (); სივრცე (); } else if (sentences.charAt (პირველი + i) == 'b') {Serial.print ("-…"); ტირე (); წერტილი(); წერტილი(); წერტილი(); სივრცე (); } else if (sent.charAt (პირველი + i) == 'c') {Serial.print ("-.-."); ტირე (); წერტილი(); ტირე (); წერტილი(); სივრცე (); } else if (sent.charAt (პირველი + i) == 'd') {Serial.print ("-.."); ტირე (); წერტილი(); წერტილი(); სივრცე (); } else if (sentences.charAt (first + i) == 'e') {Serial.print ("."); წერტილი(); სივრცე (); } else if (sent.charAt (პირველი + i) == 'f') {Serial.print ("..-."); წერტილი(); წერტილი(); ტირე (); წერტილი(); სივრცე (); } else if (sent.charAt (პირველი + i) == 'g') {Serial.print ("-."); ტირე (); ტირე (); წერტილი(); სივრცე (); } else if (sent.charAt (პირველი + i) == 'h') {Serial.print ("…."); წერტილი(); წერტილი(); წერტილი(); წერტილი(); სივრცე (); } else if (sentences.charAt (პირველი + i) == 'i') {Serial.print (".."); წერტილი(); წერტილი(); სივრცე (); } else if (sentences.charAt (პირველი + i) == 'j') {Serial.print (".---"); წერტილი(); ტირე (); ტირე (); ტირე (); სივრცე (); } else if (sent.charAt (პირველი + i) == 'k') {Serial.print ("-.-"); ტირე (); წერტილი(); ტირე (); სივრცე (); } else if (sent.charAt (პირველი + i) == 'l') {Serial.print (".-.."); წერტილი(); ტირე (); წერტილი(); წერტილი(); სივრცე (); } else if (sentences.charAt (პირველი + i) == 'm') {Serial.print ("-"); ტირე (); ტირე (); სივრცე (); } else if (sentences.charAt (პირველი + i) == 'n') {Serial.print ("-."); ტირე (); წერტილი(); სივრცე (); } else if (sentences.charAt (პირველი + i) == 'o') {Serial.print ("---"); ტირე (); ტირე (); ტირე (); სივრცე (); } else if (hevok.charAt (პირველი + i) == 'p') {Serial.print (".--."); წერტილი(); ტირე (); ტირე (); წერტილი(); სივრცე (); } else if (sent.charAt (პირველი + i) == 'q') {Serial.print ("--.-"); ტირე (); ტირე (); წერტილი(); ტირე (); სივრცე (); } else if (hevok.charAt (პირველი + i) == 'r') {Serial.print (".-."); წერტილი(); ტირე (); წერტილი(); სივრცე (); } else if (sentences.charAt (პირველი + i) == 's') {Serial.print ("…"); წერტილი(); წერტილი(); წერტილი(); სივრცე (); } else if (sentences.charAt (პირველი + i) == 't') {Serial.print ("-"); ტირე (); სივრცე (); } else if (sentences.charAt (პირველი + i) == 'u') {Serial.print ("..-"); წერტილი(); წერტილი(); ტირე (); სივრცე (); } else if (sentences.charAt (პირველი + i) == 'v') {Serial.print ("…-"); წერტილი(); წერტილი(); წერტილი(); ტირე (); სივრცე (); } else if (sent.charAt (პირველი + i) == 'w') {Serial.print (".--"); წერტილი(); ტირე (); ტირე (); სივრცე (); } else if (sent.charAt (პირველი + i) == 'x') {Serial.print ("-..-"); ტირე (); წერტილი(); წერტილი(); ტირე (); სივრცე (); } else if (hevok.charAt (პირველი + i) == 'y') {Serial.print ("-.--"); ტირე (); წერტილი(); ტირე (); ტირე (); სივრცე (); } else if (sent.charAt (პირველი + i) == 'z') {Serial.print ("-.."); ტირე (); ტირე (); წერტილი(); წერტილი(); სივრცე (); } else if (sentences.charAt (პირველი + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// აქ არაფერი დაწერო}

ნაბიჯი 7: პრობლემების მოგვარება

საჭე არ მოძრაობს

შეიძლება იყოს ზედმეტი ხახუნი საჭესა და ქაღალდს შორის, სცადეთ ოდნავ ასწიოთ ბორბალი ან შეცვალოთ იგი.

საჭე უჭირავს ქაღალდს, მაგრამ შემდეგ ის ბრუნავს ქაღალდის გაყვანის გარეშე

დარწმუნდით, რომ ბორბალი მიამაგრეთ სტეპერ ძრავის ცენტრში

წერტილები და ტირეები ერთმანეთთან არის დაკავშირებული

შეამოწმეთ სწორად არის დაწერილი წერტილი, ტირე და სივრცე ფუნქციები, ისინი ასე უნდა იყოს:

// ეს არის მეთოდი, რომელიც რობოტს აიძულებს დაწეროს dotvoid dot () {Serial.println ("dot start"); myServo.write (160); დაგვიანება (1000); myServo.write (90); დაგვიანება (1000); myStepper.step (ნაბიჯები PerRevolution); დაგვიანება (1000); Serial.println ("წერტილი გაკეთებულია"); }

// ეს არის მეთოდი, რომელიც რობოტს აიძულებს დაწეროს ტირე

void dash () {Serial.println ("ტირე დაწყება"); myServo.write (160); დაგვიანება (1000); myStepper.step (ნაბიჯები PerRevolution); დაგვიანება (1000); myServo.write (90); დაგვიანება (1000); myStepper.step (ნაბიჯები PerRevolution); დაგვიანება (1000); Serial.println ("ტირე გაკეთებულია"); }

// ეს არის მეთოდი, რომელიც აიძულებს რობოტს დატოვოს სივრცე თითოეულ ასოს შორის

void space () {Serial.println ("სივრცის დაწყება"); myServo.write (90); დაგვიანება (1000); myStepper.step (200); დაგვიანება (1000); Serial.println ("სივრცე გაკეთებულია"); }

გირჩევთ: