Guest User

AM ARDUINO STATION WITH CW KEY AND DECODER

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