PYBStick ESP32-C3 : SoftI2C plutôt que I2C
Posted: Tue 15 Nov 2022 16:01
Bonjour à tous,
En référence au post de l'ami framboise314, je reviens sur l'utilisation de l'I2C avec la carte PYBStick ESP32-C3. Les dernières versions compilés de Micropython (V1.18, V1.19) nous invitent à déclarer un port i2c logiciel plutôt de matériel. Pourquoi ? Je ne saurait dire précisément mais bon. Suivons le conseil donné.
Cela se fait par exemple de la manière suivante :
N'importe quelle paire d'entrée sorties peuvent faire l'affaire puisque le driver SoftI2C travaille directement sur les deux entrées/sorties, sans hardware spécifique. Néanmoins, il faut faire attention à la GPIO9, qui est relié au bouton d'activation du bootloader et sur laquelle le condensateur C8 permet d'éviter les rebonds. Pour des signaux rapides en sorties comme en entrée, C8 apparaît tel un court-circuit à la masse. Cela est très probablement la cause des déboires de Josette
Attention également à ne pas utiliser la GPIO8 qui elle est utilisée pour piloter la led RGB présente sur la carte, afin de ne pas avoir de fonctionnement erratique de cette led. J'ai fait l'économie d'une résistance de tirage sur cette sortie et il arrive parfois que, à la mise sous tension, la led s'allume généralement en blanc. Un peu de code pour initialiser en noir la led permet d'éviter l'aléatoire :
Enfin, le schéma de la carte est ici et je ne pense pas l'avoir encore fourni. C'est fait
En référence au post de l'ami framboise314, je reviens sur l'utilisation de l'I2C avec la carte PYBStick ESP32-C3. Les dernières versions compilés de Micropython (V1.18, V1.19) nous invitent à déclarer un port i2c logiciel plutôt de matériel. Pourquoi ? Je ne saurait dire précisément mais bon. Suivons le conseil donné.
Cela se fait par exemple de la manière suivante :
Code: Select all
from machine import Pin, SoftI2C
mon_i2c = SoftI2C(scl=Pin(6), sda=Pin(7), freq=10000)
Attention également à ne pas utiliser la GPIO8 qui elle est utilisée pour piloter la led RGB présente sur la carte, afin de ne pas avoir de fonctionnement erratique de cette led. J'ai fait l'économie d'une résistance de tirage sur cette sortie et il arrive parfois que, à la mise sous tension, la led s'allume généralement en blanc. Un peu de code pour initialiser en noir la led permet d'éviter l'aléatoire :
Code: Select all
from machine import Pin
from apa106 import APA106
rvb_led = Pin(8, Pin.OUT)
ap = APA106(rvb_led, 1)
ap[0] = (0, 0, 0) # toute noire
ap.write()