onewire — protocole de bus 1-Wire¶
Le module onewire implémente le protocole maître du bus 1-Wire utilisé par des périphériques tels que le capteur de température DS18x20. Il utilise une unique machine.Pin configurée en drain ouvert pour communiquer avec un ou plusieurs périphériques esclaves sur le bus partagé.
Exemple
from machine import Pin
from onewire import OneWire
ow = OneWire(Pin("P7"))
devices = ow.scan()
for rom in devices:
print(rom)
Classes¶
- class onewire.OneWire(pin: machine.Pin)¶
Construit un maître de bus 1-Wire sur la
machine.Pindonnée. La broche est automatiquement configurée en drain ouvert avec une résistance de tirage.Constantes de commande ROM :
- SEARCH_ROM: int¶
Commande de recherche ROM (
0xF0). Utilisée en interne parscan()pour découvrir les périphériques présents sur le bus.
- MATCH_ROM: int¶
Commande de correspondance ROM (
0x55). Utilisée en interne parselect_rom()pour adresser un périphérique spécifique à l’aide de son code ROM 64 bits.
- SKIP_ROM: int¶
Commande de saut ROM (
0xCC). Adresse simultanément tous les périphériques du bus, en ignorant la correspondance ROM.
Réinitialisation du bus :
- reset(required: bool = False) bool¶
Émet une impulsion de réinitialisation sur le bus. Renvoie
Truesi au moins un périphérique esclave a répondu par une impulsion de présence, sinonFalse. Si required vautTrueet qu’aucun périphérique ne répond, lèveOneWireError.
E/S par bit/octet :
Adressage des périphériques :
- select_rom(rom: bytes | bytearray) None¶
Émet une réinitialisation suivie d’une commande MATCH ROM pour adresser le périphérique dont le code ROM 64 bits se trouve dans rom (un tampon de 8 octets).
- scan() list[bytearray]¶
Parcourt le bus et renvoie une liste de codes ROM de 8 octets (un
bytearraypar périphérique détecté). Renvoie une liste vide si aucun périphérique n’est présent.
Contrôle de redondance cyclique :
Exceptions¶
- exception onewire.OneWireError¶
Levée lorsqu’une opération 1-Wire échoue. Actuellement levée par
OneWire.reset()lorsque required vautTrueet qu’aucun esclave ne répond à l’impulsion de réinitialisation.