mercoledì 1 aprile 2020

Arduino N° 43 - VU Meter 8 canali















< Segue da Arduino N°  42     

 Achille De Santis

Arduino N° 44





Il seguente programma, ridotto all'essenziale, può essere utilizzato come "VU meter" o come comando per "Luci psichedeliche" ad 8 canali.

Da schema, eliminare il filo blu dopo il collaudo e collegare l'ingresso marrone alla BF con una capacità di accoppiamento (v. simulazione) o con un piccolo trasformatore di accoppiamento, del tipo dei trasformatori di ingresso o di uscita per stadi a transistori, magari recuperati da una radiolina a transistori o da un vecchio modem.



/* -------------------------------- Inizio Programma -------------------------------------------------
  VU-meter con Barra LED. V4.0 del 12-01-2020
  prof. Achille De Santis.
  Collegare 8 led dal pin 2 al 9 con resistenza da 220 Ω, catodo comune.
  Inserire un potenziometro da 10 KΩ sull'ingresso segnale A0.
*/

// ----------------------------------------------------
#define BF  A0    // ingresso analogico di BF
// ----------------------------------------------------

const int tempo=50;
const int soglia=30;
int valore=0;

// int led[]= {2,3,4,5,6,7,8,9};  // sequenza diretta
int led[]= {9,8,7,6,5,4,3,2};     // sequenza invertita

void setup()
{
  Serial.begin(9600);
  intestazione();
  pinMode (BF, INPUT);
  for (int i=0; i<=7; i++)  { pinMode (led[i], OUTPUT); }
  provaLed(); // si può escludere
}

void intestazione()
{ Serial.println(" -------------------------------------------------------- ");
  Serial.println(" - Autore: Tecnatron - ing. Achille De Santis    - ");
  Serial.println(" - Sketch: VU meter - 8 canali                           - ");
  Serial.println(" - Versione: V4.1  12-01-2020                           - ");
  Serial.println(" - Comandi: Ingresso analogico su canale A0   - ");
  Serial.println(" -                                                                        - ");
  Serial.println(" -------------------------------------------------------- ");
}
void provaLed()     { for (int i=0; i<=7; i++) { digitalWrite(led[i],1); delay(tempo); digitalWrite(led[i],0);}; }
void spegni()       { for (int i=0; i<=7; i++)  digitalWrite(led[i],0); }
void accendi(int p) { digitalWrite(led[p], 1); }

void loop()
{
  spegni();
  valore = analogRead(BF);
  for(int i=1; i<=8; i++)  {     if (valore>soglia*i)  accendi(i-1);  } 
}
// --------------------------- Fine programma -------------------------------------------------


Simulazione:

VU meter V4.0 
VU meter V4.1

Argomenti correlati:


Arduino N° 50 - Modulo di prova per 6 uscite digitali

Nessun commento:

Posta un commento