// Beeper de fin de transmission en DX BLU (V5 F6IDT 04/2021) // Envoi un K en morse, un bip, ou rien au relachement // de la pédale du micro. // Inverseur à 3 positions sur entrée analogique A5. // En position centrale, pas de bip. // Définition des variables: int audioPin = 9; // Sortie BF et buzzer piézo int TXPin = 8; // Sortie vers PTT du TX int PTTPin = 4; // Entrée PTT du micro int InterPin = 2; // Inter M/A int ToneFreq = 900; // Tonalité en Hz int Pt = 100; // Durée du point/espace en ms. int adc_INV = 0; int Position = 0; #define posK 0 #define posBip 1 #define posS 2 int lireINV() { adc_INV = analogRead(5); if (adc_INV > 1000) return posS; if (adc_INV < 750 && adc_INV > 250) return posK; if (adc_INV < 100) return posBip; return posS; } void setup() { pinMode(PTTPin, INPUT_PULLUP); pinMode(InterPin, INPUT_PULLUP); pinMode(TXPin, OUTPUT); digitalWrite(TXPin, LOW); pinMode(audioPin, OUTPUT); digitalWrite(audioPin, LOW); } void genK() { tone(audioPin,ToneFreq); delay(Pt*3); noTone(audioPin); delay(Pt); tone(audioPin,ToneFreq); delay(Pt); noTone(audioPin); delay(Pt); tone(audioPin,ToneFreq); delay(Pt*3); noTone(audioPin); } void genBIP() { tone(audioPin,ToneFreq); delay(Pt*5); noTone(audioPin); } void loop() { if (digitalRead(PTTPin) == LOW) // PTT appuyé, { digitalWrite(TXPin, HIGH); // TX en émission delay(100); if (digitalRead(PTTPin) == HIGH) // si PTT relaché { Position = lireINV(); switch (Position) { case posS: // Inverseur en position médiane. A5 au +5V { break; } case posBip: // A5 à la masse { genK(); break; } case posK: // A5 à 2,5V (point médian des deux 10k { genBIP(); break; } } delay(100); digitalWrite(TXPin, LOW); // TRX en réception } } }