Connect a buzzer using D7 as vcc and D4 as gnd. Enter what you want to convert to morse using serial

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 Serial pc(USBTX, USBRX);
00004 DigitalOut led(D7);
00005 DigitalOut gnd(D4);
00006 
00007 //0=dot,1=dash, 2=space
00008 //1. The length of a dot is one unit.2. A dash is three units.3. The space between parts of the same letter is one unit.4. The space between letters is three units.5. The space between words is seven units.
00009 int morseArray[37][5]={                
00010  {0,1,3,3,3},/*A*/  {1,0,0,0,3},/*B*/   {1,0,1,0,3},/*C*/   {0,3,3,3,3},/*D*/
00011  {0,0,0,0,3},/*E*/  {1,1,0,3,3},/*F*/   {1,1,0,3,3},/*G*/   {0,0,0,0,3},/*H*/
00012  {0,0,3,3,3},/*I*/  {0,1,1,1,3},/*J*/   {1,0,1,3,3},/*K*/   {0,1,0,0,3},/*L*/
00013  {1,1,3,3,3},/*M*/  {1,0,3,3,3},/*N*/   {1,1,1,3,3},/*O*/   {0,1,1,0,3},/*P*/
00014  {1,1,0,1,3},/*Q*/  {0,1,0,3,3},/*R*/   {0,0,0,3,3},/*S*/   {1,3,3,3,3},/*T*/
00015  {0,0,1,3,3},/*U*/  {0,0,0,1,3},/*V*/   {0,1,1,3,3},/*W*/   {1,0,0,1,3},/*X*/
00016  {1,0,1,1,3},/*Y*/  {1,1,0,0,3},/*Z*/   {1,1,1,1,1},/*0*/   {0,1,1,1,1},/*1*/
00017  {0,0,1,1,1},/*2*/  {0,0,0,1,1},/*3*/   {0,0,0,0,1},/*4*/   {0,0,0,0,0},/*5*/
00018  {1,0,0,0,0},/*6*/  {1,1,0,0,0},/*7*/   {1,1,1,0,0},/*8*/   {1,1,1,1,0},/*9*/
00019  {2,3,3,3,3}/*space */
00020 };
00021 float unitInSeconds=(float)0.05;
00022 float dot=unitInSeconds;
00023 float dash=unitInSeconds*(float)3;
00024 float internalLetterSepeator=dot;
00025 float letterSeperator=dash;
00026 float space= unitInSeconds*(float)7;
00027 char sentence[100];
00028 
00029 void morse(char letter);
00030 
00031 void beep(int type);
00032 
00033 
00034 int main()
00035 {
00036     gnd=0;
00037     led=0;
00038     printf("Enter the sentence you want to morse\r\n");
00039     int count = 0;
00040     while (count < (99)) {
00041         sentence[count] = pc.getc();
00042         if ((sentence[count] == 0x0a) || (sentence[count] == 0x0d)) // end on a carriage return or a line feed.
00043             break;
00044         count ++;
00045     }
00046 
00047     sentence[count] = 0;
00048     printf("you entered: %s\r\n",sentence);
00049 
00050     while (true) {
00051 
00052         for (int i =0; i < sizeof(sentence); i++) {
00053             morse(sentence[i]);
00054         }
00055         wait(10*space);
00056 
00057     }
00058 }
00059 
00060 void morse(char letter)
00061 {
00062     switch (letter)
00063     {
00064         case 'A':case 'a':{for (int i=0;i<5;i++)beep(morseArray[0][i]);wait(dash); break;}
00065         case 'B':case 'b':{for (int i=0;i<5;i++)beep(morseArray[1][i]);wait(dash); break;}
00066         case 'C':case 'c':{for (int i=0;i<5;i++)beep(morseArray[2][i]);wait(dash); break;}
00067         case 'D':case 'd':{for (int i=0;i<5;i++)beep(morseArray[3][i]);wait(dash); break;}
00068         case 'E':case 'e':{for (int i=0;i<5;i++)beep(morseArray[4][i]);wait(dash); break;}
00069         case 'F':case 'f':{for (int i=0;i<5;i++)beep(morseArray[5][i]);wait(dash); break;}
00070         case 'G':case 'g':{for (int i=0;i<5;i++)beep(morseArray[6][i]);wait(dash); break;}
00071         case 'H':case 'h':{for (int i=0;i<5;i++)beep(morseArray[7][i]);wait(dash); break;}
00072         case 'I':case 'i':{for (int i=0;i<5;i++)beep(morseArray[8][i]);wait(dash); break;}
00073         case 'J':case 'j':{for (int i=0;i<5;i++)beep(morseArray[9][i]);wait(dash); break;}
00074         case 'K':case 'k':{for (int i=0;i<5;i++)beep(morseArray[10][i]);wait(dash); break;}
00075         case 'L':case 'l':{for (int i=0;i<5;i++)beep(morseArray[11][i]);wait(dash); break;}
00076         case 'M':case 'm':{for (int i=0;i<5;i++)beep(morseArray[12][i]);wait(dash); break;}
00077         case 'N':case 'n':{for (int i=0;i<5;i++)beep(morseArray[13][i]);wait(dash); break;}
00078         case 'O':case 'o':{for (int i=0;i<5;i++)beep(morseArray[14][i]);wait(dash); break;}
00079         case 'P':case 'p':{for (int i=0;i<5;i++)beep(morseArray[15][i]);wait(dash); break;}
00080         case 'Q':case 'q':{for (int i=0;i<5;i++)beep(morseArray[16][i]);wait(dash); break;}
00081         case 'R':case 'r':{for (int i=0;i<5;i++)beep(morseArray[17][i]);wait(dash); break;}
00082         case 'S':case 's':{for (int i=0;i<5;i++)beep(morseArray[18][i]);wait(dash); break;}
00083         case 'T':case 't':{for (int i=0;i<5;i++)beep(morseArray[19][i]);wait(dash); break;}
00084         case 'U':case 'u':{for (int i=0;i<5;i++)beep(morseArray[20][i]);wait(dash); break;}
00085         case 'V':case 'v':{for (int i=0;i<5;i++)beep(morseArray[21][i]);wait(dash); break;}
00086         case 'W':case 'w':{for (int i=0;i<5;i++)beep(morseArray[22][i]);wait(dash); break;}
00087         case 'X':case 'x':{for (int i=0;i<5;i++)beep(morseArray[23][i]);wait(dash); break;}
00088         case 'Y':case 'y':{for (int i=0;i<5;i++)beep(morseArray[24][i]);wait(dash); break;}
00089         case 'Z':case 'z':{for (int i=0;i<5;i++)beep(morseArray[25][i]);wait(dash); break;}
00090         case '0':{for (int i=0;i<5;i++)beep(morseArray[26][i]);wait(dash); break;} case '1':{for (int i=0;i<5;i++)beep(morseArray[27][i]);wait(dash); break;}
00091         case '2':{for (int i=0;i<5;i++)beep(morseArray[28][i]);wait(dash); break;} case '3':{for (int i=0;i<5;i++)beep(morseArray[29][i]);wait(dash); break;}
00092         case '4':{for (int i=0;i<5;i++)beep(morseArray[30][i]);wait(dash); break;} case '5':{for (int i=0;i<5;i++)beep(morseArray[31][i]);wait(dash); break;}
00093         case '6':{for (int i=0;i<5;i++)beep(morseArray[32][i]);wait(dash); break;} case '7':{for (int i=0;i<5;i++)beep(morseArray[33][i]);wait(dash); break;}
00094         case '8':{for (int i=0;i<5;i++)beep(morseArray[34][i]);wait(dash); break;} case '9':{for (int i=0;i<5;i++)beep(morseArray[35][i]);wait(dash); break;}
00095         case ' ':{for (int i=0;i<5;i++)beep(morseArray[36][i]);wait(dash); break;}
00096     
00097     }
00098 }
00099 
00100 void beep(int type)
00101 {
00102     switch(type)
00103     {
00104         case 0:{
00105                 led=1;
00106                 printf("dot   ");
00107                 wait(dot);
00108                 led=0;
00109                 wait(dot);
00110                 break;
00111                }
00112         case 1:{
00113                 led=1;
00114                 printf("dash   ");
00115                 wait(dash);
00116                 led=0;
00117                 wait(dot);
00118                 break;
00119                }
00120         case 2:{
00121                 led=0;
00122                 printf("space   ");
00123                 wait(space);
00124                 break;
00125                }
00126         default:{
00127                 break;
00128                }
00129     }
00130 }