//45.45baud BAUDOT TELEMETRY BEACON v1.5
#include <stdio.h>
#define AFSK_OUT 12 //---- AFSK AUDIO OUTPUT
#define FSK_OUT 13 //---- TTL LEVEL OUTPUT
#define MARK 2295
#define SPACE 2125
const char ID[] = "DE JI3BNB /B";
boolean d1;
boolean d2;
boolean d3;
boolean d4;
boolean d5;
boolean sSq;
boolean sRd = 1;
boolean space;
boolean fig1;
int fig2;
byte i;
byte j;
byte idC;
char ch;
char sVal[9];
void setup()
{
pinMode(FSK_OUT, OUTPUT);
pinMode(AFSK_OUT, OUTPUT);
digitalWrite(FSK_OUT, HIGH);
tone(AFSK_OUT, MARK);
delay(700);
}
void sendFsk()
{
//--start bit
digitalWrite(FSK_OUT, LOW);
tone(AFSK_OUT, SPACE);
delay(22);
//--bit1
if(d1 == 1){
digitalWrite(FSK_OUT, HIGH);
tone(AFSK_OUT, MARK);
}
else{
digitalWrite(FSK_OUT, LOW);
tone(AFSK_OUT, SPACE);
}
delay(22);
//--bit2
if(d2 == 1){
digitalWrite(FSK_OUT, HIGH);
tone(AFSK_OUT, MARK);
}
else{
digitalWrite(FSK_OUT, LOW);
tone(AFSK_OUT, SPACE);
}
delay(22);
//--bit3
if(d3 == 1){
digitalWrite(FSK_OUT, HIGH);
tone(AFSK_OUT, MARK);
}
else{
digitalWrite(FSK_OUT, LOW);
tone(AFSK_OUT, SPACE);
}
delay(22);
//--bit4
if(d4 == 1){
digitalWrite(FSK_OUT, HIGH);
tone(AFSK_OUT, MARK);
}
else{
digitalWrite(FSK_OUT, LOW);
tone(AFSK_OUT, SPACE);
}
delay(22);
//--bit5
if(d5 == 1){
digitalWrite(FSK_OUT, HIGH);
tone(AFSK_OUT, MARK);
}
else{
digitalWrite(FSK_OUT, LOW);
tone(AFSK_OUT, SPACE);
}
delay(22);
//--stop bit
digitalWrite(FSK_OUT, HIGH);
tone(AFSK_OUT, MARK);
delay(33);
}
void chTable()
{
fig2 = -1;
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; fig2 = 0;}
else if(ch == 'B'){d1 = 1; d2 = 0; d3 = 0; d4 = 1; d5 = 1; fig2 = 0;}
else if(ch == 'C'){d1 = 0; d2 = 1; d3 = 1; d4 = 1; d5 = 0; fig2 = 0;}
else if(ch == 'D'){d1 = 1; d2 = 0; d3 = 0; d4 = 1; d5 = 0; fig2 = 0;}
else if(ch == 'E'){d1 = 1; d2 = 0; d3 = 0; d4 = 0; d5 = 0; fig2 = 0;}
else if(ch == 'F'){d1 = 1; d2 = 0; d3 = 1; d4 = 1; d5 = 0; fig2 = 0;}
else if(ch == 'G'){d1 = 0; d2 = 1; d3 = 0; d4 = 1; d5 = 1; fig2 = 0;}
else if(ch == 'H'){d1 = 0; d2 = 0; d3 = 1; d4 = 0; d5 = 1; fig2 = 0;}
else if(ch == 'I'){d1 = 0; d2 = 1; d3 = 1; d4 = 0; d5 = 0; fig2 = 0;}
else if(ch == 'J'){d1 = 1; d2 = 1; d3 = 0; d4 = 1; d5 = 0; fig2 = 0;}
else if(ch == 'K'){d1 = 1; d2 = 1; d3 = 1; d4 = 1; d5 = 0; fig2 = 0;}
else if(ch == 'L'){d1 = 0; d2 = 1; d3 = 0; d4 = 0; d5 = 1; fig2 = 0;}
else if(ch == 'M'){d1 = 0; d2 = 0; d3 = 1; d4 = 1; d5 = 1; fig2 = 0;}
else if(ch == 'N'){d1 = 0; d2 = 0; d3 = 1; d4 = 1; d5 = 0; fig2 = 0;}
else if(ch == 'O'){d1 = 0; d2 = 0; d3 = 0; d4 = 1; d5 = 1; fig2 = 0;}
else if(ch == 'P'){d1 = 0; d2 = 1; d3 = 1; d4 = 0; d5 = 1; fig2 = 0;}
else if(ch == 'Q'){d1 = 1; d2 = 1; d3 = 1; d4 = 0; d5 = 1; fig2 = 0;}
else if(ch == 'R'){d1 = 0; d2 = 1; d3 = 0; d4 = 1; d5 = 0; fig2 = 0;}
else if(ch == 'S'){d1 = 1; d2 = 0; d3 = 1; d4 = 0; d5 = 0; fig2 = 0;}
else if(ch == 'T'){d1 = 0; d2 = 0; d3 = 0; d4 = 0; d5 = 1; fig2 = 0;}
else if(ch == 'U'){d1 = 1; d2 = 1; d3 = 1; d4 = 0; d5 = 0; fig2 = 0;}
else if(ch == 'V'){d1 = 0; d2 = 1; d3 = 1; d4 = 1; d5 = 1; fig2 = 0;}
else if(ch == 'W'){d1 = 1; d2 = 1; d3 = 0; d4 = 0; d5 = 1; fig2 = 0;}
else if(ch == 'X'){d1 = 1; d2 = 0; d3 = 1; d4 = 1; d5 = 1; fig2 = 0;}
else if(ch == 'Y'){d1 = 1; d2 = 0; d3 = 1; d4 = 0; d5 = 1; fig2 = 0;}
else if(ch == 'Z'){d1 = 1; d2 = 0; d3 = 0; d4 = 0; d5 = 1; fig2 = 0;}
else if(ch == '0'){d1 = 0; d2 = 1; d3 = 1; d4 = 0; d5 = 1; fig2 = 1;}
else if(ch == '1'){d1 = 1; d2 = 1; d3 = 1; d4 = 0; d5 = 1; fig2 = 1;}
else if(ch == '2'){d1 = 1; d2 = 1; d3 = 0; d4 = 0; d5 = 1; fig2 = 1;}
else if(ch == '3'){d1 = 1; d2 = 0; d3 = 0; d4 = 0; d5 = 0; fig2 = 1;}
else if(ch == '4'){d1 = 0; d2 = 1; d3 = 0; d4 = 1; d5 = 0; fig2 = 1;}
else if(ch == '5'){d1 = 0; d2 = 0; d3 = 0; d4 = 0; d5 = 1; fig2 = 1;}
else if(ch == '6'){d1 = 1; d2 = 0; d3 = 1; d4 = 0; d5 = 1; fig2 = 1;}
else if(ch == '7'){d1 = 1; d2 = 1; d3 = 1; d4 = 0; d5 = 0; fig2 = 1;}
else if(ch == '8'){d1 = 0; d2 = 1; d3 = 1; d4 = 0; d5 = 0; fig2 = 1;}
else if(ch == '9'){d1 = 0; d2 = 0; d3 = 0; d4 = 1; d5 = 1; fig2 = 1;}
else if(ch == '-'){d1 = 1; d2 = 1; d3 = 0; d4 = 0; d5 = 0; fig2 = 1;}
else if(ch == '?'){d1 = 1; d2 = 0; d3 = 0; d4 = 1; d5 = 1; fig2 = 1;}
else if(ch == ':'){d1 = 0; d2 = 1; d3 = 1; d4 = 1; d5 = 0; fig2 = 1;}
else if(ch == '('){d1 = 1; d2 = 1; d3 = 1; d4 = 1; d5 = 0; fig2 = 1;}
else if(ch == ')'){d1 = 0; d2 = 1; d3 = 0; d4 = 0; d5 = 1; fig2 = 1;}
else if(ch == '.'){d1 = 0; d2 = 0; d3 = 1; d4 = 1; d5 = 1; fig2 = 1;}
else if(ch == ','){d1 = 0; d2 = 0; d3 = 1; d4 = 1; d5 = 0; fig2 = 1;}
else if(ch == '/'){d1 = 1; d2 = 0; d3 = 1; d4 = 1; d5 = 1; fig2 = 1;}
else if(ch == '+'){d1 = 1; d2 = 0; d3 = 0; d4 = 0; d5 = 1; fig2 = 1;} //ITA2
else
{
ch = ' ';
d1 = 0; d2 = 0; d3 = 1; d4 = 0; d5 = 0;
space = 1;
}
}
void loop()
{
//SEND SENSOR VALUES
if(sSq == 0)
{
if( sRd == 1)
{
if(i == 0)
{
sprintf(sVal, "A0: %04d", analogRead(0));
}
if(i == 1)
{
sprintf(sVal, "A1: %04d", analogRead(1));
}
if(i == 2)
{
sprintf(sVal, "A2: %04d", analogRead(2));
}
if(i == 3)
{
sprintf(sVal, "A3: %04d", analogRead(3));
}
sRd = 0;
}
ch = sVal[j];
if(ch != '\0')
{
chTable();
if(fig1 == 0 && fig2 == 1)
{
d1 = 1; d2 = 1; d3 = 0; d4 = 1; d5 = 1; //FIGURES
}
else if(fig1 == 1 && fig2 == 0)
{
d1 = 1; d2 = 1; d3 = 1; d4 = 1; d5 = 1; //LETTERS
}
else if(space == 1 && fig2 == 1)
{
d1 = 1; d2 = 1; d3 = 0; d4 = 1; d5 = 1; //FIGURES
}
else
{
j++;
}
if(fig2 == 0 || fig2 == 1)
{
space = 0;
fig1 = fig2;
}
sendFsk();
}
if(ch == '\0')
{
d1 = 0; d2 = 0; d3 = 1; d4 = 0; d5 = 0; //SPACE
space = 1;
sendFsk();
i++;
if(i == 4) //OVERFLOW
{
i = 0;
sSq = 1;
}
j = 0;
sRd = 1;
}
}
//SEND ID
if(sSq == 1)
{
if(idC < 9)
{
d1 = 0; d2 = 0; d3 = 0; d4 = 1; d5 = 0; //CR
sendFsk();
d1 = 0; d2 = 1; d3 = 0; d4 = 0; d5 = 0; //LF
sendFsk();
sSq = 0;
j = 0;
delay(700);
idC++;
}
if(idC == 9)
{
ch = ID[j];
if(ch != '\0')
{
chTable();
if(fig1 == 0 && fig2 == 1)
{
d1 = 1; d2 = 1; d3 = 0; d4 = 1; d5 = 1; //FIGURES
}
else if(fig1 == 1 && fig2 == 0)
{
d1 = 1; d2 = 1; d3 = 1; d4 = 1; d5 = 1; //LETTERS
}
else if(space == 1 && fig2 == 1)
{
d1 = 1; d2 = 1; d3 = 0; d4 = 1; d5 = 1; //FIGURES
}
else
{
j++;
}
if(fig2 == 0 || fig2 == 1)
{
space = 0;
fig1 = fig2;
}
sendFsk();
}
if(ch == '\0')
{
d1 = 0; d2 = 0; d3 = 0; d4 = 1; d5 = 0; //CR
sendFsk();
d1 = 0; d2 = 1; d3 = 0; d4 = 0; d5 = 0; //LF
sendFsk();
sSq = 0;
j = 0;
delay(700);
idC = 0;
}
}
}
delay(5);
}