bonjour tout le monde,
je me confronte à un léger problème.
je veux envoyer 4 valeurs dans le nono.
tant que j'en envoie 3, c'est bon, après c'est la cata, problème de byte?
les valeurs sont des int (ex : 250-1250-75-990)
si vous avez une idée, car je dois pouvoir envoyer par la suite entre 6 et 12 valeurs
#include <EEPROM.h>
#include <SPI.h> // needed for Arduino versions later than 0018
#include <Ethernet.h>
#include <Client.h>
#include <Udp.h> // UDP library from: bjoern@cs.stanford.edu 12/30/2008
//#include "DHT.h"
//#define DHTPIN A0
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {
192,168,2,200 };
unsigned char gateway[] = {
192,168,2,2 };
unsigned char mask[] = {
255,255,255,0};
byte serverdist[] = { 192,168,2,14 };
Server server(80);
Client client(serverdist, 80);
unsigned int localPort = 80; // local port to listen on
int ventilo = 8; // led
int resistance = 9; // led
int batMonPin = A1;
int val = 0;
float pinVoltage = 0;
float batteryVoltage = 0;
float ratio = 5.5;
int photocellPin = A5;
int photocellVal = 0;
// the next two variables are set when a packet is received
byte remoteIp[12]; // holds received packet's originating IP
unsigned int remotePort; // holds received packet's originating port
// buffers for receiving and sending data
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char packetBuffer1[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char packetBuffer2[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char packetBuffer22[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char ReplyBuffer[] = "acknowledged"; // a string to send back
char ReplyBuffer1[] = "acknowledged"; // a string to send back
char ReplyBuffer2[] = "acknowledged"; // a string to send back
char ReplyBuffer22[] = "acknowledged"; // a string to send back
int address = 0;
byte value;
int lumiere1;
int temps1;
int lumiere2;
int temps2;
int lumiere1mem;
int temps1mem;
int lumiere2mem;
int temps2mem;
int readFloat(int address) {
union floatStore {
byte floatByte[4];
int floatVal;
}
floatOut;
for (int i = 0; i < 4; i++)
floatOut.floatByte[i] = EEPROM.read(address + i);
return floatOut.floatVal;
}
void writeFloat(int value, int address) {
union floatStore {
byte floatByte[4];
int floatVal;
}
floatIn;
floatIn.floatVal = value;
for (int i = 0; i < 4; i++)
EEPROM.write(address + i, floatIn.floatByte[i]);
}
void setup() {
Ethernet.begin(mac, ip, gateway, mask);
Udp.begin(localPort);
Serial.begin(9600);
pinMode(ventilo, OUTPUT);
pinMode(resistance, OUTPUT);
server.begin();
pinMode(photocellPin, INPUT);
lumiere1mem = readFloat(address);
Serial.print("lumiere 100% :");
Serial.println(lumiere1mem);
lumiere1=lumiere1mem;
temps1mem = readFloat(address+4);
Serial.print("temps 100% :");
Serial.println(temps1mem);
temps1=temps1mem;
lumiere2mem = readFloat(address+8);
Serial.print("lumiere 100% :");
Serial.println(lumiere2mem);
lumiere2=lumiere2mem;
temps2mem = readFloat(address+12);
Serial.print("temps 100% :");
Serial.println(temps2mem);
temps2=temps2mem;
}
void loop() {
int packetSize = Udp.available();
if(packetSize)
{
val = analogRead(batMonPin);
pinVoltage = val * 0.00488;
batteryVoltage = pinVoltage * ratio;
Serial.println(batteryVoltage);
if (client.connect()) {
delay(2000);
Serial.println("connected");
Serial.print(lumiere1);
client.print("GET /recuplamp.php?lumere1=");
client.print(lumiere1);
client.print("&temps1=");
client.print(temps1);
client.print("&lumiere2=");
client.print(lumiere2);
client.print("&temps2=");
client.print(temps2);
client.print("\n");
client.stop();
}
packetSize = packetSize - 8; // subtract the 16 byte header
Serial.print("Received packet of size ");
Serial.println(packetSize);
memset(packetBuffer, 0, UDP_TX_PACKET_MAX_SIZE);
memset(packetBuffer1, 0, UDP_TX_PACKET_MAX_SIZE);
memset(packetBuffer2, 0, UDP_TX_PACKET_MAX_SIZE);
memset(packetBuffer22, 0, UDP_TX_PACKET_MAX_SIZE);
Udp.readPacket(packetBuffer,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
Serial.print("Contents:");
Serial.println(packetBuffer);
Udp.readPacket(packetBuffer1,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
Serial.print("Contents1:");
Serial.println(packetBuffer1);
Udp.readPacket(packetBuffer2,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
Serial.print("Contents2:");
Serial.println(packetBuffer2);
Udp.readPacket(packetBuffer22,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort);
Serial.print("Contents22:");
Serial.println(packetBuffer22);
lumiere1 = atof(packetBuffer);
temps1 = atof(packetBuffer1);
lumiere2 = atof(packetBuffer2);
temps2 = atof(packetBuffer22);
writeFloat(lumiere1,address);
writeFloat(temps1,address+4);
writeFloat(lumiere2,address+8);
writeFloat(temps2,address+12);
Serial.print("lumiere1 : ");
Serial.println(lumiere1);
Serial.print("temps1 : ");
Serial.println(temps1);
Serial.print("lumiere2 : ");
Serial.println(lumiere2);
Serial.print("temps2 : ");
Serial.println(temps2);
}
}