Для этого проекта нам понадобится:
- Плата Ардуино
- Клавиатура PS/2
- Входной разьем PS/2
Программа:
#include <PS2Keyboard.h>
int S = 13; //Номер пина на который выводится звук
int P = 80; //Длительность точки
int D = P*2.5; //Длительность тире
int F = 1000; //Частота, Hz
const int DataPin = 2;
const int IRQpin = 3;
PS2Keyboard keyboard;
void setup() {
delay(1000);
keyboard.begin(DataPin, IRQpin);
}
void loop() {
if (keyboard.available()) {
char c = keyboard.read();
if (c == 'q') {
Dash();
Dash();
Point();
Dash();
delay(D);
}
else {
if (c == 'w') {
Point();
Dash();
Dash();
delay(D);
}
else {
if (c == 'e') {
Point();
delay(D);
}
else { if (c == 'r') {
Point();
Dash();
Point();
delay(D);
} else { if (c == 't') {
Dash();
delay(D);
} else { if (c == 'y') {
Dash();
Point();
Dash();
Dash();
delay(D);
} else { if (c == 'u') {
Point();
Point();
Dash();
delay(D);
} else { if (c == 'i') {
Point();
Point();
delay(D);
} else { if (c == 'o') {
Dash();
Dash();
Dash();
delay(D);
} else { if (c == 'p') {
Point();
Dash();
Dash();
Point();
delay(D);
} else { if (c == 'a') {
Point();
Dash();
delay(D);
} else { if (c == 's') {
Point();
Point();
Point();
delay(D);
} else { if (c == 'd') {
Dash();
Point();
Point();
delay(D);
} else { if (c == 'f') {
Point();
Point();
Dash();
Point();
delay(D);
} else { if (c == 'g') {
Dash();
Dash();
Point();
delay(D);
} else { if (c == 'h') {
Point();
Point();
Point();
Point();
delay(D);
} else { if (c == 'j') {
Point();
Dash();
Dash();
Dash();
delay(D);
} else { if (c == 'k') {
Dash();
Point();
Dash();
delay(D);
} else { if (c == 'l') {
Point();
Dash();
Point();
Point();
delay(D);
} else { if (c == 'z') {
Dash();
Dash();
Point();
Point();
delay(D);
} else { if (c == 'x') {
Dash();
Point();
Point();
Dash();
delay(D);
} else { if (c == 'c') {
Dash();
Point();
Dash();
Point();
delay(D);
} else { if (c == 'v') {
Point();
Point();
Point();
Dash();
delay(D);
} else { if (c == 'b') {
Dash();
Point();
Point();
Point();
delay(D);
} else { if (c == 'n') {
Dash();
Point();
delay(D);
} else { if (c == 'm') {
Dash();
Dash();
delay(D);
}
else { if (c == '0') {
Dash();
Dash();
Dash();
Dash();
Dash();
delay(D);
} else { if (c == '1') {
Point();
Dash();
Dash();
Dash();
Dash();
delay(D);
}
else { if (c == '2') {
Point();
Point();
Dash();
Dash();
Dash();
delay(D);
} else { if (c == '3') {
Point();
Point();
Point();
Dash();
Dash();
delay(D);
} else { if (c == '4') {
Point();
Point();
Point();
Point();
Dash();
delay(D);
} else { if (c == '5') {
Point();
Point();
Point();
Point();
Point();
delay(D);
} else { if (c == '6') {
Dash();
Point();
Point();
Point();
Point();
delay(D);
} else { if (c == '7') {
Dash();
Dash();
Point();
Point();
Point();
delay(D);
} else { if (c == '8') {
Dash();
Dash();
Dash();
Point();
Point();
delay(D);
} else { if (c == '9') {
Dash();
Dash();
Dash();
Dash();
Point();
delay(D);
} else { if (c == PS2_PAGEUP) {
P -=10;
} else { if (c == PS2_PAGEDOWN) {
P +=10;
}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
}
}
}
void Dash() {
tone(S,F,D);
delay(D+P);
}
void Point() {
tone(S,F,P);
delay(P*2);
}
Вот и все теперь при нажатии любой клавиши будет воспроизодиться ее код в азбуке морзе. И при нажатии PAGE DOWN или PAGE UP будет уменьшаться скорость передачи или увеличиваться соответственно