invio float udp client

Ciao a tutti ho un problema con la funzione udp.write... vorrei riuscire ad inviare messaggi udp contenente nome sensore, valore rilevato (float)..una cosa del genere SENSORE1 25 C°
il testo viene inviato correttamente mentre il float no... da quanTo mi pare di capire (sono un principiante) devo riuscire a convertire il float in caratteri ASCII e poi inserirlo nel messaggio..ma non so come fare....
Ho letto qualcosa su questo topic Arduino Forum ma al momento non riesco a capire bene e a prendere spunto per poi risolvere il mio problema...se qualcuno ne sapesse un po di piu e avesse il buon cuore di darmi una mano.. :slight_smile: Grazie..!

Vi posto il mio codice...che al momento invia solo SENSORE1 = C..il sensore in questione è il DS18B20..

#include <SPI.h>
#include <EthernetUdp.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>
 
const int ONE_WIRE_BUS = 3;                // signal pin of DS18B20 connected to pin 3
OneWire ourWire(ONE_WIRE_BUS);
DallasTemperature sensors(&ourWire);

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168,1, 177 };

unsigned int localPort = 7777;

byte remote_ip[] = { 192, 168,1, 100 };

unsigned int remote_port = 7777;

EthernetUDP Udp;

float temp; 

void setup()
{
  Ethernet.begin(mac,ip);
  Udp.begin(localPort);
  
  sensors.begin(); 
}

void loop()
  {
   Udp.beginPacket(remote_ip,remote_port);
   sensors.requestTemperatures();                   // get data from DS18B20
   temp = sensors.getTempCByIndex(0);                   
   Udp.write("SENSOR1 = ");
   Udp.write(temp);
   Udp.write("C");
   Udp.endPacket(); 
   delay(1000);
   }

Sono riuscito a risolvere da me... :slight_smile: :slight_smile: :slight_smile: Ecco il codice:

void loop()
  {
   Udp.beginPacket(remote_ip,remote_port);
   sensors.requestTemperatures();                   // get data from DS18B20
   temp = sensors.getTempCByIndex(0);
   char temperature[0];
   dtostrf(temp,0,2,temperature); 
   Udp.write("SENSORE1 = ");
   Udp.write(temperature);
   Udp.write(" C°");
   Udp.endPacket(); 
   delay(5000);
   }

il pratica ho aggiunto:

char temperature[0];
dtostrf(temp,0,2,temperature);

funziona alla perfezione e sono contento!! ma non ho capito bene come fa a funzionare...qualsiasi valore inserito in [0] funziona ugualmente e anche in valore che inserito tra temp e 2 ( in questo caso 0) funziona ugualmente. il valore tra 0 e temperature sono i decimali.

funziona alla perfezione e sono contento!! ma non ho capito bene come fa a funzionare...qualsiasi valore inserito TRA PARENTESI funziona ugualmente e anche in valore che inserito tra temp e 2 ( in questo caso 0) funziona ugualmente. il valore tra 0 e temperature sono i decimali.