Outils pour utilisateurs

Outils du site


issue176:micro

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
issue176:micro [2022/01/07 09:15] auntieeissue176:micro [2022/01/07 16:25] (Version actuelle) andre_domenech
Ligne 54: Ligne 54:
 Now we will open the icon image file and do three readline calls. This gets the Magic Number, the Creator comment, and the dimension of the image from the image file header (we’ll talk about these in a moment), and finally the data of the image itself (middle right).** Now we will open the icon image file and do three readline calls. This gets the Magic Number, the Creator comment, and the dimension of the image from the image file header (we’ll talk about these in a moment), and finally the data of the image itself (middle right).**
  
-Votre image devrait maintenant ressembler à ceci.+Votre image devrait maintenant ressembler à ceci :
  
 C'est tout pour cette partie. Ce n'était pas trop pénible - détaillé, mais pas douloureux. Maintenant, nous voulons télécharger cette image sur notre microcontrôleur. Encore une fois, j'utilise mpfshell pour le faire (allez voir ma note vers le bas de l'article sur l'utilisation de mpfshell). Ensuite, nous allons regarder notre code pour l'afficher sur l'écran OLED. Nous nommerons notre fichier graphx32.py, car nous l'utilisons sur un microcontrôleur générique ESP-32. C'est tout pour cette partie. Ce n'était pas trop pénible - détaillé, mais pas douloureux. Maintenant, nous voulons télécharger cette image sur notre microcontrôleur. Encore une fois, j'utilise mpfshell pour le faire (allez voir ma note vers le bas de l'article sur l'utilisation de mpfshell). Ensuite, nous allons regarder notre code pour l'afficher sur l'écran OLED. Nous nommerons notre fichier graphx32.py, car nous l'utilisons sur un microcontrôleur générique ESP-32.
Ligne 75: Ligne 75:
 P4 est l'identifiant qui assure que le fichier est bien un fichier PBM. (Il existe un autre format PBM qui utilise P1, qui indique un fichier « Plain PBM »). La deuxième ligne, comme vous pouvez le voir, est un commentaire qui indique que le fichier a été créé par GIMP. Enfin, vous pouvez voir que les dimensions de l'image sont, comme nous nous y attendions, de 50 x 50 pixels. Cette information sera importante si vous ne vous souvenez pas de la taille du fichier image. P4 est l'identifiant qui assure que le fichier est bien un fichier PBM. (Il existe un autre format PBM qui utilise P1, qui indique un fichier « Plain PBM »). La deuxième ligne, comme vous pouvez le voir, est un commentaire qui indique que le fichier a été créé par GIMP. Enfin, vous pouvez voir que les dimensions de l'image sont, comme nous nous y attendions, de 50 x 50 pixels. Cette information sera importante si vous ne vous souvenez pas de la taille du fichier image.
  
-Lorsque vous exécutez le programme, votre affichage devrait ressembler à ceci.+Lorsque vous exécutez le programme, votre affichage devrait ressembler à ceci :
  
 L'utilisation de cette méthode est (à mon avis) bien meilleure que la conversion des images en bytearray. L'utilisation de la méthode du fichier PBM nécessite quelques lignes de code supplémentaires, mais je la trouve beaucoup plus facile à utiliser. L'utilisation de cette méthode est (à mon avis) bien meilleure que la conversion des images en bytearray. L'utilisation de la méthode du fichier PBM nécessite quelques lignes de code supplémentaires, mais je la trouve beaucoup plus facile à utiliser.
Ligne 94: Ligne 94:
 Lorsque vous exécutez le programme, il ne devrait prendre qu'un instant pour se terminer et vous aurez une belle image de 32 x 32 au format PBM. Lorsque vous exécutez le programme, il ne devrait prendre qu'un instant pour se terminer et vous aurez une belle image de 32 x 32 au format PBM.
  
-Il y a un petit problème avec le fichier que nous avons créé en utilisant la bibliothèque PIL. Il ne semble pas y avoir de moyen de définir le commentaire du créateur dans l'en-tête du fichier image. Par conséquent, nous devons apporter une petite modification à notre fichier micropython pour gérer l'absence de commentaire. Nous devons changer le code « with open » par le suivant (en bas à gauche)...+Il y a un petit problème avec le fichier que nous avons créé en utilisant la bibliothèque PIL. Il ne semble pas y avoir de moyen de définir le commentaire du créateur dans l'en-tête du fichier image. Par conséquent, nous devons apporter une petite modification à notre fichier micropython pour gérer l'absence de commentaire. Nous devons changer le code « with open » par le suivant (en bas à gauche).
  
  
Ligne 111: Ligne 111:
 Puisque le commentaire d'en-tête (selon les spécifications que j'ai pu trouver) commence toujours par un #, nous pouvons simplement vérifier la valeur de la deuxième ligne lue pour voir si elle commence par le symbole dièse. Si c'est le cas, nous lisons simplement la ligne suivante. Si ce n'est pas le cas, il ne faut pas essayer de lire une autre ligne. Il n'y aura que deux lignes dans l'en-tête, pas trois. Si nous essayons d'en lire trois et que le commentaire n'existe pas, la partie données du fichier sera courte et donc corrompue. En utilisant le schéma ci-dessus, les deux cas seront traités correctement. Puisque le commentaire d'en-tête (selon les spécifications que j'ai pu trouver) commence toujours par un #, nous pouvons simplement vérifier la valeur de la deuxième ligne lue pour voir si elle commence par le symbole dièse. Si c'est le cas, nous lisons simplement la ligne suivante. Si ce n'est pas le cas, il ne faut pas essayer de lire une autre ligne. Il n'y aura que deux lignes dans l'en-tête, pas trois. Si nous essayons d'en lire trois et que le commentaire n'existe pas, la partie données du fichier sera courte et donc corrompue. En utilisant le schéma ci-dessus, les deux cas seront traités correctement.
  
-Puisque la nouvelle image ne fait que 32x32, assurez-vous de changer la ligne qui charge les données dans framebuffer en...+Puisque la nouvelle image ne fait que 32x32, assurez-vous de changer la ligne qui charge les données dans framebuffer en :
  
 fbuf = framebuf.FrameBuffer(data, 32, 32, framebuf.MONO_HLSB) fbuf = framebuf.FrameBuffer(data, 32, 32, framebuf.MONO_HLSB)
Ligne 119: Ligne 119:
 J'ai placé tout le code de l'article de ce mois-ci, ainsi que quelques exemples d'images, sur mon dépôt github à https://github.com/gregwa1953/FCM176_MicroThisMicroThat. J'ai placé tout le code de l'article de ce mois-ci, ainsi que quelques exemples d'images, sur mon dépôt github à https://github.com/gregwa1953/FCM176_MicroThisMicroThat.
  
-Pour faire fonctionner le code ci-dessus sur le RPi Pico, j'ai dû faire très peu de changements vous pouvez trouver le fichier de code dans le dépôt zippé sous le nom de graphxPico.py.+Pour faire fonctionner le code ci-dessus sur le RPi Pico, j'ai dû faire très peu de changementsvous pouvez trouver le fichier de code dans le dépôt zippé sous le nom de graphxPico.py.
  
 J'espère que vous, votre famille et vos amis passerez de bonnes fêtes de fin d'année. J'espère que vous, votre famille et vos amis passerez de bonnes fêtes de fin d'année.
Ligne 142: Ligne 142:
 NOTE SUR L'UTILISATION DE MPFSHELL NOTE SUR L'UTILISATION DE MPFSHELL
  
-Lorsque je développais le projet de ce mois-ci, j'utlisais la version 0.9.2 de mpfshell sous Python 3.7.4. Ceci est également vrai pour mon environnement lorsque j'ai écrit l'article sur l'utilisation de mpfshell dans le FCM n° 174. Cependant, ce mois-ci, j'ai essayé d'utiliser mpfshell sous Python 3.8.11 et il ne voulait pas se connecter au microcontrôleur ESP32. Comme j'étais pressé de rédiger l'article, j'ai continué à utiliser Python 3.7.4 sans problème. Lorsque j'ai transmis une première version de l'article et du code source à mon ami Halvard en Norvège, il a rencontré des problèmes avec mpfshell en utilisant une version plus récente de Python. J'ai fait quelques recherches sur le dépôt github de mpfshell et j'ai trouvé que d'autres personnes avaient des problèmes sur diverses versions de Linux en utilisant la version 0.9.2 sous Python 3.8 et plus, mais mpfshell 0.9.1 semblait bien fonctionner pour eux. J'ai passé quelques heures à faire des tests dans des environnements virtuels en utilisant mpfshell 0.9.1 sous les versions 3.7.4, 3.8.10, 3.9.5 et 3.10.0 de Python (grâce à pyenv), et tout a bien fonctionné. J'ai pu me connecter non seulement à l'ESP8266 (le seul microcontrôleur officiellement supporté) mais aussi à l'ESP32 et au RPi Pico. Donc, si vous avez des problèmes pour vous connecter à votre microcontrôleur en utilisant mpfshell, vous pouvez utiliser pip (ou pip3) pour désinstaller mpfshell puis installer mpfshell version 0.9.1. Cela fonctionne tout à fait bien. La seule chose à changer est la commande open pour se connecter au microcontrôleur via la liaison série. +Lorsque j'ai  développé le projet de ce mois-ci, j'ai utilisé la version 0.9.2 de mpfshell sous Python 3.7.4. Ceci est également vrai pour mon environnement lorsque j'ai écrit l'article sur l'utilisation de mpfshell dans le FCM n° 174. Cependant, ce mois-ci, j'ai essayé d'utiliser mpfshell sous Python 3.8.11 et il ne voulait pas se connecter au microcontrôleur ESP32. Comme j'étais pressé de rédiger l'article, j'ai continué à utiliser Python 3.7.4 sans problème. Lorsque j'ai transmis une première version de l'article et du code source à mon ami Halvard en Norvège, il a rencontré des problèmes avec mpfshell en utilisant une version plus récente de Python. J'ai fait quelques recherches sur le dépôt github de mpfshell et j'ai trouvé que d'autres personnes avaient des problèmes sur diverses versions de Linux en utilisant la version 0.9.2 sous Python 3.8 et plus, mais mpfshell 0.9.1 semblait bien fonctionner pour eux. J'ai passé quelques heures à faire des tests dans des environnements virtuels en utilisant mpfshell 0.9.1 sous les versions 3.7.4, 3.8.10, 3.9.5 et 3.10.0 de Python (grâce à pyenv), et tout a bien fonctionné. J'ai pu me connecter non seulement à l'ESP8266 (le seul microcontrôleur officiellement supporté) mais aussi à l'ESP32 et au RPi Pico. Donc, si vous avez des problèmes pour vous connecter à votre microcontrôleur en utilisant mpfshell, vous pouvez utiliser pip (ou pip3) pour désinstaller mpfshell puis installer mpfshell version 0.9.1. Cela fonctionne tout à fait bien. La seule chose à changer est la commande open pour se connecter au microcontrôleur via la liaison série. 
  
 Au lieu d'utiliser « open /dev/ttyUSB0 » (ou n'importe quel port série que vous utiliseriez), utilisez « open ttyUSB0 » (ou votre port série approprié) pour vous connecter. Cela permet d'économiser quelques frappes au clavier, non ? L'ESP8266 et l'ESP32 se connectent tous deux sur ma machine sous /dev/ttyUSB0 et la RPi Pico se connecte sous /dev/ttyACM0. Au lieu d'utiliser « open /dev/ttyUSB0 » (ou n'importe quel port série que vous utiliseriez), utilisez « open ttyUSB0 » (ou votre port série approprié) pour vous connecter. Cela permet d'économiser quelques frappes au clavier, non ? L'ESP8266 et l'ESP32 se connectent tous deux sur ma machine sous /dev/ttyUSB0 et la RPi Pico se connecte sous /dev/ttyACM0.
issue176/micro.1641543300.txt.gz · Dernière modification : 2022/01/07 09:15 de auntiee