Created
November 13, 2018 14:04
-
-
Save Lukelectro/72d86fdb4a763fbaa69a40cd200887ae to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <ctype.h> | |
const int sp = 0; // speaker pin | |
char tekst[] = "pas wijze lynx bezag vroom het fikse aquaduct 1234567890"; // test tekst | |
const int mlen = 80; // morse length | |
void setup() { | |
// put your setup code here, to run once: | |
pinMode(sp,OUTPUT); | |
} | |
void loop() { | |
// put your main code here, to run repeatedly: | |
const uint8_t morseLetters[] = { | |
/* Morse codes van A t/m Z */ | |
0x42,0x84,0xA4,0x83,0x01,0x24,0xC3,0x04,0x02,0x74,0xA3,0x44,0xC2, | |
0x82,0xE3,0x64,0xD4,0x43,0x03,0x81,0x23,0x14,0x63,0x94,0xB4,0xC4 | |
}; | |
const uint8_t morseCijfers[] = { | |
/* Morse codes van 0 t/m 9 */ | |
0xFD,0x7D,0x3D,0x1D,0x0D,0x05,0x85,0xC5,0xE5,0xF5 | |
}; | |
unsigned int i = 0; | |
//tekst-naar-morse: | |
uint8_t morse[mlen]; | |
while(tekst[i] != 0 && i<(mlen-1)){ | |
if(isalpha(tekst[i])) | |
{ | |
tekst[i]= toupper(tekst[i]); | |
morse[i]= morseLetters[tekst[i]-'A']; | |
} | |
else | |
{ | |
if(isdigit(tekst[i])) | |
{ | |
morse[i]=morseCijfers[tekst[i]-'0']; | |
} | |
else morse[i] = 0; // voor een spatie | |
} | |
i++; | |
} | |
morse[i]=0xFF; // laatste teken | |
// morse-naar-piepjes: | |
while (morse[i] != 0xFF){ // zolang het niet het laaste teken is | |
unsigned int bittel, aPnS; | |
if (morse[i] == 0) | |
{ // indien we met een spatie te maken hebben. | |
for(bittel=0;bittel<8;bittel++) delay(100); // 8 punten wachten | |
} | |
else | |
{ | |
aPnS = (morse[i] & 0x07); // aantal Punten en Strepen zit in de laatste 3 bits | |
for(bittel=7;bittel>(7-aPnS);bittel--){ // bit voor bit aflopen | |
if ( ((morse[i])&(1<<bittel)) != 0 ) tone(sp,1000,300); else tone(sp,1000,100); | |
//Een 1 is een streep. | |
// een streep is 3x zo lang als een punt, en een punt heb ik op 100ms gekozen. | |
delay(100); // tussen punt of streep 1 punt wachten. | |
} | |
} | |
i++; | |
delay(300); // tussen tekens 3 punten wachten | |
} | |
// tussen repeat van de hele tekst ook even wachten, zeg 2 seconden: | |
delay(2000); | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment