Hey everyone,
First off, some info: Arduino: 1.6.5 (Windows 8.1), Board: "Arduino Uno"
So I'm not that familiar with C/C++ (as you'll soon see), and what I'm trying to make right now is a program that will flash a light in morse code based on the string that's entered. I'm looping through the string one character at a time and checking IF A ELSE IF B ELSE IF C etc etc etc.... I realize I can probably set up another array and so a simple comparison, but right now the nasty if, else if works.
Only it's not. The problem I'm running into is the array which I want to hold the morse code value. The longest string is 6 (numbers are 5 characters long and the \n, right?) but when I try to set the array to be anything less than 6 (the letter A for example is only 3) it breaks with this error:
error: incompatible types in assignment of 'const char [3]' to 'char [6]'
How can I fix this? Ideas are welcome!
Thanks in advance!
Here's the (bad) code:
/*
This is a simple morse code program.
It uses international Morse Code.
*/
//Declaring the pin to use
int ledPin = 13;
//Declaring the various intervals to use
int dotLength = 1 //length of time the light will be on for a dot
, dashLength = 3 //length of time the light will be on for a dash
, letterPartPause = 1 //length of pause between parts of the same letter
, letterPause = 3 //length of pause between letters
, wordPause = 7 //length of pause between words
, multiplier = 250; //this will turn each unit in the above durations into a quarter second
//Declaring a variable that will be loaded with the morse code values
char morseCode[6];
//Declaring the word to output
char messageToConvert[] = "ARDUINO IS AWESOME";
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
//Start the loop with the LED off
digitalWrite(ledPin, LOW);
//Loop through each character of the message
for (int i = 0; i<= sizeof(messageToConvert); i++)
{
if (messageToConvert[i] == 'A')
{
morseCode = ".-";
}
else if (messageToConvert[i] == 'B')
{
morseCode = "-...";
}
else if (messageToConvert[i] == 'C')
{
morseCode = "-.-.";
}
else if (messageToConvert[i] == 'D')
{
morseCode = "-..";
}
else if (messageToConvert[i] == 'E')
{
morseCode = ".";
}
else if (messageToConvert[i] == 'F')
{
morseCode = "..-.";
}
else if (messageToConvert[i] == 'G')
{
morseCode = "--.";
}
else if (messageToConvert[i] == 'H')
{
morseCode = "....";
}
else if (messageToConvert[i] == 'I')
{
morseCode = "..";
}
else if (messageToConvert[i] == 'J')
{
morseCode = ".---";
}
else if (messageToConvert[i] == 'K')
{
morseCode = "-.-";
}
else if (messageToConvert[i] == 'L')
{
morseCode = ".-..";
}
else if (messageToConvert[i] == 'M')
{
morseCode = "--";
}
else if (messageToConvert[i] == 'N')
{
morseCode = "-.";
}
else if (messageToConvert[i] == 'O')
{
morseCode = "---";
}
else if (messageToConvert[i] == 'P')
{
morseCode = ".--.";
}
else if (messageToConvert[i] == 'Q')
{
morseCode = "--.-";
}
else if (messageToConvert[i] == 'R')
{
morseCode = ".-.";
}
else if (messageToConvert[i] == 'S')
{
morseCode = "...";
}
else if (messageToConvert[i] == 'T')
{
morseCode = "-";
}
else if (messageToConvert[i] == 'U')
{
morseCode = "..-";
}
else if (messageToConvert[i] == 'V')
{
morseCode = "...-";
}
else if (messageToConvert[i] == 'W')
{
morseCode = ".--";
}
else if (messageToConvert[i] == 'X')
{
morseCode = "-..-";
}
else if (messageToConvert[i] == 'Y')
{
morseCode = "-.--";
}
else if (messageToConvert[i] == 'Z')
{
morseCode = "--..";
}
else if (messageToConvert[i] == '1')
{
morseCode = ".----";
}
else if (messageToConvert[i] == '2')
{
morseCode = "..---";
}
else if (messageToConvert[i] == '3')
{
morseCode = "...--";
}
else if (messageToConvert[i] == '4')
{
morseCode = "....-";
}
else if (messageToConvert[i] == '5')
{
morseCode = ".....";
}
else if (messageToConvert[i] == '6')
{
morseCode = "-....";
}
else if (messageToConvert[i] == '7')
{
morseCode = "--...";
}
else if (messageToConvert[i] == '8')
{
morseCode = "---..";
}
else if (messageToConvert[i] == '9')
{
morseCode = "----.";
}
else if (messageToConvert[i] == '0')
{
morseCode = "-----";
}
else
{
moreseCode = " "
}
for (int m = 0; i <= sizeof(morseCode); m++)
{
if (morseCode[m] == '.')
{
digitalWrite(ledPin, HIGH);
delay(dotLength * multiplier);
}
else if (morseCode[m] == '-')
{
digitalWrite(ledPin, HIGH);
delay(dashLength * multiplier);
}
else if (morseCode[m] == ' ')
{
digitalWrite(ledPin, LOW);
delay(wordPause * multiplier);
}
digitalWrite(ledPin, LOW);
delay(letterPartPause * multiplier);
}
digitalWrite(ledPin, LOW);
delay((letterPause - letterPartPause) * multiplier);
}
//Pause added between message repeats
digitalWrite(ledPin, LOW);
delay(60000);
}