Thought I should put up this code for baudot, maybe get idea's -------
//---------------------------------------------------------------------
//
//
// KE6JMG
//
//
//----------------------------------------------------------------------
#include <stdio.h>
////////////////////////////////////////////////////////////////////////////
#define AFSK_OUT A1 // AFSK AUDIO Nano pin OUTPUT
#define MARK 1275 // AFSK mark 1275 hertz sinewave
#define SPACE 1445 // AFSK space 1445 hertz sinewave
#define BaudRate 45.45 // RTTY baud rate
#define StopBit 1.5 // stop bit long
#define SERBAUD 9600 // Serial port in/out baudrate
#define serialECHO // enable TX echo on serial port
////////////////////////////////////////////////////////////////////////////
int OneBit = 1/BaudRate*1000; // (22ms)
boolean d1;
boolean d2;
boolean d3;
boolean d4;
boolean d5;
boolean space;
char ch;
void setup()
{
pinMode(AFSK_OUT, OUTPUT);
Serial.begin(SERBAUD);
tone(AFSK_OUT, MARK);
sendFsk();
}
void sendFsk()
{
#if defined(serialECHO )
Serial.print(ch);Serial.print("--> ");Serial.print(d1);Serial.print(d2);
Serial.print(d3);Serial.print(d4);Serial.print(d5);
#endif
//--start bit
tone(AFSK_OUT, SPACE); delay(OneBit);
//--bit1
if(d1 == 1){tone(AFSK_OUT, MARK); }
else {tone(AFSK_OUT, SPACE);} delay(OneBit);
//--bit2
if(d2 == 1){tone(AFSK_OUT, MARK); }
else {tone(AFSK_OUT, SPACE);} delay(OneBit);
//--bit3
if(d3 == 1){tone(AFSK_OUT, MARK); }
else {tone(AFSK_OUT, SPACE);} delay(OneBit);
//--bit4
if(d4 == 1){tone(AFSK_OUT, MARK); }
else {tone(AFSK_OUT, SPACE);} delay(OneBit);
//--bit5
if(d5 == 1){tone(AFSK_OUT, MARK); }
else {tone(AFSK_OUT, SPACE);} delay(OneBit);
//--stop bit
tone(AFSK_OUT, MARK); delay(OneBit*StopBit);
}
void chTable()
{
if(ch == ' ')
{
d1 = 0; d2 = 0; d3 = 1; d4 = 0; d5 = 0;
space = 1;
}
else if(ch == 'A'){d1 = 1; d2 = 1; d3 = 0; d4 = 0; d5 = 0;}
else if(ch == 'B'){d1 = 1; d2 = 0; d3 = 0; d4 = 1; d5 = 1;}
else if(ch == 'C'){d1 = 0; d2 = 1; d3 = 1; d4 = 1; d5 = 0;}
else if(ch == 'D'){d1 = 1; d2 = 0; d3 = 0; d4 = 1; d5 = 0;}
else if(ch == 'E'){d1 = 1; d2 = 0; d3 = 0; d4 = 0; d5 = 0;}
else if(ch == 'F'){d1 = 1; d2 = 0; d3 = 1; d4 = 1; d5 = 0;}
else if(ch == 'G'){d1 = 0; d2 = 1; d3 = 0; d4 = 1; d5 = 1;}
else if(ch == 'H'){d1 = 0; d2 = 0; d3 = 1; d4 = 0; d5 = 1;}
else if(ch == 'I'){d1 = 0; d2 = 1; d3 = 1; d4 = 0; d5 = 0;}
else if(ch == 'J'){d1 = 1; d2 = 1; d3 = 0; d4 = 1; d5 = 0;}
else if(ch == 'K'){d1 = 1; d2 = 1; d3 = 1; d4 = 1; d5 = 0;}
else if(ch == 'L'){d1 = 0; d2 = 1; d3 = 0; d4 = 0; d5 = 1;}
else if(ch == 'M'){d1 = 0; d2 = 0; d3 = 1; d4 = 1; d5 = 1;}
else if(ch == 'N'){d1 = 0; d2 = 0; d3 = 1; d4 = 1; d5 = 0;}
else if(ch == 'O'){d1 = 0; d2 = 0; d3 = 0; d4 = 1; d5 = 1;}
else if(ch == 'P'){d1 = 0; d2 = 1; d3 = 1; d4 = 0; d5 = 1;}
else if(ch == 'Q'){d1 = 1; d2 = 1; d3 = 1; d4 = 0; d5 = 1;}
else if(ch == 'R'){d1 = 0; d2 = 1; d3 = 0; d4 = 1; d5 = 0;}
else if(ch == 'S'){d1 = 1; d2 = 0; d3 = 1; d4 = 0; d5 = 0;}
else if(ch == 'T'){d1 = 0; d2 = 0; d3 = 0; d4 = 0; d5 = 1;}
else if(ch == 'U'){d1 = 1; d2 = 1; d3 = 1; d4 = 0; d5 = 0;}
else if(ch == 'V'){d1 = 0; d2 = 1; d3 = 1; d4 = 1; d5 = 1;}
else if(ch == 'W'){d1 = 1; d2 = 1; d3 = 0; d4 = 0; d5 = 1;}
else if(ch == 'X'){d1 = 1; d2 = 0; d3 = 1; d4 = 1; d5 = 1;}
else if(ch == 'Y'){d1 = 1; d2 = 0; d3 = 1; d4 = 0; d5 = 1;}
else if(ch == 'Z'){d1 = 1; d2 = 0; d3 = 0; d4 = 0; d5 = 1;}
else if(ch == '0'){d1 = 0; d2 = 1; d3 = 1; d4 = 0; d5 = 1;}
else if(ch == '1'){d1 = 1; d2 = 1; d3 = 1; d4 = 0; d5 = 1;}
else if(ch == '2'){d1 = 1; d2 = 1; d3 = 0; d4 = 0; d5 = 1;}
else if(ch == '3'){d1 = 1; d2 = 0; d3 = 0; d4 = 0; d5 = 0;}
else if(ch == '4'){d1 = 0; d2 = 1; d3 = 0; d4 = 1; d5 = 0;}
else if(ch == '5'){d1 = 0; d2 = 0; d3 = 0; d4 = 0; d5 = 1;}
else if(ch == '6'){d1 = 1; d2 = 0; d3 = 1; d4 = 0; d5 = 1;}
else if(ch == '7'){d1 = 1; d2 = 1; d3 = 1; d4 = 0; d5 = 0;}
else if(ch == '8'){d1 = 0; d2 = 1; d3 = 1; d4 = 0; d5 = 0;}
else if(ch == '9'){d1 = 0; d2 = 0; d3 = 0; d4 = 1; d5 = 1;}
else if(ch == '-'){d1 = 1; d2 = 1; d3 = 0; d4 = 0; d5 = 0;}
else if(ch == '?'){d1 = 1; d2 = 0; d3 = 0; d4 = 1; d5 = 1;}
else if(ch == ':'){d1 = 0; d2 = 1; d3 = 1; d4 = 1; d5 = 0;}
else if(ch == '('){d1 = 1; d2 = 1; d3 = 1; d4 = 1; d5 = 0;}
else if(ch == ')'){d1 = 0; d2 = 1; d3 = 0; d4 = 0; d5 = 1;}
else if(ch == '.'){d1 = 0; d2 = 0; d3 = 1; d4 = 1; d5 = 1;}
else if(ch == ','){d1 = 0; d2 = 0; d3 = 1; d4 = 1; d5 = 0;}
else if(ch == '/'){d1 = 1; d2 = 0; d3 = 1; d4 = 1; d5 = 1;}
else if(ch == '+'){d1 = 1; d2 = 0; d3 = 0; d4 = 0; d5 = 1;}
else if(ch == '>'){d1 = 0; d2 = 1; d3 = 0; d4 = 0; d5 = 0;} //LF
else if(ch == '<'){d1 = 0; d2 = 0; d3 = 0; d4 = 1; d5 = 0;} //CR
else if(ch == '~'){d1 = 1; d2 = 1; d3 = 1; d4 = 1; d5 = 1;} //Letters
else if(ch == '`'){d1 = 1; d2 = 1; d3 = 0; d4 = 1; d5 = 1;} //Figures
else
{
ch = ' ';
d1 = 0; d2 = 0; d3 = 1; d4 = 0; d5 = 0;
space = 1;
}
}
void loop(){
if (Serial.available()) {
while (Serial.available()) {
ch = toUpperCase(Serial.read());
chTable();
sendFsk();
}
Serial.println();
tone(AFSK_OUT, MARK);
}
}