5 de nov. 2014

ENCESA ANALÒGICA D'UN LED AMB POTENCIÒMETRE I POLSADOR

Avui, al meu company David i jo se'ns ha acudit l'idea d'unir els dos programes que hem fet a classe per aprendre sobre els senyals analògics en un sol, al pensar durant una estona se'ns ha acudit l'idea de que podriem utilitzar un polsador per tal de que quan aquest estigués premut fés un programa i quan no ho estigués un altre. Els dos prgrames que hem combinat han sigut el de l'encesa gradual d'un LED amb el potenciòmetre i fer que un LED minvés auitomàticament la seva intensitat de valor mínim a màxim fent una petita aturada en cada extrem. Hem grabat un vídeo i hem fet algunes fotos de com ens ha quedat:



Aquí us deixem les fotos del muntatge

I finalment aquí sota us deixem el que és el codi del programa en si
int led=10;     // pin PWM de connexió del LED
int sensor=A0;  // pin analògic d'entrada
int pulsador=9; // pin al que està connectat el pulsador
int SA=0;
int espera=200;
int fade=1;

int entrada=0;  // variable per desar la lectura del sensor
int sortida=0;  // variable per desar el valor de l'actuador

int temps=2;


void setup()    // no cal declarar cap pin analògic ni PWM
{  
}

void loop()
{
  if (digitalRead(pulsador)==HIGH) // si el senyal al pulsador és alt...
  {
     for (SA=0; SA<255; SA=SA+fade)  // Cambiem el valor de SA per que pugi el valor del fade repetidament fins arribar a ser 255
  {
    analogWrite(led,SA);  // treu pel pin la tenisó SA que correspón
    delay(temps);         // durant el temps especificat
  }
  delay(espera);          // manté el LED encés amb 255 durant el temps especificat
  SA=255;
 
  for (SA=255; SA>0; SA=SA-fade)  // Cambiem el valor de SA per que baixi el valor del fade repetidament fins arribar a ser 0
  {
    analogWrite(led,SA);
    delay(temps);
  }
  delay(espera);
  SA=0;
  }
  else                      // si el senyal del pulsador no és alt ...
  {
    entrada=analogRead(sensor); // assigna a la variable el valor de la lectura del sensor
    sortida=map(entrada,0,1023,0,255);  // assigna un valor de sortida proporcional al d'entrada 
    analogWrite(led,sortida);  // treu pel pin la tensió resultant del map
    delay(temps);  // sempre cal especificar un temps per tornar a començar el loop
  }
}

Cap comentari:

Publica un comentari a l'entrada