Le schema :

Les leds sont montées dans mon diffuseur en 3 rangées en série de 7 leds en parallèle, avec une limitation de courant par une résistance de 2,2 Ohms/1W et les rôle de l'ATTiny85 est de leur donner un signal en PWM (modulation de largeur d'impulsion) dont la valeur efficace ne dépasse pas 3,5 volt ( dans le programme on limite la valeur à 220 sur 255)! Le circuit du µcontroller inclus un régulateur à 5v qui est une tension un peu élevée pour cette configuration de leds, donc on ne va pas se gêner pour utiliser les avantages de la PWM de 0 (éclairage minimum) à 220 (éclairage maximum). L'amplification en courant est faite par un MOS-FET de puissance en TO220 le transistor IRZL44N ! Son 'gate' est tiré à la masse par une résistance de 10K (R3) et piloté à travers une autre de 1K(R2). une led et sa limitation (R4) permettent de visualiser le fonctionnement et de protéger le transistor en abaissant l'impédance d'entrée et en absorbant au pire des cas les courants inverses.
Deux boutons poussoirs vont servir de commande en mettant au potentiel haut les entrées logiques, tirées à la masse par les résistance de pull down R5 et R6. L'alimentation n'est pas critique entre 6 et 12 volt et est appliquée directement sur l'ATTiny85 sur lequel est intégré un régulateur 5v de puissance 750mA !
Et tout ça pour 1,50$ ...
La forme de clé USB permet la programmation direct sur le PC ...
Le Circuit Imprimé :

Tout petit le circuit, mais il supporte tout les composants: Les CMS côté soudure et les traversants de l'autre côté ! Attention: j'ai monté les deux boutons poussoirs sur la même face que les CMS afin qu'ils viennent juste sous la barre de commande du boîtier ...La fixation par 3 vis parker tombe sur les bossages prévus à cet effet .
Le Programme : (ou Sketch)
/* Programme de lampe à LED avec réglage de l'intensité lumineuse.
* Test de ATTiny085 avec sortie PWM et entrées Boutons poussoir.
* Par B.LECLERC/FEELGOOD
*/
const int UpButton = 1; // Déclaration d' Entrees
const int DwButton = 2;
int led = 0; // Déclaration de Sorties
int Val = 120; // variables
void setup()
{
pinMode(led, OUTPUT); // Direction des pinuches
pinMode(UpButton, INPUT);
pinMode(DwButton, INPUT);
}
void loop(){
Debut:
analogWrite(led, Val); // Ecriture des valeurs aléatoires sur les sorties leds, pendant un certain temps !
if (digitalRead(UpButton)==HIGH){ // Monte de 0 à 80% !
Val = Val + 5;
if (Val > 220)(Val = 220); // Trop Grand --> Valeur maxi !
delay (200);
}
if (digitalRead(DwButton)==HIGH){ // Descend de 200 à 0
Val = Val - 5;
if (Val < 1)(Val = 0); // Trop Petit --> Valeur 0 !
delay (200);
}
if ((digitalRead(UpButton)==HIGH) & (digitalRead(DwButton)==HIGH)){ // Arrêt !
analogWrite(led, 0);
goto arret;
}
goto Debut;
arret:
delay (4000);
if ((digitalRead(UpButton)==HIGH) or (digitalRead(DwButton)==HIGH)){
goto Debut;
delay (200);
}
goto arret;
}
Tout petit aussi le sketch ! Après les classiques déclaration des entrées/sorties, on vient donner une valeur moyenne d'éclairement à 120/255 ème . Puis on entre dans la boucle qui scrute l'état logique des boutons, vient incrémenter ou décrémenter par pas de 5 la valeur précédente dans les limites de 0 à 220. Si l'on constate que les 2 poussoirs sont appuyés simultanément on saute sur une boucle de parking ad vitam aeternam (sauf si l'on sollicite de nouveau un des deux) .
La programmation se fait avec l' IDE d'Arduino, après avoir téléchargé et installé le bootloader. Tout est résumé, et très bien sur le site Digispark . Et en complément, pour les personnes qui auraient des difficultés de téléversement, je joints un document, qui rappelle au pas à pas, la routine à suivre pour 'rentrer' dans cette board un peu spéciale qu'est le ATtiny85 avec l'IDE Arduino ... Ce document synthétise ce que l'on trouve sur le site Digispark et mon expérience personnelle menée pour ce projet .
Attiny85 (352.38 Ko)
Plus facile et moins 'lourde' pour le PC, la programmation de l'ATTiny85 par un Arduino Nano ou Uno : Le lien est ICI
Voilà pour l'électronique, nous allons extruder du plastique maintenant !