Ниже по тексту готовый скетч для маяка, лежит в свободном доступе и взят отсюда
www.m0pzt.com/arduino/
Выкладываю что бы долго не искали те кому это интересно и может пригодится. В этом деле я чайник и напишу только то что я сам понял и делал с этим кодом.
int MorseLEDPin = 13; это строка в коде означает что выход ключевания на 13 цифровом пине, можно подать на базу кт-315 через резистор 1 ком, эммитер на массу, с коллектора уже непосредственно к гнезду "ключ" например в том же PIXIE.
int MorseTonePin = 5; выход для самоконтроля на пищалку, пин 5, я поставил капсуль на 120 ом и довольно громко пикает.
int MorseToneFreq = 700; Тон самоконтроля, поменял на 600 герц стало комфортнее.
int MorseWPM = 16; Скорость ключевания, я выставил 20 wpm
delay(5000); В самом конце кода, этим значением выставляется пауза между передачами тоесть сообщениями, в данном случае 5000 миллисекунд тоесть пауза 5 секунд, у меня выставлено 60000 тоесть 1 минута.
#define strBeacondID "M0PZT JO01FS PWR 1W" А тут можно текст передачи поменять на свой, позывной, локатор и.т.д
Код что находится ниже копируем вставляем в программу ардуино, редактируем под себя и загружаем на плату ардуино.
Написал все это для совсем начинающих (вроде меня) которые хотят познакомится с ардуино и применить в радиолюбительстве.
// Simple CW Beacon
// by Charlie Davy M0PZT
// 23rd December 2014
int pinPTT = 4;
int MorseLEDPin = 13;
int MorseTonePin = 5;
int MorseToneFreq = 700;
int MorseWPM = 16;
// Declare variables...
#define strBeacondID "M0PZT JO01FS PWR 1W"
// Bung Morse into an array
char* MorseCodeCharacters[] = {
"A", ".-",
"B","-...",
"C","-.-.",
"D","-..",
"E",".",
"F","..-.",
"G","--.",
"H","....",
"I","..",
"J",".---",
"K","-.-",
"L",".-..",
"M","--",
"N","-.",
"O","---",
"P",".--.",
"Q","--.-",
"R",".-.",
"S","...",
"T","-",
"U","..-",
"V","...-",
"W",".--",
"X","-..-",
"Y","-.--",
"Z","--..",
"0","
",
"1",".----",
"2","..---",
"3","...--",
"4","....-",
"5",".....",
"6","-....",
"7","--...",
"8","---..",
"9","----.",
"/","-..-.",
"*","-.-.-",
".",".-.-.",
"&","...-.-",
" "," "
};
//
void setup() {
Serial.begin(9600);
pinMode(pinPTT, OUTPUT);
pinMode(MorseLEDPin, OUTPUT);
pinMode(MorseTonePin, OUTPUT);
Serial.println("M0PZT CW Beacon - Welcome"); Serial.println();
}
void TransmitMorse(String MorseString, int MorseWPM,int MorseToneFreq) {
Serial.print("Message: ");
Serial.println(MorseString);
int CWdot = 1200 / MorseWPM;
int CWdash = (1200 / MorseWPM)*3;
int istr;
for (istr=0; istr < MorseString.length(); istr++) {
String currentchar = MorseString.substring(istr,istr+1);
int ichar = 0;
while(ichar < sizeof(MorseCodeCharacters)) {
String currentletter = MorseCodeCharacters[ichar]; // letter
String currentcode = MorseCodeCharacters[ichar+1]; // corresponding morse code
if (currentletter.equalsIgnoreCase(currentchar)) {
int icp=0;
for (icp=0;icp < currentcode.length(); icp++) {
// Transmit Dit
if (currentcode.substring(icp,icp+1).equalsIgnoreCase(".")) {
digitalWrite(MorseLEDPin, HIGH);
tone(MorseTonePin, MorseToneFreq);
delay(CWdot);
digitalWrite(MorseLEDPin, LOW);
noTone(MorseTonePin);
delay(CWdot);
}
// Transmit Dah
else if (currentcode.substring(icp,icp+1).equalsIgnoreCase("-")) {
digitalWrite(MorseLEDPin, HIGH);
tone(MorseTonePin, MorseToneFreq);
delay(CWdash);
digitalWrite(MorseLEDPin, LOW);
noTone(MorseTonePin);
delay(CWdot);
}
else if (currentcode.substring(icp,icp+1).equalsIgnoreCase(" ")) {
delay(CWdot*3);
};
}
}
ichar=ichar+2;
}
delay(CWdot*3);
}
delay(CWdot*7);
}
void loop() {
digitalWrite(pinPTT, HIGH);
TransmitMorse(strBeacondID, MorseWPM, MorseToneFreq);
digitalWrite(pinPTT, LOW);
delay(5000);
}