Advertisement
asteroidsteam

asdf

Jun 15th, 2019
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.37 KB | None | 0 0
  1. const int buzzerPin = 13;
  2. const int ledPin = 13;
  3. // tone frequency C
  4. const int tonefreq = 523;
  5.  
  6. // constants for tone and rest durations
  7. const int dotlength = 100;
  8. const int dashlength = dotlength * 3;
  9. // inter-element gap - between each dot or dash of a letter
  10. const int inter = dotlength;
  11. // letter gap is 3 dots - the inter gap is always added - so this is one fewer
  12. const int lgap = dotlength * 2; // inter-letter gap
  13. // word gap is 7 dots - with letter and inter gap already counted, this is -1
  14. const int wgap = dotlength * 4; //inter-word gap
  15.  
  16. const int sos = 7; // SOS button
  17.  
  18. bool sause = false;
  19.  
  20. char command[sizeof(int)] = "";
  21.  
  22. void append(char* s, char c) {
  23.         int len = strlen(s);
  24.         s[len] = c;
  25.         s[len+1] = '\0';
  26. }
  27.  
  28. void setup()
  29. {
  30.   pinMode(buzzerPin, OUTPUT);
  31.   pinMode(ledPin, OUTPUT);
  32.   pinMode(sos, INPUT);
  33.   Serial.begin(9600);
  34. }
  35.  
  36. void loop()
  37. {
  38.   char thischar;
  39.   if (Serial.available())
  40.   {
  41.     // read a single character
  42.     thischar = Serial.read();
  43.     append(command,thischar);
  44.     if (thischar == '=') {
  45.       sause = true;
  46.       goto exitjmp;
  47.     }
  48.     if (thischar>='a' && thischar<='z')
  49.     {
  50.       // convert to upper case
  51.       thischar = thischar -32;
  52.     }
  53.     // swap for a space if not in A-Z
  54.     if(thischar<65 || thischar>90)
  55.     {
  56.       thischar=' ';
  57.     }
  58.     soundLetter(thischar);
  59.     Serial.println(thischar);
  60.     delay(lgap);
  61.     exitjmp:
  62.     printf("");
  63.   } else if (digitalRead(sos) == HIGH) {
  64.     sause = true;
  65.   } else if (sause) {
  66.     Serial.println("Sending SOS Message...");
  67.     for (int i = 0; i < 5; i++) {
  68.       soundLetter('S');
  69.       delay(lgap);
  70.       soundLetter('O');
  71.       delay(lgap);
  72.     }
  73.     Serial.println("Starting Beacon...");
  74.     while (true) {
  75.       if (digitalRead(sos) == HIGH || sause == false) {
  76.         Serial.println("Stopping Beacon.");
  77.         delay(500);
  78.         sause = false;
  79.         break;
  80.       }
  81.       if (Serial.available()) {
  82.         int charr = Serial.read();
  83.         if (charr == "=") {
  84.           sause = false;
  85.         }
  86.       }
  87.       tone(buzzerPin,tonefreq,500);
  88.       delay(1000);
  89.     }
  90.   }
  91. }
  92.  
  93.  
  94.  
  95.  
  96.  
  97. void dot()
  98. {
  99.   // play a dot
  100.   tone(buzzerPin, tonefreq);
  101.   // LED
  102.   digitalWrite(ledPin, HIGH);
  103.   delay(dotlength);
  104.   noTone(buzzerPin);
  105.   // LED
  106.   digitalWrite(ledPin, LOW);
  107.   delay(inter);
  108. }
  109.  
  110. void dash()
  111. {
  112.   // play a dash
  113.   tone(buzzerPin, tonefreq);
  114.   // LED
  115.   digitalWrite(ledPin, HIGH);
  116.   delay(dashlength);
  117.   noTone(buzzerPin);
  118.   // LED
  119.   digitalWrite(ledPin, LOW);
  120.   delay(inter);
  121. }
  122.  
  123. void soundLetter(char letter)
  124. {
  125.   // letters are in order of frequency
  126.   switch(letter)
  127.   {
  128.   case 'E':
  129.     dot();
  130.     return;
  131.   case 'T':
  132.     dash();
  133.     return;
  134.   case 'A':
  135.     dot();
  136.     dash();
  137.     return;
  138.   case 'O':
  139.     dash();
  140.     dash();
  141.     dash();
  142.     return;
  143.   case 'I':
  144.     dot();
  145.     dot();
  146.     return;
  147.   case 'N':
  148.     dash();
  149.     dot();
  150.     return;
  151.   case 'S':
  152.     dot();
  153.     dot();
  154.     dot();
  155.     return;
  156.   case 'H':
  157.     dot();
  158.     dot();
  159.     dot();
  160.     dot();
  161.     return;
  162.   case 'R':
  163.     dot();
  164.     dash();
  165.     dot();
  166.     return;
  167.   case 'D':
  168.     dash();
  169.     dot();
  170.     dot();
  171.     return;
  172.   case 'L':
  173.     dot();
  174.     dash();
  175.     dot();
  176.     dot();
  177.     return;
  178.   case 'C':
  179.     dash();
  180.     dot();
  181.     dash();
  182.     dot();
  183.     return;
  184.   case 'U':
  185.     dot();
  186.     dot();
  187.     dash();
  188.     return;
  189.   case 'M':
  190.     dash();
  191.     dash();
  192.     return;
  193.   case 'W':
  194.     dot();
  195.     dash();
  196.     dash();
  197.     return;
  198.   case 'F':
  199.     dot();
  200.     dot();
  201.     dash();
  202.     dot();
  203.     return;
  204.   case 'G':
  205.     dash();
  206.     dash();
  207.     dot();
  208.     return;
  209.   case 'Y':
  210.     dash();
  211.     dot();
  212.     dash();
  213.     dash();
  214.     return;
  215.   case 'P':
  216.     dot();
  217.     dash();
  218.     dash();
  219.     dot();
  220.     return;
  221.   case 'B':
  222.     dash();
  223.     dot();
  224.     dot();
  225.     dot();
  226.     return;
  227.   case 'V':
  228.     dot();
  229.     dot();
  230.     dot();
  231.     dash();
  232.     return;
  233.   case 'K':
  234.     dash();
  235.     dot();
  236.     dash();
  237.     return;
  238.   case 'J':
  239.     dot();
  240.     dash();
  241.     dash();
  242.     dash();
  243.     return;
  244.   case 'X':
  245.     dash();
  246.     dot();
  247.     dot();
  248.     dash();
  249.     return;
  250.   case 'Q':
  251.     dash();
  252.     dash();
  253.     dot();
  254.     dash();
  255.     return;
  256.   case 'Z':
  257.     dash();
  258.     dash();
  259.     dot();
  260.     dot();
  261.     return;
  262.   case ' ':
  263.     delay(wgap);
  264.     return;
  265.   }
  266. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement