=====MORSE CODE PROGRAM===== **SHOUT OUT TO SHAWN MEAS FOR ALLOWING ME TO USE HIS MORSE.C PROGRAM AND REFERENCING HIS MORSE CODE PROGRAM** The following is the necessary code to run the morse code program: **morse.c** 1 #include "morse.h" 2 3 void init_morse() 4 { 5 morse[0][0] = '0'; 6 morse[0][1] = '1'; 7 morse[0][2] = '2'; 8 morse[0][3] = '2'; 9 morse[0][4] = '2'; 10 morse[0][5] = '2'; 11 12 morse[1][0] = '1'; 13 morse[1][1] = '0'; 14 morse[1][2] = '0'; 15 morse[1][3] = '0'; 16 morse[1][4] = '2'; 17 morse[1][5] = '2'; 18 19 morse[2][0] = '1'; 20 morse[2][1] = '0'; 21 morse[2][2] = '1'; 22 morse[2][3] = '0'; 23 morse[2][4] = '2'; 24 morse[2][5] = '2'; 25 26 morse[3][0] = '1'; 27 morse[3][1] = '0'; 28 morse[3][2] = '0'; 29 morse[3][3] = '2'; 30 morse[3][4] = '2'; 31 morse[3][5] = '2'; 32 33 morse[4][0] = '0'; 34 morse[4][1] = '2'; 35 morse[4][2] = '2'; 36 morse[4][3] = '2'; 37 morse[4][4] = '2'; 38 morse[4][5] = '2'; 39 40 morse[5][0] = '0'; 41 morse[5][1] = '0'; 42 morse[5][2] = '1'; 43 morse[5][3] = '0'; 44 morse[5][4] = '2'; 45 morse[5][5] = '2'; 46 47 morse[6][0] = '1'; 48 morse[6][1] = '1'; 49 morse[6][2] = '0'; 50 morse[6][3] = '2'; 51 morse[6][4] = '2'; 52 morse[6][5] = '2'; 53 54 morse[7][0] = '0'; 55 morse[7][1] = '0'; 56 morse[7][2] = '0'; 57 morse[7][3] = '0'; 58 morse[7][4] = '2'; 59 morse[7][5] = '2'; 60 61 morse[8][0] = '0'; 62 morse[8][1] = '0'; 63 morse[8][2] = '2'; 64 morse[8][3] = '2'; 65 morse[8][4] = '2'; 66 morse[8][5] = '2'; 67 68 morse[9][0] = '0'; 69 morse[9][1] = '1'; 70 morse[9][2] = '1'; 71 morse[9][3] = '1'; 72 morse[9][4] = '2'; 73 morse[9][5] = '2'; 74 75 morse[10][0] = '1'; 76 morse[10][1] = '0'; 77 morse[10][2] = '1'; 78 morse[10][3] = '2'; 79 morse[10][4] = '2'; 80 morse[10][5] = '2'; 81 82 morse[11][0] = '0'; 83 morse[11][1] = '1'; 84 morse[11][2] = '0'; 85 morse[11][3] = '0'; 86 morse[11][4] = '2'; 87 morse[11][5] = '2'; 88 89 morse[12][0] = '1'; 90 morse[12][1] = '1'; 91 morse[12][2] = '2'; 92 morse[12][3] = '2'; 93 morse[12][4] = '2'; 94 morse[12][5] = '2'; 95 96 morse[13][0] = '1'; 97 morse[13][1] = '0'; 98 morse[13][2] = '2'; 99 morse[13][3] = '2'; 100 morse[13][4] = '2'; 101 morse[13][5] = '2'; 102 103 morse[14][0] = '1'; 104 morse[14][1] = '1'; 105 morse[14][2] = '1'; 106 morse[14][3] = '2'; 107 morse[14][4] = '2'; 108 morse[14][5] = '2'; 109 110 morse[15][0] = '0'; 111 morse[15][1] = '1'; 112 morse[15][2] = '1'; 113 morse[15][3] = '0'; 114 morse[15][4] = '2'; 115 morse[15][5] = '2'; 116 117 morse[16][0] = '1'; 118 morse[16][1] = '1'; 119 morse[16][2] = '0'; 120 morse[16][3] = '1'; 121 morse[16][4] = '2'; 122 morse[16][5] = '2'; 123 124 morse[17][0] = '0'; 125 morse[17][1] = '1'; 126 morse[17][2] = '0'; 127 morse[17][3] = '2'; 128 morse[17][4] = '2'; 129 morse[17][5] = '2'; 130 131 morse[18][0] = '0'; 132 morse[18][1] = '0'; 133 morse[18][2] = '0'; 134 morse[18][3] = '2'; 135 morse[18][4] = '2'; 136 morse[18][5] = '2'; 137 138 morse[19][0] = '1'; 139 morse[19][1] = '2'; 140 morse[19][2] = '2'; 141 morse[19][3] = '2'; 142 morse[19][4] = '2'; 143 morse[19][5] = '2'; 144 145 morse[20][0] = '0'; 146 morse[20][1] = '0'; 147 morse[20][2] = '1'; 148 morse[20][3] = '2'; 149 morse[20][4] = '2'; 150 morse[20][5] = '2'; 151 152 morse[21][0] = '0'; 153 morse[21][1] = '0'; 154 morse[21][2] = '0'; 155 morse[21][3] = '1'; 156 morse[21][4] = '2'; 157 morse[21][5] = '2'; 158 159 morse[22][0] = '0'; 160 morse[22][1] = '1'; 161 morse[22][2] = '1'; 162 morse[22][3] = '2'; 163 morse[22][4] = '2'; 164 morse[22][5] = '2'; 165 166 morse[23][0] = '1'; 167 morse[23][1] = '0'; 168 morse[23][2] = '0'; 169 morse[23][3] = '1'; 170 morse[23][4] = '2'; 171 morse[23][5] = '2'; 172 173 morse[24][0] = '1'; 174 morse[24][1] = '0'; 175 morse[24][2] = '1'; 176 morse[24][3] = '1'; 177 morse[24][4] = '2'; 178 morse[24][5] = '2'; 179 180 morse[25][0] = '1'; 181 morse[25][1] = '1'; 182 morse[25][2] = '0'; 183 morse[25][3] = '0'; 184 morse[25][4] = '2'; 185 morse[25][5] = '2'; 186 187 morse[26][0] = '1'; 188 morse[26][1] = '1'; 189 morse[26][2] = '1'; 190 morse[26][3] = '1'; 191 morse[26][4] = '1'; 192 morse[26][5] = '2'; 193 194 morse[27][0] = '0'; 195 morse[27][1] = '1'; 196 morse[27][2] = '1'; 197 morse[27][3] = '1'; 198 morse[27][4] = '1'; 199 morse[27][5] = '2'; 200 201 morse[28][0] = '0'; 202 morse[28][1] = '0'; 203 morse[28][2] = '1'; 204 morse[28][3] = '1'; 205 morse[28][4] = '1'; 206 morse[28][5] = '2'; 207 208 morse[29][0] = '0'; 209 morse[29][1] = '0'; 210 morse[29][2] = '0'; 211 morse[29][3] = '1'; 212 morse[29][4] = '1'; 213 morse[29][5] = '2'; 214 215 morse[30][0] = '0'; 216 morse[30][1] = '0'; 217 morse[30][2] = '0'; 218 morse[30][3] = '0'; 219 morse[30][4] = '1'; 220 morse[30][5] = '2'; 221 222 morse[31][0] = '0'; 223 morse[31][1] = '0'; 224 morse[31][2] = '0'; 225 morse[31][3] = '0'; 226 morse[31][4] = '0'; 227 morse[31][5] = '2'; 228 229 morse[32][0] = '1'; 230 morse[32][1] = '0'; 231 morse[32][2] = '0'; 232 morse[32][3] = '0'; 233 morse[32][4] = '0'; 234 morse[32][5] = '2'; 235 236 morse[33][0] = '1'; 237 morse[33][1] = '1'; 238 morse[33][2] = '0'; 239 morse[33][3] = '0'; 240 morse[33][4] = '0'; 241 morse[33][5] = '2'; 242 243 morse[34][0] = '1'; 244 morse[34][1] = '1'; 245 morse[34][2] = '1'; 246 morse[34][3] = '0'; 247 morse[34][4] = '0'; 248 morse[34][5] = '2'; 249 250 morse[35][0] = '1'; 251 morse[35][1] = '1'; 252 morse[35][2] = '1'; 253 morse[35][3] = '1'; 254 morse[35][4] = '0'; 255 morse[35][5] = '2'; 256 257 } **moco.c** 1 #include "rpi.h" 2 #include "morse.h" 3 #include 4 5 #define MAX_STRING_LEN 1000 6 7 int main() 8 { 9 if( map_peripheral(&gpio) == -1 ) 10 { 11 printf("Failed to map the physical GPIO registers into the virtual memory space.\n"); 12 return -1; 13 } 14 15 int i, j, k; // iteration variables for cases 1 and 2 16 int menu; // switch option variable 17 char sendchar; // input character variable 18 char sendstr[MAX_STRING_LEN]; // input string variable 19 int sendcharvalue; // sent character value variable 20 int sendstrlength; // sent string length variable 21 22 init_morse(); 23 24 do { 25 printf("Make a selection:\n"); 26 printf("1: Character\n"); 27 printf("2: String\n"); 28 printf("0: Quit\n\n"); 29 scanf("%d", &menu); 30 31 switch( menu ) 32 { 33 case 1: 34 printf("Enter character: "); 35 scanf(" %c", &sendchar); 36 37 printf("\n\nASCII value: %d\nCharacter: %c\n\n", sendchar, sendchar); 38 39 if( sendchar >= 97 ) 40 sendcharvalue = sendchar - 97; 41 else if( sendchar >= 48 || sendchar <= 57 ) 42 sendcharvalue = sendchar - 22; 43 else 44 sendcharvalue = sendchar - 65; 45 46 for( j = 0; j < 6; j++ ) 47 { 48 if( morse[sendcharvalue][j] != '2' ) 49 printf("%c", morse[sendcharvalue][j]); 50 } 51 52 printf("\n"); 53 break; 54 55 case 2: 56 getchar(); 57 58 printf("Enter String: "); 59 60 fgets(sendstr, sizeof(sendstr), stdin); // accepting the string and assigning it to the sendstr array 61 62 sendstrlength = strlen(sendstr); // finding and assigning the string length to a variable for later use 63 printf("\n\nsendstrlength is: %d\n\n", sendstrlength - 1); // showing string length 64 sendstr[sendstrlength] = '\0'; 65 66 printf("String:\t%s\n\n", sendstr); 67 68 for( k = 0; k < sendstrlength; k++ ) // runs throughout the entire string 69 { 70 sendchar = sendstr[k]; // singles out characters to print them out as morse code 71 if( sendchar != ' ' ) // runs through if statement if not a space, else outputs a 'break' (line 91) 72 { 73 if( sendchar >= 97 ) // used to properly access data in the morse.c file, which holds the morse values 74 sendcharvalue = sendchar - 97; 75 else if( sendchar >= 48 || sendchar <= 57 ) // accounts for numbers 0 - 9 76 sendcharvalue = sendchar - 22; 77 else 78 sendcharvalue = sendchar - 65; // an attempt at accounting for capital letters 79 80 for( i = 0; i < 6; i++ ) // loop which prints morse code, stops printing when value in morse array is not '0' or '1' 81 { 82 if( morse[sendcharvalue][i] == '0' ) 83 { 84 printf("0"); 85 } 86 else if( morse[sendcharvalue][i] == '1' ) 87 { 88 printf("1"); 89 } 90 else 91 break; 92 } 93 printf(" "); 94 } 95 else 96 { 97 printf("break "); 98 } 99 } 100 printf("\n"); 101 break; 102 103 } 104 }while( menu != 0 ); 105 106 return 0; 107 } The output: pi@raspberrypi ~/RPI/morse $ sudo ./moco Make a selection: 1: Character 2: String 0: Quit 2 Enter String: thing me to say tweet sendstrlength is: 21 String: thing me to say tweet 1 0000 00 10 110 break 11 0 break 1 111 break 000 01 1011 break 1 011 0 0 1 Make a selection: 1: Character 2: String 0: Quit **SHOUT OUT TO SHAWN MEAS FOR ALLOWING ME TO USE HIS MORSE.C PROGRAM AND REFERENCING HIS MORSE CODE PROGRAM**