Mã Morse là một hệ thống giao tiếp để mã hóa bất kỳ ký tự nào trong hai khoảng thời gian khác nhau của tín hiệu được gọi là Dấu chấm và Dấu gạch ngang . Mã Morse được phát triển bởi Samuel FB và tiếp tục được sử dụng trong điện báo để chuyển thông tin bí mật. Nó được sử dụng nhiều nhất vào thời điểm Chiến tranh thế giới thứ hai. Mã Morse có thể được thực hiện bằng cách chạm, nhấp nháy đèn hoặc viết. Mã Morse có hai phiên bản, bản chính và mã morse quốc tế. Trong mã morse quốc tế, phiên bản gốc được sửa đổi bằng cách loại bỏ khoảng trắng và thiết kế dấu gạch ngang theo độ dài cụ thể. Mã Morse có sẵn để mã hóa bảng chữ cái và số. Nó chủ yếu được sử dụng trong liên lạc vô tuyến và viễn dương và cũng là một phần huấn luyện cho binh lính.
Ngôn ngữ luôn là rào cản đối với mã Morse, vì rất khó để thực hiện mã cho các ký tự dấu trong ngôn ngữ khác. Có một số từ nổi tiếng được coi là tính năng quan trọng của mã Morse như 'SOS'. SOS dạng đầy đủ là Save Our Souls được tạo ra như một tín hiệu cấp cứu chung đại diện cho sự nguy hiểm.
Hình ảnh dưới đây cho thấy mã Morse cho các bảng chữ cái từ A đến Z.
Hôm nay trong hướng dẫn này, chúng ta sẽ xây dựng một Trình biên dịch mã Morse bằng Arduino sẽ lấy bất kỳ ký tự nào làm đầu vào từ màn hình nối tiếp và chuyển đổi nó thành tiếng bíp tương đương với mã Morse bằng buzzer.
Thành phần bắt buộc
- Arduino Uno
- Buzzer
- Breadboard
- Dây nhảy
Sơ đồ mạch
Kết nối chân dương của bộ rung với chân thứ 8 của Arudino UNO và chân âm với đất của Arduino. Tải lên mã bằng Arduino IDE và nhập các ký tự trên màn hình nối tiếp để tạo âm thanh. Một màn hình LCD cũng có thể được thêm vào với Arduino để hiển thị dấu gạch ngang và dấu chấm.
Giải thích lập trình
Mã hoàn chỉnh cho Trình tạo mã Arduino Morse được đưa ra ở cuối, ở đây chúng tôi sẽ giải thích chương trình để hiểu hoạt động của dự án.
Đoạn mã dưới đây được sử dụng để nhận chuỗi ký tự và sau đó chuyển nó thành mã morse.
char stringToMorseCode = "";
Sau đó, xác định chân cắm cho bộ rung được kết nối với Arduino và cao độ cho âm thanh do bộ rung đó tạo ra. Sau đó, chúng tôi đang xác định độ dài của dấu chấm và dấu gạch ngang.
int audio8 = 8; // xuất âm thanh trên chân 8 int note = 1200; // nốt nhạc / nốt nhạc int dotLen = 100; // độ dài của mã morse 'dot' int dashLen = dotLen * 3; // độ dài của mã morse 'gạch ngang'
Trong hàm void loop () , nếu có sẵn dữ liệu nối tiếp, nó sẽ lưu vào một biến indata . Sau đó, nó đọc từng ký tự một bằng lệnh inData . Lệnh biến.toUppercase () được sử dụng để thay đổi các ký tự chữ thường thành chữ hoa. Sau đó, nó tạo ra âm thanh theo từng ký tự.
void loop () { char inChar = 0; char inData = ""; // độ dài dữ liệu gồm 6 ký tự Biến chuỗi = ""; Biến chuỗi1 = ""; int index1 = 0; if (Serial.available ()> 0) { while (Serial.available ()> 0 && index1 <100) { delay (100); inChar = Serial.read (); inData = inChar; index1 ++; inData = '\ 0'; } variable.toUpperCase (); for (byte i = 0; i <100; i ++) { variable.concat (String (inData)); } trễ (20);
Các chức năng bên dưới MorseDot và MorseDash được sử dụng để tạo âm thanh cho dấu chấm và dấu gạch ngang tương ứng.
void MorseDot () { tone (audio8, note, dotLen); // bắt đầu phát âm báo trễ (dotLen); // giữ ở vị trí này } void MorseDash () { tone (audio8, note, dashLen); // bắt đầu phát âm báo trễ (dashLen); // giữ vị trí này }
Hàm GetChar có mã cho tất cả các bảng chữ cái. Vì vậy, bất cứ khi nào chúng ta gõ bất kỳ bảng chữ cái nào, mã morse tương ứng sẽ được lấy từ hàm này để tạo ra âm thanh cụ thể.
void GetChar (char tmpChar) { switch (tmpChar) { case 'a': MorseDot (); chậm trễ (100); MorseDash (); chậm trễ (100); phá vỡ; ... ... ... mặc định: nghỉ ngơi; } }
Bây giờ hãy tải mã vào Arduino bằng Arduino IDE và nhập bất kỳ ký tự nào vào màn hình nối tiếp và nhấn nút enter để gửi các ký tự đến Arduino.
Ở đây chúng tôi đã nhập 'SOS', một tín hiệu báo động phổ quát, để tạo ra âm thanh tương tự.
Minh chứng cho điều tương tự được đưa ra trong video dưới đây.