Baliza autonoma de CW
Baliza de CW usando arduino nano, salida por pin 13 de LED, cambiarlo según pin a utilizar. Codigo suministrado a manera ilustrativa.
/*
Programa de baliza morse para CW....Uso libre, por favor cite la fuente. Andres LU3HO.
*/
int vel=15; //ajustar velocidad en palabras por minuto
//constantes de duracion de puntos, rayas y espacios. No tocar a menos que se quiera cambiar el peso de la TX.
int p=1200/vel; //duracion punto en milisegundos
int r=3*p; //duracion raya
int e=p; //duracion espacio entre puntos y/o rayas
int el=3*p; //duracion espacio entre letras
int pa=7*p; //duracion espacio entre palabras
void setup() {
pinMode(13, OUTPUT); //pin 13 de salida, led en la placa.
}
void letras(char letra){ //definicion alfabeto morse clásico básico
switch(letra){
case 'a': pu();ra();ele();break;
case 'b': ra();pu();pu();pu();ele();break;
case 'c': ra();pu();ra();pu();ele();break;
case 'd': ra();pu();pu();ele();break;
case 'e': pu();ele();break;
case 'f': pu();pu();ra();pu();ele();break;
case 'g': ra();ra();pu();ele();break;
case 'h': pu();pu();pu();pu();ele();break;
case 'i': pu();pu();ele();break;
case 'j': pu();ra();ra();ra();ele();break;
case 'k': ra();pu;ra();ele();break;
case 'l': pu();ra();pu();pu();ele();break;
case 'm': ra();ra();ele();break;
case 'n': ra();pu();ele();break;
case 'o': ra();ra();ra();ele();break;
case 'p': pu();ra();ra();pu();ele();break;
case 'q': ra();ra();pu();ra();ele();break;
case 'r': pu();ra();pu();ele();break;
case 's': pu();pu();pu();ele();break;
case 't': ra();ele();break;
case 'u': pu();pu();ra();ele();break;
case 'v': pu();pu();pu();ra();ele();break;
case 'w': pu();ra();ra();ele();break;
case 'x': ra();pu();pu();ra();ele();break;
case 'y': ra();pu();ra();ra();ele();break;
case 'z': ra();ra();pu();pu();ele();break;
case '0': ra();ra();ra();ra();ra();ele();break;
case '1': pu();ra();ra();ra();ra();ele();break;
case '2': pu();pu();ra();ra();ra();ele();break;
case '3': pu();pu();pu();ra();ra();ele();break;
case '4': pu();pu();pu();pu();ra();ele();break;
case '5': pu();pu();pu();pu();pu();ele();break;
case '6': ra();pu();pu();pu();pu();ele();break;
case '7': ra();ra();pu();pu();pu();ele();break;
case '8': ra();ra();ra();pu();pu();ele();break;
case '9': ra();ra();ra();ra();pu();ele();break;
case '/': ra();pu();pu();ra();pu();ele();break;
case '.': pu();ra();pu();ra();pu();ra();ele();break;
case '=': ra();pu();pu();pu();ra();ele();break;
case ',': ra();ra();pu();pu();ra();ra();ele();break;
case '?': pu();pu();ra();ra();pu();pu();ele();break;
case ' ': epa(); break; //silencio entre palabras
case '^': epa();epa();epa();break; //silencio largo
}
}
void pu(){ //secuencia de punto
digitalWrite(13, HIGH);
delay(p);
digitalWrite(13, LOW);
delay(e);
}
void ra(){ //secuencia de raya
digitalWrite(13, HIGH);
delay(r);
digitalWrite(13, LOW);
delay(e);
}
void ele(){ //secuencia de espacio entre letras
digitalWrite(13, LOW);
delay(el);
}
void epa(){ //secuencia de espacios entre palabras
digitalWrite(13, LOW);
delay(pa);
}
// the loop function runs over and over again forever
void loop() {
letras('h'); //inicio mensaje
letras('o');
letras('l');
letras('a');
letras(' ');
letras('a');
letras('m');
letras('i');
letras('g');
letras('o');
letras(' ');
letras(' '); //fin mensaje
}