Mục lục:
- Quân nhu
- Bước 1: Xây dựng cơ sở
- Bước 2: Mảnh Servo
- Bước 3: Thêm động cơ Servo và cuộn giấy vào đế
- Bước 4: Xây dựng khung động cơ bước
- Bước 5: Hoàn thiện các lần chạm
- Bước 6: Điện tử
- Bước 7: Khắc phục sự cố
Video: Trình viết mã Arduino Morse: 7 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:30
Tôi đã tạo ra một con rô bốt có thể chuyển đổi bất kỳ văn bản nhất định nào thành mã Morse và sau đó viết nó ra !! Nó được làm bằng bìa cứng và Lego và đối với các thiết bị điện tử, tôi sử dụng Arduino và chỉ có hai động cơ.
Quân nhu
Bo mạch Arduino Uno Động cơ bước Mô-đun điều khiển động cơ bước Micro servo SG90ULN2003 Mô-đun nguồn điện Mô-đun nguồn điện Breadboard 4 × Dây jumper 6 × Dây dupont Nữ-to-Nam9V1A Cáp USB 2 × Chốt bằng gỗ 2 × Lò xo Rơm Giấy trắngLegoSuper Keo bắn keo nóng Dây thun (để làm một ống đựng bút) Kéo cắt
Bước 1: Xây dựng cơ sở
Bắt đầu bằng cách xây dựng cơ sở. Mine có chiều rộng 4 đinh và dài 20 đinh, sau khi xây dựng một lớp với độ dài đó, tôi xây một bảng nội trú rộng một đinh xung quanh nó để lại một khoảng trống ở một bên để tạo không gian cho động cơ bước, sau đó tôi thêm miếng gạch vào phần giữa nơi dải giấy sẽ ở. Sử dụng Lego làm cho nó rất chắc chắn và dễ sửa đổi. Để làm cuộn giấy, tôi cắt các dải giấy A4 có chiều rộng 1,2cm (tôi chọn chiều rộng này vì nó bằng chiều rộng của bánh xe Lego mà tôi đã sử dụng, bạn có thể làm to hơn hoặc nhỏ hơn tùy thuộc vào bánh xe của bạn) và tôi dán các đầu của chúng lại với nhau để tạo thành một dải rất dài, sau đó tôi quấn nó quanh bánh xe.
Bước 2: Mảnh Servo
Đối với bước này, bạn cần:
- hai chốt gỗ dài 4cm
- hai lò xo dài 2cm
- một ống hút cắt thành hai đoạn, mỗi đoạn dài 2cm
- một miếng bìa cứng 12cm x 4cm
- hai miếng bìa cứng 4cm x 1,5cm
- một miếng bìa cứng 4cm x 2cm
Đầu tiên, dán các chốt vào một trong 4 x 1,5 mảnh, sau đó chèn lò xo và ống hút vào chốt, sau đó dán miếng bìa cứng còn lại lên mặt còn lại để giữ mọi thứ ở đúng vị trí.
Thứ hai, dán miếng 4cm x 2cm lên đầu ống hút.
Thứ ba, lật lại toàn bộ miếng vải và dán một chốt nhỏ vào mặt sau của nó, không ở giữa mà hơi lệch sang trái. (Tôi quên thêm chốt nhỏ trong hình đầu tiên)
Cuối cùng, cắt một lỗ trên miếng bìa cứng lớn bằng kích thước mặt trước của mô tơ servo và dán mô tơ vào, sau đó dán mảnh chúng ta vừa tạo với chốt vào miếng lớn để khi servo di chuyển, nó sẽ đẩy chốt nhỏ xuống lần lượt đẩy lò xo xuống.
Cuối cùng, tôi cắt khoảng 3 cm từ phần dưới cùng của mảnh 12 cm x 4 cm và dán thêm hai miếng 4 cm x 1,5 cm vào nó, sau đó phủ nó bằng một miếng bìa cứng 5,5 cm x 4 cm. Và để giữ điểm đánh dấu, tôi đã làm một cái nhỏ vòng lặp của dây thun và dán nó vào một mảnh bìa cứng nhỏ, sau đó tôi dán nó vào mảnh 4cm x 2cm sẽ di chuyển xuống khi servo bắt đầu. Những bổ sung này đã ngăn điểm đánh dấu di chuyển từ bên này sang bên kia khi các lò xo quay trở lại.
Bước 3: Thêm động cơ Servo và cuộn giấy vào đế
Tôi thêm hai viên gạch nữa vào một bên của đế để đỡ miếng servo và tôi dán nó vào vị trí, sau đó tôi thêm bánh xe vào đầu xa của đế.
Bước 4: Xây dựng khung động cơ bước
Bước này hơi khó khăn vì động cơ không được tạo ra để phù hợp với Lego một cách hoàn hảo. Tuy nhiên, tôi đã cố gắng làm điều đó bằng cách sử dụng hai lỗ trên động cơ để cố định nó vào đúng vị trí. Tiếp theo, tôi dán một bánh xe Lego vào đầu của động cơ và sau đó tôi đặt nó ngay bên cạnh đế ở phía mà tôi đã mở ở bước 1.
Bước 5: Hoàn thiện các lần chạm
Tôi thêm hai miếng vòng cung để che bánh xe để cố định giấy vào vị trí. Và tôi thêm hai miếng vòng cung nhỏ hơn, một miếng để giữ dây của động cơ bước và một miếng khác để giữ giấy. Cuối cùng, tôi đã thay đổi bánh xe động cơ bước thành một bánh xe lớn hơn một chút để di chuyển giấy tốt hơn bánh xe cũ.
Bước 6: Điện tử
Cuối cùng, bạn phải kết nối động cơ với Arduino và tải mã lên.
Chúng ta sẽ bắt đầu với động cơ servo, kết nối dây màu nâu (dây nối đất) với chân GND, sau đó dây màu đỏ (dây nguồn) vào chân 5V, và dây màu cam (dây tín hiệu) với Dig # 5 ghim. Tiếp theo, động cơ bước, kết nối 1N1 với Đào # 11, 1N2 với Đào # 10, 1N3 với Đào # 9, 1N4 với Đào # 8, 5V với mặt dương của bảng mạch và chân nối đất với mặt âm của bảng bánh mì. Và đừng quên kết nối mô-đun cấp nguồn với breadboard, đảm bảo rằng các mặt âm và dương của nó căn chỉnh chính xác với các mặt tương ứng trên breadboard. Nếu bạn quên làm như vậy, bạn sẽ đảo ngược sức mạnh cho dự án của mình và bạn không muốn làm điều đó.
Đối với mã, tôi đã viết bốn phương pháp, một để viết dấu chấm, một để viết dấu gạch ngang, và hai là để khoảng trống giữa mỗi chữ cái và mỗi từ. Bằng cách đó, tôi chỉ có thể gọi các phương thức này khi tôi cần thay vì viết lại cho mọi chữ cái. Sau đó, tôi viết một vòng lặp for đi qua từng chữ cái của văn bản và viết nó, Bên trong nó, tôi đã viết một câu lệnh if cho mỗi chữ cái nhưng bạn có thể viết nó trong một câu lệnh switch nếu bạn thích. Tất nhiên bạn có thể thêm vào mã để cho phép chương trình đọc số. Khi tất cả các dây đã sẵn sàng, chỉ cần sao chép và dán mã vào IDE của bạn. Đừng quên cài đặt thư viện bước, servo và chuỗi. Sau đó, bạn tốt để đi.
Làm thế nào nó hoạt động
Khi Arduino khởi động chương trình sẽ nhìn vào chữ cái đầu tiên của văn bản, và tùy thuộc vào chữ cái nào, nó sẽ gọi các hàm viết nó bằng mã Morse. Ví dụ: khi chức năng dấu chấm được gọi, động cơ servo được đặt thành 160 để di chuyển bút xuống, sau đó nó được đặt trở lại 90 cho phép các lò xo quay trở lại di chuyển bút theo chúng. Và nếu chức năng gạch ngang được gọi, servo sẽ di chuyển bút xuống, sau đó động cơ bước sẽ quay bánh xe kéo giấy làm cho bút viết một dấu gạch ngang. Và nếu một trong những chức năng không gian được gọi là động cơ bước quay nhưng với cây bút lên để nó kéo giấy tạo ra một khoảng trống giữa các chữ cái hoặc các từ. Khi hoàn tất, nó chuyển sang chữ cái tiếp theo và lặp lại quy trình tương tự. Tôi hy vọng bạn thích nó;)
Mật mã
#bao gồm
#include #include #include const int stepsPerRevolution = 150; // Đây là biến cho động cơ bước String câu = "* hello"; // Thay đổi biến này để viết các từ khác nhau nhưng chỉ viết bằng chữ nhỏ và bắt đầu từ của bạn bằng "*" Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Đây là phương thức khiến robot ghi dấu chấm void dot () {Serial.println ("dot start"); myServo.write (160); chậm trễ (1000); myServo.write (90); chậm trễ (1000); myStepper.step (stepsPerRevolution); chậm trễ (1000); Serial.println ("chấm xong"); } // Đây là phương thức khiến robot viết dấu gạch ngang void dash () {Serial.println ("dash start"); myServo.write (160); chậm trễ (1000); myStepper.step (stepsPerRevolution); chậm trễ (1000); myServo.write (90); chậm trễ (1000); myStepper.step (stepsPerRevolution); chậm trễ (1000); Serial.println ("dấu gạch ngang đã xong"); } // Đây là phương thức làm cho robot để lại một khoảng trắng giữa mỗi chữ cái void space () {Serial.println ("space start"); myServo.write (90); chậm trễ (1000); myStepper.step (200); chậm trễ (1000); Serial.println ("dấu cách đã xong"); } // Đây là phương thức làm cho robot để lại khoảng trắng lớn hơn giữa mỗi từ void bigSpace () {myServo.write (90); myStepper.step (250); chậm trễ (1000); } void setup () {// đặt mã thiết lập của bạn ở đây, để chạy một lần: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int đầu tiên = câu.indexOf ('*'); // vòng lặp for này đi qua từng chữ cái của chuỗi và sau đó gọi các phương thức phù hợp để viết nó ra for (int i = 0; i <question.length (); i ++) {if (question.charAt (first + i) == 'a') {Serial.print (".-"); dấu chấm (); dấu gạch ngang (); không gian(); } else if (câu.charAt (first + i) == 'b') {Serial.print ("-…"); dấu gạch ngang (); dấu chấm (); dấu chấm (); dấu chấm (); không gian(); } else if (câu.charAt (first + i) == 'c') {Serial.print ("-.-."); dấu gạch ngang (); dấu chấm (); dấu gạch ngang (); dấu chấm (); không gian(); } else if (câu.charAt (first + i) == 'd') {Serial.print ("-.."); dấu gạch ngang (); dấu chấm (); dấu chấm (); không gian(); } else if (câu.charAt (first + i) == 'e') {Serial.print ("."); dấu chấm (); không gian(); } else if (câu.charAt (first + i) == 'f') {Serial.print ("..-."); dấu chấm (); dấu chấm (); dấu gạch ngang (); dấu chấm (); không gian(); } else if (câu.charAt (first + i) == 'g') {Serial.print ("-."); dấu gạch ngang (); dấu gạch ngang (); dấu chấm (); không gian(); } else if (câu.charAt (first + i) == 'h') {Serial.print ("…."); dấu chấm (); dấu chấm (); dấu chấm (); dấu chấm (); không gian(); } else if (câu.charAt (first + i) == 'i') {Serial.print (".."); dấu chấm (); dấu chấm (); không gian(); } else if (câu.charAt (first + i) == 'j') {Serial.print (".---"); dấu chấm (); dấu gạch ngang (); dấu gạch ngang (); dấu gạch ngang (); không gian(); } else if (câu.charAt (first + i) == 'k') {Serial.print ("-.-"); dấu gạch ngang (); dấu chấm (); dấu gạch ngang (); không gian(); } else if (câu.charAt (first + i) == 'l') {Serial.print (".-.."); dấu chấm (); dấu gạch ngang (); dấu chấm (); dấu chấm (); không gian(); } else if (câu.charAt (first + i) == 'm') {Serial.print ("-"); dấu gạch ngang (); dấu gạch ngang (); không gian(); } else if (câu.charAt (first + i) == 'n') {Serial.print ("-."); dấu gạch ngang (); dấu chấm (); không gian(); } else if (câu.charAt (first + i) == 'o') {Serial.print ("---"); dấu gạch ngang (); dấu gạch ngang (); dấu gạch ngang (); không gian(); } else if (câu.charAt (first + i) == 'p') {Serial.print (".--."); dấu chấm (); dấu gạch ngang (); dấu gạch ngang (); dấu chấm (); không gian(); } else if (câu.charAt (first + i) == 'q') {Serial.print ("--.-"); dấu gạch ngang (); dấu gạch ngang (); dấu chấm (); dấu gạch ngang (); không gian(); } else if (câu.charAt (first + i) == 'r') {Serial.print (".-."); dấu chấm (); dấu gạch ngang (); dấu chấm (); không gian(); } else if (câu.charAt (first + i) == 's') {Serial.print ("…"); dấu chấm (); dấu chấm (); dấu chấm (); không gian(); } else if (câu.charAt (first + i) == 't') {Serial.print ("-"); dấu gạch ngang (); không gian(); } else if (câu.charAt (first + i) == 'u') {Serial.print ("..-"); dấu chấm (); dấu chấm (); dấu gạch ngang (); không gian(); } else if (câu.charAt (first + i) == 'v') {Serial.print ("… -"); dấu chấm (); dấu chấm (); dấu chấm (); dấu gạch ngang (); không gian(); } else if (câu.charAt (first + i) == 'w') {Serial.print (".--"); dấu chấm (); dấu gạch ngang (); dấu gạch ngang (); không gian(); } else if (câu.charAt (first + i) == 'x') {Serial.print ("-..-"); dấu gạch ngang (); dấu chấm (); dấu chấm (); dấu gạch ngang (); không gian(); } else if (câu.charAt (first + i) == 'y') {Serial.print ("-.--"); dấu gạch ngang (); dấu chấm (); dấu gạch ngang (); dấu gạch ngang (); không gian(); } else if (câu.charAt (first + i) == 'z') {Serial.print ("-.."); dấu gạch ngang (); dấu gạch ngang (); dấu chấm (); dấu chấm (); không gian(); } else if (câu.charAt (first + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Đừng viết gì ở đây}
Bước 7: Khắc phục sự cố
Bánh xe không chuyển động
Có thể có quá nhiều ma sát giữa bánh xe và giấy, hãy thử nâng bánh xe lên một chút hoặc thay đổi nó.
Bánh xe kéo giấy nhưng sau đó nó vẫn quay mà không kéo được giấy
Đảm bảo rằng bạn đã dán bánh xe vào giữa động cơ bước
Các dấu chấm và dấu gạch ngang được kết nối với nhau
Kiểm tra xem các hàm dấu chấm, dấu gạch ngang và dấu cách có được viết đúng hay không, chúng sẽ như thế này:
// Đây là phương thức làm cho robot viết dấu chấm dotvoid () {Serial.println ("dot start"); myServo.write (160); chậm trễ (1000); myServo.write (90); chậm trễ (1000); myStepper.step (stepsPerRevolution); chậm trễ (1000); Serial.println ("chấm xong"); }
// Đây là phương thức làm cho rô bốt viết một dấu gạch ngang
void dash () {Serial.println ("bắt đầu bằng dấu gạch ngang"); myServo.write (160); chậm trễ (1000); myStepper.step (stepsPerRevolution); chậm trễ (1000); myServo.write (90); chậm trễ (1000); myStepper.step (stepsPerRevolution); chậm trễ (1000); Serial.println ("dấu gạch ngang đã xong"); }
// Đây là phương thức làm cho robot để lại khoảng cách giữa mỗi chữ cái
void space () {Serial.println ("dấu cách bắt đầu"); myServo.write (90); chậm trễ (1000); myStepper.step (200); chậm trễ (1000); Serial.println ("dấu cách đã xong"); }
Đề xuất:
(gần như) Lập trình viên MIDI SysEx CC đa năng (và Trình tự lập trình tự ): 7 bước (có Hình ảnh)
(gần như) Lập trình viên MIDI SysEx CC đa năng (và Trình lập trình …): Vào giữa những năm tám mươi, các bộ sản xuất tổng hợp bắt đầu " ít hơn là tốt hơn " quá trình dẫn đến synths barebone. Điều này cho phép giảm chi phí về mặt sản xuất, nhưng làm cho quá trình vá lỗi trở nên thành công nếu không muốn nói là không thể sử dụng cuối cùng
DoReMiQuencer - Trình tự theo trình tự MIDI có thể lập trình với bàn phím: 7 bước
DoReMiQuencer - Bộ điều khiển MIDI có thể lập trình với bàn phím: Thiết bị này được tạo ra để sử dụng với VCVRack, một bộ tổng hợp mô-đun ảo do VCV tạo ra, nhưng có thể hoạt động như một bộ điều khiển MIDI mục đích chung. Nó hoạt động như một bộ tuần tự MIDI hoặc bàn phím, tùy thuộc vào chế độ đã chọn. Các nốt MIDI được ánh xạ tới ke
Chỉnh sửa ảnh viết màn hình tiêu đề Pokémon GBA: 10 bước (có hình ảnh)
Chỉnh sửa GBA Pokémon Title Screen Sprite: Sau khi đánh bại Elite Four một lần nữa trên Pok é mon Yellow vài ngày trước, tôi tự hỏi liệu đã có phiên bản làm lại của trò chơi giới thiệu tôi với thế giới Pok é mon chưa. Thật không may là không có, nhưng bằng cách nhìn xung quanh, tôi đã được giới thiệu với
Trình viết chữ nổi Braille đơn giản (Lời nói sang chữ nổi Braille): 8 bước (có Hình ảnh)
Simple Braille Writer (Speech to Braille): Xin chào tất cả mọi người, Tất cả những điều này bắt đầu bằng việc làm một máy vẽ XY đơn giản sau khi hoàn thành nó thành công, tôi nghĩ rằng sẽ phát triển một trình chuyển đổi văn bản từ giọng nói sang chữ nổi Braille đơn giản. Tôi bắt đầu tìm kiếm nó trên mạng và không ngờ giá quá cao. , điều đó đã thúc đẩy tôi
Hướng dẫn lập trình thú vị cho nhà thiết kế - Kiểm soát quy trình chương trình- Tuyên bố vòng lặp: 8 bước
Hướng dẫn lập trình thú vị cho nhà thiết kế - Điều khiển quy trình chương trình- Tuyên bố vòng lặp: Điều khiển quy trình chương trình- Tuyên bố vòng lặp Từ chương này, bạn sẽ tiếp xúc với một điểm kiến thức quan trọng và mạnh mẽ - Câu lệnh vòng lặp. Trước khi đọc chương này, nếu bạn muốn vẽ 10.000 vòng tròn trong chương trình, bạn chỉ có thể thực hiện với một