Arduino project – Mores code generator
October 3, 2010 2 Comments
Using an arduino, I created a Mores code generator. In the video, the arduino is connected to a tiny buzzer, which makes the sound. Code is posted below. In the video, the arduino welcomes you to wikipedia. I used the example on wiki so that I could compare their waveforms to confirm that arduino has actually generated the correct Mores code.
Here is a picture of waveform of my generated message compared with wikipedia’s original message to show my generator works:
Source code:
#define period 90 //13.33 WPM #define buzzerPin 11 // Dr. Liu 10/03/2010 unsigned char message[]="WELCOME TO WIKIPEDIA, THE FREE ENCYCLOPEDIA THAT ANYONE CAN EDIT. "; unsigned char space_to_Z[][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--.."}; void setup() { } void loop() { char pointer=0; char pointer2=0; while (pointer2>=0) { if ((message[pointer2]>=' ')&&(message[pointer2]<='Z')) { unsigned char character=message[pointer2]-' '; pointer=0; while (pointer>=0) { switch(space_to_Z[character][pointer]) { case '.': di(); break; case '-': dah(); break; case ' ': delay(6*period); break; case '': delay(2*period); pointer=-2; break; default : break; } pointer++; } } else if (message[pointer2]=='') pointer2=-2; pointer2++; } } void di() { analogWrite(buzzerPin, 2.5); delay(period); analogWrite(buzzerPin,0); delay(period); } void dah() { analogWrite(buzzerPin, 2.5); delay(3*period); analogWrite(buzzerPin,0); delay(period); }
replace mores code with Morse code had to goto wikipedia for the capitalization. 🙂
Sorry I must have misspelled Morse a few times over 😉