Coté tests, pas de souci avec le pilotage de la led RGB en numérique, c’est du classique.
Une fois le code porté sous forme de librairie sous l’environnement Arduino, pas de souci non plus avec le coté USB: l’USBASP est bien reconnu comme un périphérique HID, et le logiciel de pilotage Blink(1) le reconnait aussi.
Au passage, V-USB sous arduino, c’est galère. pour bien faire, il faut une librairie par type d’usage, c’est pas fait pour.
L’aspect PWM, c’est plus délicat.
On passe d’un Attiny85 avec du PWM matériel à un Atmega8, sans pouvoir choisir les pattes qui pilotent la Led.
Pas le choix, il faudra faire du PWM logiciel.
J’ai donc commencé par un bout de code simple, pour faire « respirer » les leds par défaut de l’USBASP.
On valide ainsi le fonctionnement du Timer.
(Note to myself : ajouter le code correspondant dans un mini Tuto USBASP: PWM Soft et Timers Atmega8.)
Pour gérer 3 canaux PWM en logiciel par contre, il faut réfléchir un peu plus, et mes premiers essais ne sont pas concluants. Pour rester le plus léger possible, je ne veux pas utiliser de librairie générique, et je ne veux pas non plus utiliser d’interruption « lourde » qui consomme du CPU à tout va, et risque de perturber l’USB.
Du coup je fais une V1 en pilotant les couleurs en tout ou rien.
La clé reçoit les valeurs RGB sous forme de 3 octets, j’allume une couleur si sa valeur dépasse 126.
(Je poste le code volontiers s’il y a des demandes)
A noter que pour programmer et déboguer, un USBASP c’est pas tiptop.
Pour programmer, il faut débrancher de l’USB, débrancher la led, brancher le connecteur ICSP, placer le jumper J2, brancher le programmateur.
Et dans le sens inverse pour voir ce que ça donne.
Le gadget qui sauve dans ce cas, c’est un petit Hub USB avec des interrupteurs, qui permet de sélectionner ce qu’on veut alimenter/brancher sans fatiguer les prises USB.
Bref, ça fonctionne, ça clignote, mais ce n’est pas totalement satisfaisant. L’effet « transition en douceur » manque.
On laisse reposer un peu, on s’y remettra le lendemain 😉