Well, I've got this far and now I'm still out of memory - but not by so much.
data section exceeds available space in board
Sketch uses 584 bytes (57%) of program storage space. Maximum is 1024 bytes.
Global variables use 112 bytes (175%) of dynamic memory, leaving -48 bytes for local variables. Maximum is 64 bytes.
Not enough memory; see https://support.arduino.cc/hc/en-us/articles/360013825179 for tips on reducing your footprint.
Error compiling for board ATtiny13.
#define DASH_DURATION (3 * DOT_DURATION) // Duration of a dash
#define SYMBOL_SPACE DOT_DURATION // Space between symbols in the same letter
#define LETTER_SPACE (3 * DOT_DURATION) // Space between letters
#define WORD_SPACE (7 * DOT_DURATION) // Space between words
#define MESSAGE_DELAY 30000 // 30-second delay between messages
#define MORSE_PIN 4 // Define the pin used for Morse code output
#include <avr/pgmspace.h>
const char lettera[] PROGMEM = ".-";
const char letterb[] PROGMEM = "-...";
const char letterc[] PROGMEM = "-.-.";
const char letterd[] PROGMEM = "-..";
const char lettere[] PROGMEM = ".";
const char letterf[] PROGMEM = "..-.";
const char letterg[] PROGMEM = "--.";
const char letterh[] PROGMEM = "....";
const char letteri[] PROGMEM = "..";
const char letterj[] PROGMEM = ".---";
const char letterk[] PROGMEM = "-.-";
const char letterl[] PROGMEM = ".-..";
const char letterm[] PROGMEM = "--";
const char lettern[] PROGMEM = "-.";
const char lettero[] PROGMEM = "---";
const char letterp[] PROGMEM = ".--.";
const char letterq[] PROGMEM = "--.-";
const char letterr[] PROGMEM = ".-.";
const char letters[] PROGMEM = "...";
const char lettert[] PROGMEM = "-";
const char letteru[] PROGMEM = "..-";
const char letterv[] PROGMEM = "...-";
const char letterw[] PROGMEM = ".--";
const char letterx[] PROGMEM = "-..-";
const char lettery[] PROGMEM = "-.--";
const char letterz[] PROGMEM = "--..";
const char *const string_table[] PROGMEM = {lettera, letterb, letterc, letterd, lettere, letterf, letterg, letterh, letteri, letterj, letterk,
letterm, lettern, lettero, letterp, letterq, letterr, letters, lettert, letteru, letterv, letterw, letterx,
lettery, letterz};
//char buffer[4]; // make sure this is large enough for the largest string it must hold
class MorseCodeSender {
//private:
// const char* PROGMEM morse_code[26] = {
// ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", // A-J
// "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", // K-T
// "..-", "...-", ".--", "-..-", "-.--", "--.." // U-Z
// };
void sendDot() {
digitalWrite(MORSE_PIN, HIGH); // Set the pin high
delay(DOT_DURATION);
digitalWrite(MORSE_PIN, LOW); // Set the pin low
delay(SYMBOL_SPACE);
}
void sendDash() {
digitalWrite(MORSE_PIN, HIGH); // Set the pin high
delay(DASH_DURATION);
digitalWrite(MORSE_PIN, LOW); // Set the pin low
delay(SYMBOL_SPACE);
}
void sendChar(char c) {
if (c >= 'A' && c <= 'Z') {
const char* morse = string_table[c - 'A'];
while (*morse) {
if (*morse == '.') {
sendDot();
} else if (*morse == '-') {
sendDash();
}
morse++;
}
delay(LETTER_SPACE - SYMBOL_SPACE); // Space between letters
} else if (c == ' ') {
delay(WORD_SPACE - LETTER_SPACE); // Space between words
}
}
public:
void sendMessage(const char* message) {
while (*message) {
sendChar(toupper(*message));
message++;
}
}
};
MorseCodeSender sender;
void setup() {
pinMode(MORSE_PIN, OUTPUT);
// Message to send
//const char* message = "test test test BTG emergency morse transmitter test test test";
const PROGMEM char* message = "btoqp fgmir zdfsb ydvnf rqrtb ndmki ymzvh aylcz oifbq fbsth muucc kkwmv vxhbd urmab ucdjk oarql qoadl tgmi";
//text is enigma coded and reads "Wir verlassen unsere Basis. Wir wurden von Marsianern überrannt. Sie haben unseren Kommandanten gefressen."
//English is "We are leaving our base. We have been overrun by Martians. They have eaten our commander."
while (1) {
sender.sendMessage(message);
delay(MESSAGE_DELAY); // 30-second delay between repeated messages
}
}
void loop() {
// Nothing to do in the loop function since everything is handled in setup
}
type or paste code here