Je voudrais proposer la création d’une nouvelle catégorie pour le forum, qui permettrait de regrouper des « bibliothèques » dédiées au PIC.
Il existe un site, LibStock de chez Mikroe, qui recense de nombreux exemples de programmes, c’est utile, mais pour diverses raisons ces exemples ne sont parfois pas très pratiques/utiles.
L’idée générale :
Mon idée n’est pas de refaire la même chose que LibStock, mais plutôt de proposer des petits bouts de code permettant de réaliser une fonction précise.
J’imagine que la très grande majorité des membres de ce forum ont déjà écrit quelques programmes pour des PIC, et par conséquent, ils pourraient potentiellement aller extraire les quelques lignes de « code intéressant » de leurs programmes pour les proposer.
A quoi cela pourrait-il ressembler :
Il y a 2 façons possibles d’envisager à quoi ces « bouts de code » pourraient ressembler, sachant que l’un n’empêche pas l’autre et que l’on peut très bien faire les 2.
Première approche : le mini programme
Il s’agit dans ce cas de proposer un mini programme dépouillé qui soit fonctionnel en l’état, c’est-à-dire que l’on pourrait le charger tel quel sur le PIC utilisé pour le voir fonctionner.
Ce mini programme devra contenir le minimum possible afin de réaliser la fonctionnalité proposée.
Exemple : on souhaite proposer une solution pour générer un signal de commande pour un servo de modélisme, c’est-à-dire une impulsion entre 0.5 et 2.5ms, avec période de 20ms.
Il existe de nombreux exemples de programmes pour piloter des servos, mais on va en général se retrouver avec un programme très complexe, gérant un afficheur, des BP et/ou un encodeur incrémental pour les menus, la sauvegarde en EEPROM, ….etc., sans parler du code en lui-même avec parfois des noms à coucher dehors pour les variables, les constantes et les procédures.
Dans ma vision des choses, le code serait réduit à sa plus simple expression, et, pour l’exemple, si on propose un code qui fonctionne avec des DELAY, on aurait juste la config minimale pour le PIC, une boucle sans fin (boucle principale), à l’intérieur de laquelle se trouve une boucle For … Next qui contient un petit DELAY de quelques µs. Le changement de la durée d’impulsion se ferait alors en modifiant la valeur numérique (pas de variable) du For … Next
Bien entendu, le programme doit comporter une grande quantité de commentaires
Certes, l’exemple que je donne n’est pas très intéressant, mais il est aussi possible, sur le même principe, de proposer une solution mettant en œuvre le module PWM, ou bien encore mettant en œuvre le Timer0 en 8 bits, ou le Timer1, ou bien encore le Timer2, sachant que ces 3 Timer ne fonctionnent pas de la même manière
Deuxième approche : le module
Dans ce cas, il s’agit de proposer un module, sous forme de fichier indépendant, qui pourrait ainsi être incorporé dans un projet et être utilisé comme une bibliothèque.
Exemple : on propose un module destiné à générer des bips sur un buzzer actif.
Depuis le programme principal, que chacun fera à sa sauce, on pourra « appeler » ce module en lui indiquant le port sur lequel se trouve le buzzer, et le nombre de bips à générer.
Le module fait alors son office, par exemple il active la sortie 200ms, la désactive 400ms, répète l’opération xx fois, puis rend la main.
Chaque module serait proposé dans le langage utilisé par son auteur (Basic, Pascal, C), et comme la plupart des compilateurs permettent de générer de l’ASM, le module pourrait sans effort supplémentaire être également proposé dans ce langage, ce qui permet potentiellement de l’intégrer tel quel dans n’importe quel projet, quel que soit le langage utilisé
Note : en principe l’utilisation du terme ASM dans un post doit déclencher une alerte sonore et lumineuse au domicile de Temps-x
L’intérêt pour les participants :
Le premier intérêt est bien entendu de permettre à tous de trouver les quelques lignes de code qui leur manque pour pouvoir terminer un projet ... ou donner envie d'en commencer un !
Un autre intérêt peut résider dans le plaisir que l’on prend à partager ses connaissances, surtout pour des débutants qui souvent regarde, avec un peu d’envie, des personnes plus expérimentées proposer des programmes très complexes et très sophistiqués (n’est-ce pas Paulfjujo ?
Dans ce cas, même les moins expérimentés serait en capacité d’apporter leur pierre à l’édifice, sans avoir peur d’être « ridicule »
Enfin, le dernier intérêt que j’y vois concerne les personnes peu expérimentées :
Pour progresser, en l’occurrence avec les PIC, il y a 3 choses à faire, pratiquer, pratiquer, et pratiquer, ou pour le dire autrement, programmer, pisser du code, et pisser de la ligne !
Pour un débutant, pratiquer veut dire s’embarquer dans la réalisation d’un projet, parce que pisser de la ligne pour pisser de la ligne, ça n’est pas très attrayant et motivant, quant à s’attaquer à un projet ayant une réelle application, ça veut dire réfléchir et travailler sur toute l’électronique, en s’embarquant pour des semaines ou des mois, ce qui n’est pas toujours motivant.
Avec la création de mini programmes ou de modules, ça donnerait un but utile à atteindre, sans forcément s’embarquer dans quelque chose de long et de fastidieux.
Certains de ces « mini projets » pourraient être bouclés en quelques heures, et côté matériel, de nombreux mini projets n’auraient besoin que d’un PIC, d’un PICkit et d’une led !
Quelques exemples :
Ci-dessous, quelques exemples de mini programmes et de modules qui pourraient être proposés.
Il ne s’agit pas des meilleurs exemples, il s’agit juste de présenter quelques possibilités afin d’illustrer mes propos, et afin que chacun puisse s’en faire facilement une représentation.
* Interne au PIC
- Générer un signal PWM sur un 16F18346, avec configuration commentée des divers registres nécessaires
- Numériser une tension avec l’ADC d’un 18F45K22, avec configuration commentée des divers registres nécessaires
- Utiliser un comparateur avec une entrée externe et la référence de tension interne
- …etc.
* Externe au PIC
- Configurer les principaux registres d’un ADS1115 (ADC 16 bits I2C), et récupérer la valeur de la mesure
- Piloter un module TM1637 (afficheur led 7 segments, avec 4 ou 6 digits)
- Lire et écrire dans une EEPROM 24C512
- Lire et écrire dans une mémoire RAM 23A256
- Initialiser un afficheur Oled SSD1306 et allumage d’un pixel spécifique
- …etc.
Voilà !
J'ai quelques idées sur la façon de gérer et de présenter ces mini programmes et ces modules, mais à ce stade se serait prématuré d'en parler.
Bien entendu, cette vision des choses n’est qu’un point de départ, et je ne prétends nullement que tout doit être fait comme je l’ai décrit.
Après, est-ce utopique de présenter une telle idée sachant que l’essentiel de l’activité du forum se fait grâce à 5 ou 6 membres, peut-être, mais on peut aussi se dire que ces « mini projets » ayant une véritable utilité pourraient motiver des personnes qui n’osent pas se lancer dans des choses plus complexes.



