=====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**