mercoledì 12 febbraio 2020

Arduino N° 36 - Sirena Italiana

                           

< Arduino N° 35

 Achille De Santis

Arduino n° 37




Sirena tipo "Italiana", modulata in modo continuo utilizzando la funzione predefinita "tone" di Arduino.  Un interruttore di ingresso abilita/disabilita il funzionamento.
Sull'uscita è disponibile un segnale pseudo-sinusoidale che, con un condensatore di accoppiamento, si potrebbe iniettare su un amplificatore di BF con uscita su altoparlante a tromba.


/* --------------- Inizio Programma ------------------
  Achille De Santis  17-10-2019 "Sirena Italiana"
  V1.0 in data 17-10-2019.
  ---------------------------------------------------------
*/

// -------------- I/O ---------------------------------------------------------------------------------
#define Led_Red     11    // uscita ausiliaria per LED
#define out              13    // uscita BF
#define SW              8     // interruttore di ingresso (abilitazione sirena verso massa)
// -----------------------------------------------------------------------------------------------------
const int f1 = 392;
const int f2 = 660;
// --------------------------
const int T1=1;
const int T2=100;
int f;
bool S=true;

  // non è richiesta la dichiarazione di variabili int o long per la funzione "tone"

void setup()
{
  intestazione();
  pinMode(SW, INPUT_PULLUP);
  pinMode(Led_Red, OUTPUT);
  // non richiede setup la funzione "tone"
}

void intestazione()
  { Serial.begin(9600);        // velocità seriale di comunicazione
    Serial.println(" _________ Tecnatron Creation ___________");
    Serial.println(" Sirena tipo Italiana                   ___________");
    Serial.println(" prof. Achille De Santis - 17-10-2019  V1.0 .--");
  }

void tono(int F)  // generazione tono
{  tone(out, F);  delay(T1); }

void loop()
{
  S=digitalRead(SW);
  switch(S)
  {
    case 0:
     {digitalWrite(Led_Red, HIGH);
      for (f=f1; f<=f2; f++)      {  tono(f);  delay(T2);  }           // Primo tono ascendente  da 392 Hz
      for (f=f2; f>=f1; f--)        {  tono(f);  delay(T2);  }           // Secondo tono discendente da 660 Hz
      break;
     }
    default:  { noTone(out); digitalWrite(Led_Red, LOW); }   // spegne la sirena
  }
}
// ------------------------------- Fine programma --------------------------------------------------



Simulazione: Sirena Italiana

Argomenti correlati: Sirena "Bitonale"


> Arduino n° 37

Nessun commento:

Posta un commento