Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.97 KB | None | 0 0
  1. struct t_mtab { char c, pat; } ;
  2.  
  3. struct t_mtab morsetab[] = {
  4.     {'.', 106},
  5.   {',', 115},
  6.   {'?', 76},
  7.   {'/', 41},
  8.   {'A', 6},
  9.   {'B', 17},
  10.   {'C', 21},
  11.   {'D', 9},
  12.   {'E', 2},
  13.   {'F', 20},
  14.   {'G', 11},
  15.   {'H', 16},
  16.   {'I', 4},
  17.   {'J', 30},
  18.   {'K', 13},
  19.   {'L', 18},
  20.   {'M', 7},
  21.   {'N', 5},
  22.   {'O', 15},
  23.   {'P', 22},
  24.   {'Q', 27},
  25.   {'R', 10},
  26.   {'S', 8},
  27.   {'T', 3},
  28.   {'U', 12},
  29.   {'V', 24},
  30.   {'W', 14},
  31.   {'X', 25},
  32.   {'Y', 29},
  33.   {'Z', 19},
  34.   {'1', 62},
  35.   {'2', 60},
  36.   {'3', 56},
  37.   {'4', 48},
  38.   {'5', 32},
  39.   {'6', 33},
  40.   {'7', 35},
  41.   {'8', 39},
  42.   {'9', 47},
  43.   {'0', 63}
  44. } ;
  45.  
  46. #define N_MORSE  (sizeof(morsetab)/sizeof(morsetab[0]))
  47.  
  48. #define SPEED  (12)
  49. #define DOTLEN  (1200/SPEED)
  50. #define DASHLEN  (3*(1200/SPEED))
  51.  
  52. int LEDpin =  13;
  53.  
  54. void
  55. dash()
  56. {
  57.   digitalWrite(LEDpin, HIGH) ;
  58.   delay(DASHLEN);
  59.   digitalWrite(LEDpin, LOW) ;
  60.   delay(DOTLEN) ;
  61. }
  62.  
  63. void
  64. dit()
  65. {
  66.   digitalWrite(LEDpin, HIGH) ;
  67.   delay(DOTLEN);
  68.   digitalWrite(LEDpin, LOW) ;
  69.   delay(DOTLEN);
  70. }
  71.  
  72. void
  73. send(char c)
  74. {
  75.   int i ;
  76.   if (c == ' ') {
  77.     Serial.print(c) ;
  78.     delay(7*DOTLEN) ;
  79.     return ;
  80.   }
  81.   for (i=0; i<N_MORSE; i++) {
  82.     if (morsetab[i].c == c) {
  83.       unsigned char p = morsetab[i].pat ;
  84.       Serial.print(morsetab[i].c) ;
  85.  
  86.       while (p != 1) {
  87.           if (p & 1)
  88.             dash() ;
  89.           else
  90.             dit() ;
  91.           p = p / 2 ;
  92.       }
  93.       delay(2*DOTLEN) ;
  94.       return ;
  95.     }
  96.   }
  97.   /* if we drop off the end, then we send a space */
  98.   Serial.print("?") ;
  99. }
  100.  
  101. void
  102. sendmsg(char *str)
  103. {
  104.   while (*str)
  105.     send(*str++) ;
  106.   Serial.println("");
  107. }
  108.  
  109. void setup() {
  110.   pinMode(LEDpin, OUTPUT) ;
  111.   Serial.begin(9600) ;
  112.   Serial.println("Simple Arduino Morse Beacon v0.0") ;
  113.   Serial.println("Written by Mark VandeWettering <k6hx@arrl.net>") ;
  114.   Serial.println("Check out my blog @ https://brainwagon.org") ;
  115.   Serial.println("") ;
  116. }
  117.  
  118. void loop() {
  119.   sendmsg("KE5MOW TEST") ;
  120.   delay(3000) ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement