Stap 5: programma
Opmerking: als u programmering Arduino voordat ervaring heeft gehad, kan je je afvragen waarom ik niet gewoon vervangen door de lange reeks "als... anders "s waarmee elk teken met een switch case-statement. Echter, na een hoofdpijn, en een combinatie van onderzoek en het oplossen van problemen ontdekte ik dat de zaak optie alleen één bepaalde waarde, en niet een array van karakters accepteert. So much voor mijn luiheid...
int LED = 2;
int buzzerPin = 3;
int stip = 250;
char * morseLetters [] = {".-", "-...", "-.-.", "-..",".",".. -.", "--.", "....", "..",".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.","...", "-", ".. -", "...-", ".--", "-.. -", "-.--", "--.." };
char * morseNumbers [] = {"---",".---", ".. ---", "...--", "....-", ".....", "-....", "--...", "---..", "----."};
VOID Setup
{
pinMode (LED, uitvoer);
pinMode (buzzerPin, OUTPUT);
Serial.begin(9600);
}
void loop
{
char info;
Als (Serial.available() > 0) {}
info = Serial.read();
Als (info > = "a" & & info < = 'z') {//We kunt gebruiken dit door het feit dat elk ASCII-code een getal is
letterId (morseLetters [info - 'a']);
}
anders als (info > = "A" & & info < = 'Z') {}
letterId (morseLetters [info - 'A']);
}
anders als (info > = 0 & & info < = 9) {}
letterId (morseNumbers [info - 0]);
}
anders als (info == ' ') {}
delay(dot * 4);
}
}
}
VOID letterId (char * teken) {}
int i = 0;
terwijl (teken [i]! = '\0') {}
output(Character[i]);
i ++;
}
delay(dot * 3);
}
VOID uitvoer (char ID) {}
digitalWrite(LED,HIGH);
digitalWrite(buzzerPin,HIGH);
Als (ID == '.') {
delay(dot);
}
else {}
delay(dot * 3);
}
digitalWrite(LED,LOW);
digitalWrite(buzzerPin,LOW);
delay(dot);
}