Advertisement
tuixte

Morse translator

Feb 10th, 2013
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.52 KB | None | 0 0
  1. const int ledPin = 7;
  2. const int piezoPin = 8;
  3.  
  4. const int dotDelay = 300;
  5.  
  6. const char* letters[] = {".-", "-...", "-.-.", "-..", ".", "..-.",
  7.   "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---",
  8.   ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-",
  9.   "-.--", "--.."
  10. };
  11.  
  12. const char* numbers[] = {
  13.     "-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...",
  14.     "---..", "----."
  15. };
  16.  
  17. void output(const char* code){
  18.   for(int i=0; i<=sizeof(code); i++){
  19.     int currDelay;
  20.     if(code[i] == '.')
  21.       currDelay = dotDelay;
  22.     else if(code[i] == '-')
  23.       currDelay = dotDelay*3;
  24.     else
  25.       return;
  26.    
  27.     digitalWrite(ledPin, HIGH);
  28.     tone(piezoPin, 2000, currDelay);
  29.     delay(currDelay);
  30.     digitalWrite(ledPin, LOW);
  31.     delay(dotDelay);
  32.   }
  33.   delay(dotDelay*2);
  34. }
  35.  
  36. void setup(){
  37.   pinMode(ledPin, OUTPUT);
  38.   pinMode(piezoPin, OUTPUT);
  39.   Serial.begin(9600);
  40.   Serial.println("Ready.");
  41. }
  42.  
  43. void loop(){
  44.   char ch;
  45.   if(Serial.available() > 0){
  46.     ch = Serial.read();
  47.     Serial.print("Character read: ");
  48.     Serial.println(ch);
  49.     if(ch >= 'a' && ch <= 'z'){
  50.       Serial.print("Code: ");
  51.       Serial.println(letters[ch-'a']);
  52.       output(letters[ch-'a']);
  53.     }else if(ch >= 'A' && ch <= 'Z'){
  54.       Serial.print("Code: ");
  55.       Serial.println(letters[ch-'A']);
  56.       output(letters[ch-'A']);
  57.     }else if(ch >= '0' && ch <= '9'){
  58.       Serial.print("Code: ");
  59.       Serial.println(numbers[ch-'0']);
  60.       output(letters[ch-'0']);
  61.     }
  62.   }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement