سلام به همه!
امروز میخواهم آخرین پروژهام را برای شما توضیح دهم: «مولد کد مورس توسط صفحهکلید PS\2»
من از صفحه کلید PS/2 برای ارسال ورودی به برد آردوینو (مانند توضیح داده شده در اینجا ) استفاده کرده ام و آن را به کد مورس تبدیل می کنم که یک بلندگو و یک رله را فعال می کند.
قطعات:
– صفحه کلید PS\2
– آردوینو Uno (یا سایرین)
– سیم
– رله 5 ولت
– ترانزیستور BC547
– بلندگوی کوچک
– دیود چرخش
مرحله 1: تنظیم سخت افزار
تصویر پروژه Fritzing در زیر تقریباً همه چیز را توضیح می دهد، اما سخت ترین کار اتصال صفحه کلید به برد آردوینو است. همانطور که در اینجا توضیح داده شد، باید پین داده کانکتور PS\2 را به پایه 8 آردوینو، پایه ساعت را به دومی، پایه 5 ولتی را به منبع 5 ولت و پایه GND را به GND وصل کنیم. اگر یک کانکتور PS\2 ماده پیدا کردید، بسیار خوش شانس هستید و می توانید از آن استفاده کنید، اما دیگران می توانند مانند من این کار را انجام دهند: من به عنوان جایگزین از قسمت فلزی که با نوار عایق پوشانده شده است، کانکتورهایی که روی بردهای مادر استفاده می شود استفاده کرده ام (برای سیم ها از: LED های پاور و HDD، دکمه های پاور و ریست، کانکتورهای فیس USB، و غیره.) .
مرحله 2: نرم افزار و نتیجه گیری
در اینجا فایل '.ino' که من ساخته ام پیوست شده است. کتابخانه «PS2Keyboard.h» را در اینجا پیدا خواهید کرد . از آن لذت ببرید.
/************
morse.ino
**********/
#include <PS2Keyboard.h>
const int DataPin = 8;
const int IRQpin = 2;
صفحه کلید PS2Keyboard;
void setup() {
delay(1000);
keyboard.begin (DataPin، IRQpin);
}
void loop() {
if (keyboard.available()) {
char c = keyboard.read();
if (c == 'a') {
p();l();
} else if (c == 'b') {
l();p();p();p();
} else if (c == 'c') {
l();p();l();p();
} else if (c == 'd') {
l();p();p();
} else if (c == 'e') {
p();
} else if (c == 'f') {
p();p();l();p();
} else if (c == 'g') {
l();l();p();
} else if (c == 'h') {
p();p();p();p();
} else if (c == 'i') {
p();p();
} else if (c == 'j') {
p();l();l();l();
} else if (c == 'k') {
l();p();l();
} else if (c == 'l') {
p();l();p();p();
} else if (c == 'm') {
l();l();
} else if (c == 'n') {
l();p();
} else if (c == 'o') {
l();l();l();
} else if (c == 'p') {
p();l();l();p();
} else if (c == 'q') {
l();l();p();l();
} else if (c == 'r') {
p();l();p();
} else if (c == 's') {
p();p();p();
} else if (c == 't') {
l();
} else if (c == 'u') {
p();p();l();
} else if (c == 'v') {
p();p();p();l();
} else if (c == 'w') {
p();l();l();
} else if (c == 'x') {
l();p();p();l();
} else if (c == 'y') {
l();p();l();l();
} else if (c == 'z') {
l();l();p();p();
} else if (c == '1') {
p();l();l();l();l();
} else if (c == '2') {
p();p();l();l();l();
} else if (c == '3') {
p();p();p();l();l();
} else if (c == '4') {
p();p();p();p();l();
} else if (c == '5') {
p();p();p();p();p();
} else if (c == '6') {
l();p();p();p();p();
} else if (c == '7') {
l();l();p();p();p();
} else if (c == '8') {
l();l();l();p();p();
} else if (c == '9') {
l();l();l();l();p();
} else if (c == '0') {
l();l();l();l();l();
} else if (c == ' ') {
pausa();
} else {
tone(4, 300, 250); //تن خطا
}
}
}