Sylvain Mahé Artisan mécatronique Retour à l'accueil Profil Âge : 36 ans
Situation familiale : Union libre
Nationalité : Française
Permis : B
"Autodidacte & créatif, autonomie & travail en équipe, savoir-faire & savoir-être" Contact ✕ Ville : Nantes
✆ Téléphone : 06.45.49.96.98
✉ E-mail : contact@sylvainmahe.site
✎ Site web : sylvainmahe.site
Centres d'intérêts ✓ Philosophie des sciences.
✓ Écologie & biodiversité.
✓ Artisanat & partage d'inventions.
✓ Lecture & écriture d'ouvrages.
✓ Sport : cyclisme & natation.
Écriture de la page : Sylvain Mahé
Quelques outils avec la classe Tool La classe Tool propose quelques outils et fonctions génériques qui m'ont été utiles dans certains projets : - digitToByte : cette fonction permet de convertir un chiffre (de 0 à 9) en octet compatible avec la classe SpiMax7219, c'est-à-dire dans un format qui permet l'allumage des bonnes diodes électroluminescentes pour représenter le chiffre sur les affichages numériques (l'afficheur à digits et le mini afficheur à digits disponibles dans la section "Fabrications et diverses réalisations" en page d'accueil). Exemple d'utilisation de la fonction digitToByte : #include <Tool.h> #include <SpiMax7219.h> int main() { SpiMax7219 myDisplay = SpiMax7219 (5); myDisplay.draw (Tool::digitToByte (4, true), 1); return 0; } Ci-dessus la fonction statique digitToByte prend en 1er paramètre le chiffre à convertir en son équivalent compatible avec la classe SpiMax7219, le 2ème paramètre étant la possibilité d'inclure le point "." dans le formatage. "4." est le formatage obtenu dans l'exemple, ce chiffre et le point sont affichés sur un afficheur à digits à l'aide de la fonction draw de la classe SpiMax7219. Cette fonction trouve son intérêt dans des programmes fortement dynamiques, c'est-à-dire dans l'application de logiques variables dans la constitution des nombres et des textes afin de les combiner et les animer pour ensuite les afficher. - characterToByte : cette fonction est similaire à la fonction digitToByte, elle permet de convertir un caractère alphanumérique (de a à z et de 0 à 9, ainsi que le point) en octet compatible avec la classe SpiMax7219 et les afficheurs associés. Exemple d'utilisation de la fonction characterToByte : #include <Tool.h> #include <SpiMax7219.h> int main() { SpiMax7219 myDisplay = SpiMax7219 (5); myDisplay.draw (Tool::characterToByte ("a."), 1); return 0; } La fonction statique characterToByte prend en seul paramètre le caractère alphanumérique à convertir. Dans l'exemple, le caractère "a" est demandé avec le point "." dans le formatage, ce qui donne "a.", ensemble qui est affiché sur un afficheur à digits à l'aide de la fonction draw de la classe SpiMax7219. - scanTwi : cette fonction sert à connaître la première adresse occupée par un périphérique connecté au bus TWI. Ports des automates programmables concernés par le TWI : Automate programmable MODULABLE 20 :
- Port GPIO 19 (PC4) = SDA (serial data line)
- Port GPIO 20 (PC5) = SCL (serial clock line)

Automate programmable MODULABLE 32 :
- Port GPIO 17 (PC0) = SCL (serial clock line)
- Port GPIO 18 (PC1) = SDA (serial data line)
Exemple d'utilisation de la fonction scanTwi : #include <Tool.h> #include <SpiMax7219.h> int main() { SpiMax7219 myDisplay = SpiMax7219 (5); myDisplay.integer (Tool::scanTwi(), 1, 3, false); return 0; } Dans l'exemple la fonction statique scanTwi ne prend aucun paramètre, elle retourne l'adresse du premier périphérique trouvé sur le bus TWI. Cette adresse est affichée sur un afficheur à digits à l'aide de la fonction integer de la classe SpiMax7219. - mcuSram : cette fonction sert à connaître la quantité de SRAM (en octets) restante dans le microcontrôleur lors du fonctionnement de votre programme. Une valeur négative indique qu'il y a un dépassement de la mémoire (ce qui n'est pas souhaité car cela conduit au crash du programme en cours d'exécution). La quantité de mémoire SRAM disponible dépend du microcontrôleur utilisé : Automate programmable MODULABLE 20 :
- SRAM du microcontrôleur ATmega48P = 512 octets (0.5Kio)
- SRAM du microcontrôleur ATmega88P = 1024 octets (1Kio)
- SRAM du microcontrôleur ATmega168P = 1024 octets (1Kio)
- SRAM du microcontrôleur ATmega328P = 2048 octets (2Kio)

Automate programmable MODULABLE 32 :
- SRAM du microcontrôleur ATmega164P = 1024 octets (1Kio)
- SRAM du microcontrôleur ATmega324P = 2048 octets (2Kio)
- SRAM du microcontrôleur ATmega644P = 4096 octets (4Kio)
- SRAM du microcontrôleur ATmega1284P = 16384 octets (16Kio)
Exemple d'utilisation de la fonction mcuSram : #include <Tool.h> #include <SpiMax7219.h> int main() { SpiMax7219 myDisplay = SpiMax7219 (5); myDisplay.integer (Tool::mcuSram(), 1, 8, false); return 0; } Dans l'exemple la fonction statique mcuSram ne prennant aucun paramètre renvoie simplement le nombre d'octets restants dans la mémoire SRAM du microcontrôleur. Cette quantité est affichée sur un afficheur à digits à l'aide de la fonction integer de la classe SpiMax7219. - mcuSleep : cette fonction permet la mise en veille du microcontrôleur pour les applications à très faible consommation d'énergie.
- mcuWakeUp : cette fonction qui doit être exécutée à l'aide d'une interruption permet la sortie de veille du microcontrôleur.
Exemple d'utilisation des fonctions mcuSleep et mcuWakeUp : #include <Tool.h> #include <InterruptRead.h> void myFuction() { Tool::mcuWakeUp(); } int main() { InterruptRead myInterrupt = InterruptRead (3); myInterrupt.start (myFunction, true, false); Tool::mcuSleep(); while (true) { } return 0; } Dans l'exemple ci-dessus le microcontrôleur est placé en veille lors de l'appel à la fonction statique mcuSleep, puis est sorti de veille à l'aide de la fonction statique mcuWakeUp lorsque se produit une interruption de programme, soit dans ce cas un front montant sur le port GPIO numéro 3 de l'automate programmable. Références : Récapitulatif des fonctions de cette classe : static unsigned char digitToByte (const unsigned char DIGIT, const bool COMMA); static unsigned char characterToByte (const char *CHARACTER); static unsigned char scanTwi(); static signed int mcuSram(); static void mcuSleep(); static void mcuWakeUp();