American Standard Code for Information Interchange (1963)
Converteix les lletres a-z en minúscula en valors del 97-122
Converteix les lletres A-Z en majúscula en valors del 65-90
Converteix els numeros del 0-9 en valors del 48-57
Converteix les lletres en minúscula en valors del 97-122
Converteix l'espai en valor 32
Exemple:
S O S
83, 32, 79, 32, 83, \0
// Morse code for blinking a LED
int ledPin = 13;// int means integer.
int dotDelay = 200;
char* letters[] = { //[] It means an array, with the name letters for the array, char is a type of variable meaning character. * Is a pointer, it points to the characters of the array in order
".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", // A-I
".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", // J-R
"...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." // S-Z
};
char* numbers[] = {
"-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----."}; // It's a second array for numbers 0 to 9, these two arrays are arrays of arrays, also know as an array of string literals, ex of string literal: ..---, an other could be az8mhello because a string is several character together like a word. String literal can be named string.
// We could think as an array of an array of characters
// If I write letter[0] it means .- because it's the first element of the array, and letters[26] is --..
//Afterworks .- will mean A and --.. will mean Z
void setup(){
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
char ch;
if (Serial.available() > 0){
ch = Serial.read();
if (ch >= 'a' && ch <= 'z')
{
flashSequence(letters[ch - 'a']);
}
else if (ch >= 'A' && ch <= 'Z')
{
flashSequence(letters[ch - 'A']);
}
else if (ch >= '0' && ch <= '9')
{
flashSequence(numbers[ch - '0']);
}
else if (ch == ' ')
{
delay(dotDelay * 4); // gap between words
}
}
}
void flashSequence(char* sequence){
int i = 0;
while (sequence[i] != NULL)
{
flashDotOrDash(sequence[i]);
i++;
}
delay(dotDelay * 3); // gap between letters
}
void flashDotOrDash(char dotOrDash){
digitalWrite(ledPin, HIGH);
if (dotOrDash == '.')
{
delay(dotDelay);
}
else // must be a dash
{
delay(dotDelay * 3);
}
digitalWrite(ledPin, LOW);
delay(dotDelay); // gap between flashes
}