This program converts Morse input to Letters and prints them

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }