Guest User

Morse Decoder By Sharpy

a guest
Jul 3rd, 2017
518
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.81 KB | None | 0 0
  1. //////////////////////////
  2. // MADE BY SHARPY NIORO //
  3. //////////////////////////
  4. //   JUST FOR LULZ [c]  //
  5. //////////////////////////
  6.  
  7. #include <U8glib.h>
  8.  
  9. U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // DOES THE MAGICAL TRICK
  10.  
  11. unsigned long t1, t2, T12, T13, len, dahLen; // TIME VALUES
  12. bool wasPressed, noobMode = false;
  13. String code, string; // THE CODE OF LAST CHAR AND STRING OF CHARS YOU'VE ENTERED
  14. char codeReaded, lastChar; // SOME CHARS
  15.  
  16. void setup() {
  17.  dahLen = 175; // LENGTH OF DAH IN MS
  18.  Serial.begin(9600); // BEGINS THE MONOLOGUE
  19.  pinMode(2, INPUT_PULLUP);
  20.  pinMode(3, INPUT_PULLUP);
  21.  pinMode(13, OUTPUT);
  22.  pinMode(9, OUTPUT);
  23. }
  24.  
  25. void loop() {
  26.   if(digitalRead(2) == 0 && !wasPressed)
  27.   {
  28.     tone(9, 400); // MAKES THE 'BEE' SOUND
  29.     digitalWrite(13, 1); // MAKES LED TURN ON
  30.     t2 = millis();
  31.     wasPressed = true;
  32.   }
  33.   if(digitalRead(2) == 1 && wasPressed)
  34.   {
  35.     noTone(9); // SHUTS UP THE 'BEE' SOUND
  36.     digitalWrite(13, 0); // SHUTS UP THE LED
  37.     t1 = millis(); // SETS THE VALUE t1 TO millis()
  38.     T12 = millis(); // SETS THE NEW VALUE TO T2
  39.     T13 = millis(); // SETS THE T13
  40.     len = t1 - t2; // COUNTS THE PRESS LENGTH
  41.     wasPressed = false;
  42.   }
  43.   if(!noobMode) // IF OPERATOR IN NOT A NOOB
  44.     if ((millis() - T12) > ((dahLen / 3) * 7)*3 && lastChar != ' '){ // IF THE TIME HAS PASSED AND THE SPACE IS NOT ADDED ALREADY
  45.       Serial.print(" "); // PRINTS THE SPACE AND TIME MAP
  46.       string += ' '; //ADDS THE SPACE
  47.       lastChar = ' '; // ADDS THE SPACE
  48.       T12 = millis(); // RESETS THE T12 VALUE BY READING THE CURRENT TIME FROM THE PROGRAM STARTED IN THE WORNLD WE EXIST IN
  49.     }
  50.   if ((millis() - T13) > (dahLen*3)){
  51.     convert(); // SUMMONS THE DEVIL TO DECODE THE MORSE
  52.     u8g.firstPage();  //KILLS THE BATMAN
  53.         do {
  54.           u8g.setFont(u8g_font_6x12); // SMALL FONT
  55.           u8g.setPrintPos(0, 10); // SETS THE PRINTING POSITION
  56.           u8g.print(string); //PRINTS THE STRING
  57.         } while( u8g.nextPage() );
  58.     T13 = millis(); // RESETS THE T13 VALUE BY READING THE CURRENT TIME FROM THE PROGRAM STARTED IN THE WORNLD WE EXIST IN
  59.   }
  60.   if (len > (dahLen / 3))
  61.   {
  62.     codeReaded = readCode(); //READS THE CODE
  63.     code += codeReaded; // ADDS THE CODE TO THE CODE TO READ THE CODE AND BECOME SMARTER
  64.     u8g.firstPage();   // SENDS THE JUMPSCARE TO THE SCREEN
  65.         do {
  66.           u8g.setFont(u8g_font_6x12); // SMALL FONT
  67.           u8g.setPrintPos(0, 10); // SETS THE PRINTING POSITION
  68.           u8g.print(string); //PRINTS THE STRING
  69.           u8g.setFont(u8g_font_fur49n); // HUGE FONT
  70.           u8g. setPrintPos(0, 40);
  71.           u8g.print(code); //PRINTS THE CODE
  72.         } while( u8g.nextPage() );
  73.     len = 0; t1 = 0; t2 = 0; // RESETS THE VALUES OF TIME AND SPACE CONTINUUM IN 4D SPACE
  74.   }
  75.   if(digitalRead(3) == 0){
  76.     noobMode = !noobMode; //MAKES NO SPACES AT THE TIME COMES;
  77.   }
  78. }
  79.  
  80. char readCode()
  81. {
  82.   if (len < dahLen && len > (dahLen / 3)) //CHECK THE SIGNAL LENGTH [IF IT IS NOT LONGER THAN THE DAH SHOULD BE BUT LONGER THAN THE DIT]
  83.     return '.';
  84.   if (len > dahLen) //CHECK THE SIGNAL LENGTH [IF IT IS LONGER THAN THE DAH SHOULD BE]
  85.     return '-';
  86. }
  87.  
  88. void convert()
  89. {
  90.   static String letters[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-",
  91.                              ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", ".-.-.-", "--..--", "-----", ".----", "..---", "...--",
  92.                              "....-", ".....", "-....", "--...", "---..", "----.", "---.", "..--..", ".--.-.", "---...", ".----.", "-....-", "-..-.",
  93.                              ".-..-.", "-...-", "W"
  94.                             }; // ARRAY OF MORSE
  95.   static char Alphabet[] = {'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', '.', ',',
  96.                             '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!', '?', '@', ':', '\'', '-', '/', '"', '='
  97.                            }; // ARRAY OF ENGLISH CHARS
  98.   int i = 0; // SET THE index TO 0
  99.  
  100.   if(code == "-----."){ // IF CODE IS -----. ...
  101.     string = ""; // ... CLEAR THE STRING
  102.     Serial.println(""); //BLEAK THE LINE IN SM
  103.   }
  104.     while (letters[i] != "W") // WHILE NOT ARRAY ENDED [COULD BE MADE A LOT BETTER BUT I DON'T HAVE A TIME]
  105.     {
  106.       if (letters[i] == code) // IF THE CODE MATCHES...
  107.       {
  108.         lastChar = Alphabet[i]; // ...ASSIGN lastChar
  109.         Serial.print(Alphabet[i]); // ...SHOW IT IN THE SM
  110.         string += lastChar; // ...ADD IT TO THE STRING TO DISPLAY ON THE SCREEN
  111.         break; // BREAKS THE WHILE 'COZ WE DON'T NEED IT ANYMORE
  112.       }
  113.       i++; // GROW UP
  114.     }
  115.   code = ""; // THE CODE IS CONVERTED TO THE LETTER; NOW WE HAVE TO CLEAR THE CODE
  116. }
Add Comment
Please, Sign In to add comment