0% found this document useful (0 votes)
213 views7 pages

Arduino Morse Am Transmitter

Arduino Morse Am Transmitter which uses the internal clock to generate the radio frequency or high frequency signal without special hardware -- low cost.

Uploaded by

MaximilianWieder
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
213 views7 pages

Arduino Morse Am Transmitter

Arduino Morse Am Transmitter which uses the internal clock to generate the radio frequency or high frequency signal without special hardware -- low cost.

Uploaded by

MaximilianWieder
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 7

const byte ANTENNA = 9;

const byte LED


= 13;
int ledstatus;
unsigned char morseTab[64][3];
unsigned char result[8];
void
void
void
void
void
void
void
void

initMorseTab(void);
char2morse(unsigned char);
txMorseCode4Char(unsigned char);
txMorseCode4String(const char*);
setLED(void);
unsetLED(void);
changeLED(void);
changeLEDseq(int, int []);

void setup()
{
// set up Timer 1
TCCR1A = _BV (COM1A0); // toggle OC1A on Compare Match
TCCR1B = _BV(WGM12) | _BV(CS10); // CTC, no prescaler
OCR1A = 7;
// compare A register value to 10 (zero relative)
pinMode(LED, OUTPUT);
Serial.begin(9600);
delay(1000);
} // end of setup
void loop()
{
//transmit signal
Serial.println("TX ON");
pinMode (ANTENNA, OUTPUT);
setLED();
delay (1000);
//pause transmitting
Serial.println("TX OFF");
pinMode (ANTENNA, INPUT);
unsetLED();
delay (2333);
int i, ii;
int blinkSeq[]={
50, 10,100,10,100,10,100,10,100,10,100,10,100,10,100,
10,100,10,100,10,100,10,100,10,100,10,100,10,100,
10,100,10,100,10,100,10,100,10,100,10,100,10,100,
10,100,10,100,10,100,10,100,10,100,10,100,10,100,
10,100,10,100,10,100,10,100,10,100,10,100,10,100,
10,100,10,100,10,100,10,100,10,100,10,100,10,100,
10,100,10,100,10,100,10,100,10,100,10,100,10,100,
10,100,10,100,10,100,10,100,10,100,10,100,10,100,
10,100,10,100,10,100,10,100,10,100,10,100,10,100,
10,100,10,100,10,100,10,100,10,100,10,100,10,100 };
int startblinkSeq[]={
50,100,300,100,300,1000 };
changeLEDseq(6, startblinkSeq);
Serial.println("init morse");
initMorseTab();
Serial.println("init done");

for(i=0; i<64; i++)


{
Serial.print(i);
Serial.print(":\t");
Serial.print(char (morseTab[i][0]));
Serial.print(",\t\t");
Serial.print(morseTab[i][1], BIN);
Serial.print(",\t");
Serial.println(morseTab[i][2]);
Serial.flush();
}
txMorseCode4String("SOS TEST 01234 SOS.");
for(i=0; i<64; i++)
{
Serial.print(i);
Serial.print(":\t");
Serial.print(char (morseTab[i][0]));
Serial.print(",\t\t");
Serial.print(morseTab[i][1], BIN);
Serial.print(",\t");
Serial.println(morseTab[i][2]);
Serial.flush();
}
txMorseCode4String("HELLO WORLD!");
for(i=0; i<64; i++)
{
Serial.print(i);
Serial.print(":\t");
Serial.print(char (morseTab[i][0]));
Serial.print(",\t\t");
Serial.print(morseTab[i][1], BIN);
Serial.print(",\t");
Serial.println(morseTab[i][2]);
Serial.flush();
}
txMorseCode4String("I AM A MICROCONTROLLER!");
for(i=0; i<64; i++)
{
Serial.print(i);
Serial.print(":\t");
Serial.print(char (morseTab[i][0]));
Serial.print(",\t\t");
Serial.print(morseTab[i][1], BIN);
Serial.print(",\t");
Serial.println(morseTab[i][2]);
Serial.flush();
}
txMorseCode4String("THIS IS JUST A TEST! PLEASE IGNORE IT.");
for(i=0; i<64; i++)
{
Serial.print(i);
Serial.print(":\t");
Serial.print(char (morseTab[i][0]));
Serial.print(",\t\t");
Serial.print(morseTab[i][1], BIN);
Serial.print(",\t");
Serial.println(morseTab[i][2]);
Serial.flush();
}
/* for(i=0; i<255; i++)

{
unsetLED();
changeLEDseq(7, blinkSeq);
setLED();
Serial.println("TX ON");
for(ii=0; ii<(3*1024); ii++)
{
pinMode (ANTENNA, OUTPUT);
delay (1);
pinMode (ANTENNA, INPUT);
delay (1);
}
Serial.println("TX OFF");
unsetLED();
delay(ii*1*1);
unsetLED();
changeLEDseq(7, blinkSeq);
setLED();
Serial.println("TX ON");
for(ii=0; ii<(3*1024); ii++)
{
pinMode (ANTENNA, OUTPUT);
delay (1);
pinMode (ANTENNA, INPUT);
delay (1);
}
Serial.println("TX OFF");
unsetLED();
delay(ii*1*1);
unsetLED();
changeLEDseq(7, blinkSeq);
setLED();
Serial.println("TX ON");
for(ii=0; ii<(3*1024); ii++)
{
pinMode (ANTENNA, OUTPUT);
delay (1);
pinMode (ANTENNA, INPUT);
delay (1);
}
Serial.println("TX OFF");
unsetLED();
delay(ii*1*1);
unsetLED();
changeLEDseq(23, blinkSeq);
}
delay(ii*1*1);
unsetLED();
changeLEDseq(7, blinkSeq);
setLED();
Serial.println("TX ON");
for(ii=0; ii<(3*1024); ii++)
{
pinMode (ANTENNA, OUTPUT);
delay (1);
pinMode (ANTENNA, INPUT);
delay (1);
}
Serial.println("TX OFF");
unsetLED();

delay(ii*1*1);
unsetLED();
changeLEDseq(7, blinkSeq);
setLED();
Serial.println("TX ON");
for(ii=0; ii<(3*1024); ii++)
{
pinMode (ANTENNA, OUTPUT);
delay (1);
pinMode (ANTENNA, INPUT);
delay (1);
}
Serial.println("TX OFF");
unsetLED();
delay(ii*1*1);
unsetLED();
changeLEDseq(23, blinkSeq);
}*/
unsetLED();
delay(1000);
} // end of loop
void txMorseCode4String(const char s[])
{
int i;
unsigned char c;
Serial.print("TX STRING: ");
Serial.println(s);
for(i=0; ((s[i]!=0)&&(i<64)); i++)
{
c=s[i];
if(c!=' ')
{
txMorseCode4Char(c);
}
else
{
delay(1024);
}
}
Serial.println("TX STRING DONE!");
unsetLED();
delay(1024);
}
void txMorseCode4Char(unsigned char c)
{
int i, ii;
char2morse(c);
/* Serial.println("IN: ");
for(i=0; i<8; i++)
{
Serial.println(mc[i]);
Serial.flush();
}
Serial.flush();*/
Serial.print("TX: <");
Serial.print(char(c));
Serial.print(">: ");
for(i=0; i<8; i++)

{
//

Serial.print("IN: ");
// Serial.println(result[i]);
if(result[i]==2)
{
setLED();
Serial.print("-");
for(ii=0; ii<(3*256); ii++)
{
pinMode (ANTENNA, OUTPUT);
delay (1);
pinMode (ANTENNA, INPUT);
delay (1);
}
unsetLED();
}
else if(result[i]==1)
{
setLED();
Serial.print(".");
for(ii=0; ii<(256); ii++)
{
pinMode (ANTENNA, OUTPUT);
delay (1);
pinMode (ANTENNA, INPUT);
delay (1);
}
unsetLED();
}
else
{
break;
}
delay(512);
}
Serial.println("\tDONE! ");
Serial.flush();
delay(256);

}
void initMorseTab(void)
{
unsigned char mt[][8]= {
"!-.-.--", "\".-..-.", "# ", "$ ", "% ", "&.-...", "\'.----.",
"(-.--.", ")-.--.-", "* ", "+.-.-.", ",--..--", "m-....-", "p.-.-.-",
"/-..-.", "0-----", "1.----", "2..---", "3...--", "4....-", "5.....",
"6-....", "7--...", "8---..", "9----.", ":---...", ";-.-.-.", "< ",
"=-...-", "> ", "?..--..", "@.--.-.",
"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--..",
" " }
, c;
int i, ii;
for(i=0; (mt[i][0]!=' '); i++)
{
morseTab[i][0]=mt[i][0];
c=0;
ii=0;
if(mt[i][ii]!=' ')

{
for(ii=1; ((ii<8)&&(mt[i][ii]!=0)); ii++)
{
if(mt[i][ii]=='-')
{
bitSet(c,(ii-1));
}
else if(mt[i][ii]=='.')
{
c=c+0;
}
else
{
break;
}
}
}
morseTab[i][1]=c;
morseTab[i][2]=ii-1;
}
while(i<64)
{
morseTab[i][0]=' ';
morseTab[i][1]=0;
morseTab[i][2]=0;
i++;
}
}
void char2morse(unsigned char c)
{
unsigned char tmp;
int i, ii;
for(ii=0; ii<8; ii++)
{
result[ii]=0;
}
for(i=0; ((morseTab[i][0]!=' ')&&(i<=64)); i++)
{
if(c==morseTab[i][0])
{
tmp=morseTab[i][1];
for(ii=0; (ii<morseTab[i][2]); ii++)
{
if(bitRead(tmp, ii)==1)
{
result[ii]=2;
}
else
{
result[ii]=1;
}
}
break;
}
}
/*
Serial.println("c2m");
Serial.flush();
for(i=0; i<8; i++)
{

Serial.println(result[i]);
Serial.flush();
}
Serial.println(" ");
Serial.println("...");
Serial.flush();*/
}
void setLED()
{
digitalWrite(LED, HIGH);
ledstatus=1;
}
void unsetLED()
{
digitalWrite(LED, LOW);
ledstatus=-1;
}
void changeLED()
{
ledstatus=ledstatus*-1;
if(ledstatus>=1)
{
setLED();
}
else
{
unsetLED();
}
}
void changeLEDseq(int seqLen, int seq[])
{
int maxPause=30000, maxSeqLen=(min(seqLen, 1024));
int i, time;
for(i=0; i<maxSeqLen; i++)
{
time=(max(0, (min(maxPause, seq[i]))));
delay(time);
changeLED();
}
}

You might also like