// Balise RTTY (F6IDT juillet 2021) // Adaptation d'un soft de VU2LCH // // NB: Texte uniquement en majuscule. // Placer une lettre "f" avant un chiffre et la lettre "l" après. // Une suite de "l" simule le Diddle en transmission TTY. // Un "n" en fin de texte met à la ligne. char letter[33] = "0EnA SIUrDRJNFCKTZLWHYPQOBGfMXVl"; char number[33] = " 3n- b87r#4',!:(5')2#6019?&f./;l"; char buff[100]; #define BIT_TIME 22 // durée du bit = 22 ms #define TTY 13 // Sortie du signal TTY #define TX 11 // Sortie commutation en émission (PTT) void setup() { pinMode(TTY, OUTPUT); pinMode(TX, OUTPUT); digitalWrite(TX, LOW); digitalWrite(TTY, LOW); } void txChar(char ascii){ int i; char c= 0; if (isalpha(ascii)){ for (i = 0; i <= 32; i++){ if (letter[i] == ascii) c = i; } } else{ for (i = 0; i < 32; i++){ if (number[i] == ascii) c = i; } } // Bit de Start digitalWrite(TTY, HIGH); delay(BIT_TIME); for (i=0; i < 5; i++){ if (bitRead(c, i) == 1) digitalWrite(TTY, LOW); else digitalWrite(TTY, HIGH); delay(BIT_TIME); } // Bit de Stop digitalWrite(TTY, LOW); delay((BIT_TIME * 3)/2); } void txString(char *string){ digitalWrite(TX, HIGH); // Passage en émission digitalWrite(TTY, LOW); delay(500); // Délai de 0,5s avant envoi des caractères while (*string){ txChar(*string++); } digitalWrite(TTY, LOW); delay(200); digitalWrite(TX, LOW); // Passage en réception } void loop() { // Transmission du texte sprintf(buff, "llllllllll BALISE RTTY DE Ff6lIDTf,l QTHf:l GRASSEf,l LOCf:l JNf33lLP llllllllll THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG llllllllll f0123456789 llllllllll RYRYRYRYRYRYRYRYRYRY lllllllllln"); txString(buff); delay(6000); // Temps d'attente entre deux transmissions de texte }