i2cSendAndReceiveArray
La méthode
i2cSendAndReceiveArray()
sur le bus I2C à l'adresse spécifiée, et lit en retour le nombre d'octets spécifié du même
périphérique.
Un exemple réel
Ouvrez votre éditeur de texte préféré
accessible par votre serveur web/PHP avec les fichiers de la librairie, et ouvrez-la page avec votre
browser favori. Vous trouverez aussi ce code dans le répertoire Examples/Doc-GettingStarted-
Yocto-I2C de la librairie Yoctopuce.
Vous reconnaîtrez dans cet exemple l'utilisation des fonctions expliquées ci-dessus, cette fois
utilisées avec le décorum nécessaire à en faire un petit programme d'exemple concret.
<HTML>
<HEAD>
<TITLE>Hello World</TITLE>
</HEAD>
<BODY>
<?php
include('yocto_api.php');
include('yocto_i2cport.php');
// Use explicit error handling rather than exceptions
YAPI::DisableExceptions();
// Setup the API to use the VirtualHub on local machine
if(YAPI::RegisterHub('http://127.0.0.1:4444/',$errmsg) != YAPI::SUCCESS) {
die("Cannot contact VirtualHub on
}
@$serial
= $_GET['serial'];
if
($serial
!= '') {
// Check if a specified module is available online
$i2cport
= YI2cPort::FindI2cPort("$serial.i2cPort");
if (!$i2cport->isOnline()) {
die("Module not connected (check serial and USB
}
} else {
// or use any connected module suitable for the demo
$i2cport
= YI2cPort::FirstI2cPort();
if(is_null($i2cport)) {
die("No module connected (check USB
} else {
$serial
}
}
Print("Module to use: <input name='serial'
// sample code reading MCP9804 temperature sensor
$i2cport->set_i2cMode("400kbps");
$i2cport->set_i2cVoltageLevel(Y_I2CVOLTAGELEVEL_3V3);
$i2cport->reset();
Print("****************************<br>\n");
Print("* make sure voltage levels
Print("* are properly configured
Print("****************************<br>\n");
$toSend
= [0x05];
$received
= $i2cport->i2cSendAndReceiveArray(0x1f, $toSend, 2);
$tempReg
= ($received[0] << 8) + $received[1];
if($tempReg
& 0x1000) {
$tempReg
-= 0x2000;
} else {
$tempReg
&= 0x0fff;
}
Printf("Temperature:
YAPI::FreeAPI();
// trigger auto-refresh after one second
Print("<script language='javascript1.5'
4
Si vous n'avez pas d'éditeur de texte, utilisez Notepad plutôt que Microsoft Word.
www.yoctopuce.com
4
, recopiez le code ci dessous, sauvez-le dans un répertoire
= $i2cport->module()->get_serialnumber();
*<br>\n");
*<br>\n");
// perform sign extension
// clear status bits
%.3f
°C<br>\n",
envoie une commande faite d'un ou plusieurs octets
127.0.0.1");
cable)");
cable)");
value='$serial'><br>\n");
($tempReg
/ 16.0));
type='text/JavaScript'>\n");
17. Utilisation du Yocto-I2C en PHP
137