| YaK:: Sample CW beacon keyer on ATtiny45 | [Changes] [Calendar] [Search] [Index] [PhotoTags] |
#define PIN 0 /* Pin 5 on the ATtiny45 or 85. Built-in LED on programmer. */
#define WPM 6
#define DIT_MILLIS ((int)(1200/(WPM))) /* 100 milliseconds is 12 WPm */
#define PAUSE_MILLIS 3000 /* before repeating */
#define V "...- "
#define D "-.. "
#define W ".-- "
#define _6 "-.... "
#define R ".-. "
#define E ". "
#define K "-.- "
#define __ " "
const char Message[] = V V V __ D E __ W _6 R E K ;
void TurnOnFor(int num_dits) { digitalWrite(PIN, HIGH); delay(num_dits*DIT_MILLIS); }
void TurnOffFor(int num_dits) { digitalWrite(PIN, LOW); delay(num_dits*DIT_MILLIS); }
void Fist(int ch) {
switch (ch) {
case '.': TurnOnFor(1); TurnOffFor(1); break; // dit
case '-': TurnOnFor(3); TurnOffFor(1); break; // dah
default: TurnOffFor(2); break; // end of letter
}
}
void setup() {
pinMode(PIN, OUTPUT); // initialize PIN as a digital output.
}
void loop() {
int ch, i = 0;
while (ch = Message[i++]) {
Fist(ch);
}
delay(PAUSE_MILLIS);
}
|
| (last modified 2018-09-24) [Login] |