Capteur d'humidité SHT21 (Sensirion)
Le capteur SHT21 de Sensirion permet de mesurer le taux d'humidité dans l'air ainsi que que la
température. Son adresse I2C par défaut est 0x40. Une simple tâche périodique permet de
l'interfacer: il suffit de lire les valeurs des registres 0xE3 et 0xE5, de faire une conversion expliquée
dans la doc du SHT21 et d'affecter les résultat sur deux genericSensors, ici le n° 1 et 2. Dans cet
exemple, on utilise le format brut pour envoyer les commandes avec writeline.
• Tâche 1 (périodique, 300ms)
◦
writeLine {S}80E3{R}81xx{A}xx{A}xx{N}{P}
◦
expect 40:{A}{A} 40:{A}($t:WORD)(BYTE)
◦
compute $1 = ((((t & 0xFFFC) * 21965) >>13) - 46850)/1000
◦
writeLine {S}80E5{R}81xx{A}xx{A}xx{N}{P}
◦
expect 40:{A}{A} 40:{A}($h:WORD)(BYTE)
◦
$2 = ((((h & 0xFFFC) * 15625) >>13) - 6000)/1000
Capteur distance LidarLight V3 (Garmin)
Le capteur LidarLight V3 de Garmin est un capteur de distance laser TOF qui permet de mesurer
des distances jusqu'40m. Son adresse I2C par défaut est 0x62. Pour obtenir une mesure, il faut
écrire 0x04 dans le registre 0x00, attendre que le bit 0 du registre 0x01 passe à zéro, puis lire la
distance, codée sur deux bytes dans le registre 0x8f et la mapper sur un genericSensor, ici le N°1.
Dans cet exemple, on utilise le format simplifié pour envoyer les commandes avec writeline. Notez
l'utilisation des variables $state et $ready pour synchroniser les tâches (machine à états).
• Tâche 1 (périodique, une fois)
◦
assert !isset($state)
◦
compute $state = 0
• Tâche 2 (périodique, 500ms)
◦
assert $state == 0
◦
writeLine @62:0004
◦
expect 62:{A}{A}{A}
◦
compute $state = 1
• Tâche 3 (périodique, 10ms)
◦
assert $state == 1
◦
writeLine@62:01xx
◦
expect 62:{A}{A} 62:{A}($ready:BYTE)
◦
assert($ready & 1) == 0
◦
writeLine @62:8Fxxxx
◦
expect 62:{A}{A} 62:{A}($1:WORDB)
◦
$state = 0
www.yoctopuce.com
6. Mesures automatiques
35