Modifier l'intensité lumineuse d'une LED

De Wiki L.A.B
Aller à : navigation, rechercher
Matériel
  • Arduino Uno
  • Plaque d'essai (breadbord)
  • LED
  • Bouton Poussoir
  • Résistance 1/4W 270Ω ( 220Ω ou 330Ω peuvent également convenir)
  • Straps ou fils de liaison
Montage

Montage LED PWM Montage LED PWM

Programme


Voici le programme qu'il faut éditer dans l'IDE Arduino, puis compiler et charger dans la carte Arduino

/*
  Ce programme allume progressivement une LED branchée sur la broche 3
*/

int led = 3; // broche de la LED
int i = 0; // variable de la boucle for

void setup() // setup est déroulé une seule fois après la remise à zéro
{                
  pinMode(led, OUTPUT); // la broche led (3) est initialisée en sortie    
}
void loop() // loop est déroulé indéfiniment
{
for (i=0; i<255;i++) // i varie de 1 à 255
  { 
  analogWrite(led,i); // génère une impulsion sur la broche de largeur i => la luminosité augmente
  delay(20); // pause de 20 ms entre chaque pas
  }
}
Montage avec BP

Montage LED PWM Montage LED PWM

Programme avec BP


Voici le programme qu'il faut éditer dans l'IDE Arduino, puis compiler et charger dans la carte Arduino

/*
  Ce programme allume puis éteint progressivement une LED branchée sur la broche 3
  lorsque le bouton poussoir est appuyé
*/
int BP = 2; // broche du bouton poussoir
int led = 3; // broche de la LED
int i = 0; // variable de la boucle for

void setup() // setup est déroulé une seule fois après la remise à zéro
{                
  pinMode(led, OUTPUT); // la broche led (3) est configuéeée en sortie    
  pinMode(BP, INPUT_PULLUP); // la broche BP (3) est configuréée en entrée avec résistance de tirage au +    
}
void loop() // loop est déroulé indéfiniment
{
if (!digitalRead(BP)) // test si BP appuyé
  {
  for (;i<255;i++) // i varie de 1 à 255
    {
    analogWrite(led,i); // génère une impulsion sur la broche de largeur i => la luminosité augmente
    delay(10); // pause de 10 ms entre chaque pas
    }
  for (;i>0;i--) // i varie de 1 à 255
    {
    analogWrite(led,i); // génère une impulsion sur la broche de largeur i => la luminosité augmente
    delay(10); // pause de 10 ms entre chaque pas
    }  
  }
}

Le programme suivant a strictement la même fonctionnalité en utilisant la boucle while

/*
  Ce programme allume puis éteint progressivement une LED branchée sur la broche 3
  lorsque le bouton poussoir est appuyé en utilisant la boucle While
*/
int BP = 2; // broche du bouton poussoir
int led = 3; // broche de la LED
int i = 0; // variable de la boucle for

void setup() // setup est déroulé une seule fois après la remise à zéro
{                
  pinMode(led, OUTPUT); // la broche led (3) est configuéeée en sortie    
  pinMode(BP, INPUT_PULLUP); // la broche BP (3) est configuréée en entrée avec résistance de tirage au +    
}
void loop() // loop est déroulé indéfiniment
{
while (!digitalRead(BP)) // exécute la boucle tant que BP est appuyé
  {
  for (;i<255;i++) // i varie de 1 à 255
    {
    analogWrite(led,i); // génère une impulsion sur la broche de largeur i => la luminosité augmente
    delay(10); // pause de 10 ms entre chaque pas
    }
  for (;i>0;i--) // i varie de 1 à 255
    {
    analogWrite(led,i); // génère une impulsion sur la broche de largeur i => la luminosité augmente
    delay(10); // pause de 10 ms entre chaque pas
    }  
  }
}