Автор Тема: Контроллер для изучения азбуки морзе  (Прочитано 10635 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн R8ABB

  • Новичок
  • *
  • Сообщений: 4
  • Карма: +0/-0
Для этого проекта нам понадобится:
  • Плата Ардуино
  • Клавиатура 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 будет уменьшаться скорость передачи или увеличиваться соответственно

 



Последние сообщения на форуме:
[Беседка] Re: Радио Анекдоты от R8AFS 01 Апреля 2025, 07:31:34
[Новости] Re: Вспышки наСолнце2025 от R8AFS 29 Марта 2025, 07:00:24
[Доска частных объявлений] Куплю плиту от Унжи-1 от Oleg 21 Марта 2025, 16:20:06
[Новости] Проектирование РТС – 9 апреля от MaximSidorov 10 Марта 2025, 22:47:35
[Доска частных объявлений] Продам Icom 756 PRO II от R8ABD 04 Марта 2025, 18:58:08
[Технический форум] Re: Запорный дроссель. Вопрос как измерить АЧХ? от MO05 04 Марта 2025, 17:06:51
[Программы для радиолюбителей] Re: Программирование yaesu ft-7900r от Kraken Tor 04 Марта 2025, 16:59:36
[Технический форум] Re: Помогите с нотой мп-220с от Kraken Tor 04 Марта 2025, 16:57:03
[Технический форум] Ремонт от Алексей@65 03 Марта 2025, 09:06:19
[Новости] Re: Дворцу пионеров и школьников – 85! от R8AFS 25 Февраля 2025, 11:44:14
[Доска частных объявлений] Продам корпус от компа от Сергей 21 Февраля 2025, 08:26:32
[Цифровая обработка сигналов (SDR, DRM)] Re: WEB SDR-приемники России от feo 20 Февраля 2025, 18:38:43
[Доска частных объявлений] Прошу помощи от ra9avl 09 Февраля 2025, 21:48:48
[Беседка] Re: Иллюстрации на радиолюбительскую тематику в стиле цифрового искусства от MO05 06 Февраля 2025, 17:13:55
[Доска частных объявлений] LDG FT Meter SWR и другое. от UA1CCE 03 Февраля 2025, 18:53:34
[УКВ] Re: X-200 своими руками от genval 31 Января 2025, 15:11:56
[Программы для радиолюбителей] Re: CAT4Web - синхронизация трансивера и WebSDR от UA3BL 30 Января 2025, 23:14:39
[Технический форум] Маяк 144/432 на базе ПРДП_160_450_074 НПО "Центр-Протон" от R8ABD 25 Января 2025, 13:24:01
[Новости] Re: Вспышки наСолнце2024 от R8AFS 30 Декабря 2024, 11:11:51
[Программы для радиолюбителей] Портативная версия WSJT-X portable от R8AHC 21 Ноября 2024, 15:24:20