OPC arduino

Bonjour,

J'aimerai créer une variable interne dans mon programme et ne pas utiliser comme l'exemple le propose une entrée physique du arduino. Pour etre plus précis, j'aimerai avoir une variable interne de type float qui prendra la valeur de ma sonde SD18B20 venant du bus onewire

Je n'arrive pas à comprendre comment je peux le déclarer dans la procédure suivante

 float Temp_SD18b20 = sensors.getTempCByIndex(0);
  
myArduinoMEGA.addItem("Temp_SD18b20",opc_read, opc_float, XXX);

que dois je déclarer à la place du XXX pour venir récuperer la valeur de ma variable

J'ai utilisé la libraire OPC by IldefonsoMartinez V2.0

Le code basic :

/*
 * A generic sketch for use with the Arduino OPC or Visual OPC Builder from www.st4makers.com
 */
#include <OPC.h>
#include <Bridge.h>
#include <Ethernet.h>
#include <SPI.h>

OPCSerial myArduinoMEGA;

opcAccessRights digital_status_input[54], analog_status_input[16];

bool readwrite_digital(const char *itemID, const opcOperation opcOP, const bool value)
{
  byte port;
    
  OPCItemType aOPCItem = myArduinoMEGA.getOPCItem(itemID);                     

  port = atoi(&itemID[1]);
           
  if (opcOP == opc_opwrite) {
    if ((aOPCItem.opcAccessRight == opc_write) || (aOPCItem.opcAccessRight == opc_readwrite)) {
      
      if (digital_status_input[port] != opc_write) {
        pinMode(port, OUTPUT);
        digital_status_input[port] = opc_write;
      }

      digitalWrite(port,value);
    }
  }

  if (opcOP == opc_opread) {
    if ((aOPCItem.opcAccessRight == opc_read) || (aOPCItem.opcAccessRight == opc_readwrite)) {
      
      if (digital_status_input[port] != opc_read) {
        pinMode(port, INPUT);
        digital_status_input[port] = opc_read;
      }

      return digitalRead(port);
    }
  } 
}

int readwrite_analog(const char *itemID, const opcOperation opcOP, const int value) 
{
  byte port;
    
  OPCItemType aOPCItem = myArduinoMEGA.getOPCItem(itemID);                     

  port = atoi(&itemID[1]);
           
  if (opcOP == opc_opwrite) {
    if ((aOPCItem.opcAccessRight == opc_write) || (aOPCItem.opcAccessRight == opc_readwrite)) {
      
      if (analog_status_input[port] != opc_write) {
        pinMode(port, OUTPUT);
        analog_status_input[port] = opc_write;
      }

      analogWrite(port,value);
    }
  }

  if (opcOP == opc_opread) {
    if ((aOPCItem.opcAccessRight == opc_read) || (aOPCItem.opcAccessRight == opc_readwrite)) {
      
      if (analog_status_input[port] != opc_read) {
        pinMode(port, INPUT);
        analog_status_input[port] = opc_read;
      }

      return analogRead(port);
    }
  } 
  
}

void setup() {
  Serial.begin(9600);
  
  myArduinoMEGA.setup(); 
   
  for (byte k=0;k<54;k++) digital_status_input[k] = opc_undefined; 
  for (byte k=0;k<16;k++) analog_status_input[k] = opc_undefined; 

  myArduinoMEGA.setup(); 
  
  myArduinoMEGA.addItem("D2",opc_readwrite, opc_bool, readwrite_digital);
  myArduinoMEGA.addItem("A0",opc_readwrite, opc_int, readwrite_analog);

}

void loop() {
  myArduinoMEGA.processOPCCommands();
}