Random morse code at 4 different speeds. Originally posted by John Fisher on the AQRP Yahoo group.

Dependencies:   mbed

Committer:
tony1tf
Date:
Sat Jun 22 21:52:12 2013 +0000
Revision:
0:8c725fbd8e0e
Random morse code practice at 4 different speeds. Written by John Fisher and published on the AQRP Yahoo group.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tony1tf 0:8c725fbd8e0e 1
tony1tf 0:8c725fbd8e0e 2 //==============================================================
tony1tf 0:8c725fbd8e0e 3 // Morse Code June 30, 2011 John H. Fisher - K5JHF
tony1tf 0:8c725fbd8e0e 4 //==============================================================
tony1tf 0:8c725fbd8e0e 5
tony1tf 0:8c725fbd8e0e 6 #ifndef MORSE_CODE_H
tony1tf 0:8c725fbd8e0e 7 #define MORSE_CODE_H
tony1tf 0:8c725fbd8e0e 8
tony1tf 0:8c725fbd8e0e 9 #include "Goodies.h"
tony1tf 0:8c725fbd8e0e 10
tony1tf 0:8c725fbd8e0e 11 #define PI 3.141592654
tony1tf 0:8c725fbd8e0e 12
tony1tf 0:8c725fbd8e0e 13 #define step PI/16
tony1tf 0:8c725fbd8e0e 14
tony1tf 0:8c725fbd8e0e 15 extern const float sine_wave [ 32 ];
tony1tf 0:8c725fbd8e0e 16
tony1tf 0:8c725fbd8e0e 17 class Morse_Code : private Goodies {
tony1tf 0:8c725fbd8e0e 18
tony1tf 0:8c725fbd8e0e 19 //===================================================================
tony1tf 0:8c725fbd8e0e 20
tony1tf 0:8c725fbd8e0e 21 private:
tony1tf 0:8c725fbd8e0e 22
tony1tf 0:8c725fbd8e0e 23 float u, _WPM_Character, _WPM_Speed, ta, tc, tw;
tony1tf 0:8c725fbd8e0e 24
tony1tf 0:8c725fbd8e0e 25 int _Tone_Frequency;
tony1tf 0:8c725fbd8e0e 26
tony1tf 0:8c725fbd8e0e 27 char _LED_Pin, _Speaker_Pin;
tony1tf 0:8c725fbd8e0e 28
tony1tf 0:8c725fbd8e0e 29 //===================================================================
tony1tf 0:8c725fbd8e0e 30
tony1tf 0:8c725fbd8e0e 31 struct {
tony1tf 0:8c725fbd8e0e 32
tony1tf 0:8c725fbd8e0e 33 int last_bit:1;
tony1tf 0:8c725fbd8e0e 34
tony1tf 0:8c725fbd8e0e 35 int last_char:1;
tony1tf 0:8c725fbd8e0e 36
tony1tf 0:8c725fbd8e0e 37 int _Sound:1;
tony1tf 0:8c725fbd8e0e 38
tony1tf 0:8c725fbd8e0e 39 int _Practice:1;
tony1tf 0:8c725fbd8e0e 40
tony1tf 0:8c725fbd8e0e 41 } Morse_Flag;
tony1tf 0:8c725fbd8e0e 42
tony1tf 0:8c725fbd8e0e 43 //===================================================================
tony1tf 0:8c725fbd8e0e 44
tony1tf 0:8c725fbd8e0e 45 public:
tony1tf 0:8c725fbd8e0e 46
tony1tf 0:8c725fbd8e0e 47 Morse_Code ( float WPM_Character = 18.0,
tony1tf 0:8c725fbd8e0e 48 float WPM_Speed = 5.0,
tony1tf 0:8c725fbd8e0e 49 int Tone_Frequency = 700,
tony1tf 0:8c725fbd8e0e 50 char LED_Pin = 11,
tony1tf 0:8c725fbd8e0e 51 char Speaker_Pin = 9 );
tony1tf 0:8c725fbd8e0e 52
tony1tf 0:8c725fbd8e0e 53 void Sound_On ( void );
tony1tf 0:8c725fbd8e0e 54
tony1tf 0:8c725fbd8e0e 55 void Sound_Off ( void );
tony1tf 0:8c725fbd8e0e 56
tony1tf 0:8c725fbd8e0e 57 void Sound_Toggle ( void );
tony1tf 0:8c725fbd8e0e 58
tony1tf 0:8c725fbd8e0e 59 void Practice_On ( void );
tony1tf 0:8c725fbd8e0e 60
tony1tf 0:8c725fbd8e0e 61 void Practice_Off ( void );
tony1tf 0:8c725fbd8e0e 62
tony1tf 0:8c725fbd8e0e 63 void Practice_Toggle ( void );
tony1tf 0:8c725fbd8e0e 64
tony1tf 0:8c725fbd8e0e 65 int get_Practice ( void );
tony1tf 0:8c725fbd8e0e 66
tony1tf 0:8c725fbd8e0e 67 char Morse ( char ASCII );
tony1tf 0:8c725fbd8e0e 68
tony1tf 0:8c725fbd8e0e 69 void Send_Morse ( char Morse );
tony1tf 0:8c725fbd8e0e 70
tony1tf 0:8c725fbd8e0e 71 char Random_Code ( void );
tony1tf 0:8c725fbd8e0e 72
tony1tf 0:8c725fbd8e0e 73 void set_Tone ( int frequency );
tony1tf 0:8c725fbd8e0e 74
tony1tf 0:8c725fbd8e0e 75 int get_Tone ( );
tony1tf 0:8c725fbd8e0e 76
tony1tf 0:8c725fbd8e0e 77 void Tone_Adjust ( int delta, int limit );
tony1tf 0:8c725fbd8e0e 78
tony1tf 0:8c725fbd8e0e 79 void set_WPM ( float WPM_Speed );
tony1tf 0:8c725fbd8e0e 80
tony1tf 0:8c725fbd8e0e 81 float get_WPM ( );
tony1tf 0:8c725fbd8e0e 82
tony1tf 0:8c725fbd8e0e 83 void WPM_Adjust ( float delta, float limit );
tony1tf 0:8c725fbd8e0e 84
tony1tf 0:8c725fbd8e0e 85 private:
tony1tf 0:8c725fbd8e0e 86
tony1tf 0:8c725fbd8e0e 87 void Calculate_Morse_Timing ( float s, float c ) ;
tony1tf 0:8c725fbd8e0e 88
tony1tf 0:8c725fbd8e0e 89 void dit ( );
tony1tf 0:8c725fbd8e0e 90
tony1tf 0:8c725fbd8e0e 91 void dah ( );
tony1tf 0:8c725fbd8e0e 92
tony1tf 0:8c725fbd8e0e 93 void Tone ( int freq_factor, float duration ) ;
tony1tf 0:8c725fbd8e0e 94
tony1tf 0:8c725fbd8e0e 95 };
tony1tf 0:8c725fbd8e0e 96
tony1tf 0:8c725fbd8e0e 97 //===================================================================
tony1tf 0:8c725fbd8e0e 98
tony1tf 0:8c725fbd8e0e 99 #endif
tony1tf 0:8c725fbd8e0e 100
tony1tf 0:8c725fbd8e0e 101 //===================================================================
tony1tf 0:8c725fbd8e0e 102
tony1tf 0:8c725fbd8e0e 103