This program converts Morse input to Letters and prints them
Dependencies: mbed
main.cpp
00001 #include "mbed.h" 00002 #include "PinDetect.h" 00003 00004 PinDetect pin1(D2, PullUp); 00005 PinDetect pin2(D3, PullUp); 00006 PinDetect pin3(D4, PullUp); 00007 DigitalOut myled(LED1); 00008 00009 Serial pc(USBTX, USBRX); 00010 00011 int pinbus[5] = {0, 0, 0, 0, 0}; 00012 00013 char letters[1][27] = { 00014 {'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', ' '}, 00015 }; 00016 00017 int pinbusvalues[27][4] = { 00018 {0, 1, 2, 2}, {1, 0, 0, 0}, {1, 0, 1, 0}, {2, 0, 0, 2}, {0, 2, 2, 2}, 00019 {0, 0, 1, 0}, { 1, 1, 0, 2}, {0, 0, 0, 0}, { 0, 0, 2, 2}, {0, 1, 1, 1}, 00020 { 1, 0, 1, 2}, { 2, 2, 2, 2}, { 1, 1, 2, 2}, {1, 0, 2, 2}, {2, 0, 0, 0}, 00021 {0, 1, 1, 0}, { 1, 1, 0, 1}, {0, 2, 0, 2}, {0, 0, 0, 2}, {1, 2, 2, 2}, 00022 {0, 0, 1, 2}, {0, 0, 0, 1}, {0, 2, 2, 0}, {1, 0, 0, 1}, {1, 0, 1, 1}, 00023 {1, 1, 0, 0}, {0, 0, 0, 2} 00024 }; 00025 00026 int j=0; 00027 void b1(void){ 00028 // pc.printf("From F1: %d", j); 00029 pinbus[j] = 0; 00030 j=j+1; 00031 } 00032 void b2(void){ 00033 // pc.printf("From F2: %d", j); 00034 pinbus[j] = 1; 00035 j=j+1; 00036 } 00037 void b3(void){ 00038 // pc.printf("From F3: %d", j); 00039 pinbus[j] = 2; 00040 j=j+1; 00041 } 00042 00043 void keyPressed(void){ 00044 // pc.printf("From keypressed: %d", j); 00045 if (j < 4) 00046 return; 00047 // pc.printf("%d %d %d %d", pinbus[0], pinbus[1], pinbus[2], pinbus[3]); 00048 for (int i=0; i<27; i++) { 00049 if (pinbus[0] == pinbusvalues[i][0]&&pinbus[1] == pinbusvalues[i][1]&&pinbus[2] == pinbusvalues[i][2]&&pinbus[3] == pinbusvalues[i][3]) { 00050 pc.printf("%c", letters[0][i]); 00051 } 00052 } 00053 j=0; 00054 } 00055 00056 int main() { 00057 pc.baud(9600); 00058 00059 pin1.attach_deasserted(&b1); 00060 pin2.attach_deasserted(&b2); 00061 pin3.attach_deasserted(&b3); 00062 00063 00064 pin1.attach_asserted(&keyPressed); 00065 pin2.attach_asserted(&keyPressed); 00066 pin3.attach_asserted(&keyPressed); 00067 //set frequency 00068 pin1.setSampleFrequency(); 00069 pin2.setSampleFrequency(); 00070 pin3.setSampleFrequency(); 00071 00072 while(1){ 00073 myled = !myled; 00074 wait(0.2); 00075 } 00076 }
Generated on Thu Jul 21 2022 01:51:06 by
1.7.2