Étape 7: Se fanent LEDs avec AnalogWrite
Parfois nous voulons contrôler la luminosité d’une LED, dans ce cas, nous pouvons utiliser une commande appelée analogWrite(). analogWrite fonctionne par allumer/éteindre une LED très vite, tellement vite que nos yeux ne perçoivent pas le scintillement. Si une LED passe la moitié de son temps libre et la moitié de son temps sur, alors il apparaîtra deux fois moins lumineux. Cette technique est appelée modulation de largeur d’impulsions (PWM), il sert encore et encore en électronique car il permet de commander un appareil d’une manière "analogique" à l’aide d’une broche numérique. Pas toutes les broches numériques sur l’Arduino peuvent faire PWM, si vous regardez attentivement votre Arduino, vous verrez que certains des broches ont un « ~ » à côté d’eux (broches 3, 5, 6, 9, 10, 11), Voici les broches PWM activé.Fil un de votre LED pour un PWM compatible broche, j’ai utilisé la broche 9. Essayez d’exécuter l’esquisse clin d’avant, mais utilisez analogWrite au lieu de digitalWrite pour allumer la LED (voir schéma ci-dessous). analogWrite() prend deux arguments : le NIP et le niveau de luminosité (entre 0 et 255).
Essayez de changer la luminosité dans les commandes analogWrite pour voir comment il affecte la luminosité de votre LED.
Ensuite, nous allons écrire le code pour que la luminosité rampes en douceur de complètement éteint à pleine intensité. Nous pourrions copier le même morceau de code :
analogWrite (ledPin, luminosité) ;
retard (5); //short retard
luminosité = luminosité + 1;
Maintes et maintes (255 fois), augmenter la luminosité par un chaque fois. Voici ce que cela ressemblerait :
Ou nous pouvons utiliser une boucle for à nouveau pour rendre le code beaucoup plus concis. Le schéma suivant, j’ai deux boucles, les rampes premières la LED up OFF (0) à la pleine brightness(255) :
pour (luminosité int = 0; luminosité < 256 ; luminosité ++) {}
analogWrite(ledPin,brightness) ;
Delay(5) ;
}Le second pour rampes de boucle vers le bas à sa luminosité optimale sur off :
pour (int luminosité = 255 ; luminosité > = 0; luminosité--) {}
analogWrite(ledPin,brightness) ;
Delay(5) ;
}
(le delay(5) est utilisé pour ralentir la décoloration, il prend 5 * 256 = 1280ms = 1.28seconds)
Dans la première ligne, nous utilisons « luminosité »--pour dire la boucle for pour diminuer la valeur de luminosité de 1 chaque fois que la boucle se répète. Notez également comment la boucle se déroulera jusque de la luminosité > = 0, à l’aide de > = au lieu de > nous incluons le chiffre 0 dans la gamme.
Et voici à quoi elle devrait ressembler (cette simulation n’est pas aussi bonne, mais vous voyez l’idée). Essayez de modifier les délais pour voir comment il influe sur la vitesse des rampes.