mercoledì 28 agosto 2019

Arduino N° 12 - Beacon per ARDF - selezionabile


Arduino N° 11

 Achille De Santis

Arduino N° 13



Foto 1: il modulo beacon su 
Arduino Nano;


Beacon  selezionabile - 5 banchi di memoria.

Questo identificatore telegrafico trasmette una nota di bassa frequenza, direttamente ricevibile con Apparati in AM o FM a banda stretta.
I messaggi impostati per la radiocaccia sono MO1... MO5, selezionabili a piacere.
La selezione del beacon si opera mettendo a massa, con un dip-switch, il piedino associato (beaconsetX).
In questo caso, la selezione della memoria può essere fatta anche "a caldo", senza bisogno di resettare il modulo. Viene terminato il beacon in riproduzione ed inserito in loop il nuovo beacon.
La temporizzazione è calcolata in modo da avere sempre un rapporto 1-3-5, come da standard del codice Morse.





/* --------------- Inizio programma --------------------------
  Achille De Santis V2.0 del 12-12-2014 V3.0 del 13-12-2015
  Beacon RDF CW Multiplo, con 5 messaggi pre-selezionabili.
  1 linea di uscita per il comando di PTT
  1 linea di uscita per il testo CW_BF
  5 testi beacon, in uscita, selezionabili alternativamente;
  il pin 13 è l'uscita del testo beacon;
  il pin 12 è il comando di PTT.
*/

// --------------------------- I/O ------------------------------------------
#define pin 13                 // Uscita testo beacon sul piedino 13.
#define ptt 12                 // comando ptt sul piedino 12.
#define beaconset1 11
#define beaconset2 10
#define beaconset3 9
#define beaconset4 8
#define beaconset5 7
// ------------------------------------------------------------------------

const int T = 100;   // Definizione costante base tempi T.
const int T3=3*T;
const int T4=4*T;
const int T10=10*T;
const int freq = 1000;

void genera(int T1)
{
  tone(pin, freq); delay(T1);
  noTone(pin);     delay(T);
}

void punto()  {   genera(T);   }
void linea()  {   genera(T3);   }

void MO()
{
  linea(); linea();                 delay (4*T);            // M
  linea(); linea(); linea();        delay (4*T);         // O
}

void beacon1()    {    MO();    punto(); linea(); linea(); linea(); linea(); delay (T4);     }   //MO1   
void beacon2()    {    MO();    punto(); punto(); linea(); linea(); linea(); delay (T4);    }   //MO2 
void beacon3()    {    MO();    punto(); punto(); punto(); linea(); linea(); delay (T4);   }   //MO3 
void beacon4()    {    MO();    punto(); punto(); punto(); punto(); linea(); delay (T4);  }   //MO4 
void beacon5()    {    MO();    punto(); punto(); punto(); punto(); punto(); delay (T4); }   //MO5
void setup()
{
 pinMode(pin, OUTPUT);                            //Variabile di uscita tono
 pinMode(ptt, OUTPUT);                             //Variabile di uscita PTT
 pinMode(beaconset1, INPUT_PULLUP);
 pinMode(beaconset2, INPUT_PULLUP);
 pinMode(beaconset3, INPUT_PULLUP);
 pinMode(beaconset4, INPUT_PULLUP);
 pinMode(beaconset5, INPUT_PULLUP);
}

void loop()
{ digitalWrite(ptt, 1);     delay (T);     // attiva PTT
  if (digitalRead(beaconset1)==0)                  { beacon1();  // delay (T3);   }
    else if (digitalRead(beaconset2)==0)                { beacon2();   // delay (T3);         }
           else if (digitalRead(beaconset3)==0)                 { beacon3();   // delay (T3);     }
                 else if (digitalRead(beaconset4)==0)                    { beacon4();  // delay (T3);   }
                     else if (digitalRead(beaconset5)==0)                         {beacon5();  // delay (T3);       } 

  digitalWrite(ptt, 0);    // disattiva PTT
  delay (T10);
 }
// ---------------- Fine programma ---------------------------------


Nota: inserendo il comando di "portante" all'interno del beacon scelto si evita di far partire la trasmissione se non c'è alcun messaggio beacon selezionato.
In questo modo si ha anche una indicazione, sullo stesso LED, dell'attivazione di un qualunque messaggio beacon. Nel primo caso, comandando la portante "a priori" e non selezionando lo specifico messaggio si avrebbe l'emissione della sola portante non modulata (che può avere comunque un significato, n.d.a.).

Nessun commento:

Posta un commento