I still don’t understand how you actually program more than one UDP packet. Could you please explain to me step by step how to do this?
Basically, I want to achieve this:
Step 1: When digital pins 22 and 40 are high, then the Arduino should send a UDP packet which contains G8-1.
Step 2: When digital pins 23 and 42 are high, then the Arduin should send a UDP packet G8-2
These two steps are the steps that I should repeat 96 times but with different UDP packets.
Could you tell me how to program this?
The software give the errors you can see below:
"As of Arduino 1.0, the Udp class in the Ethernet library has been renamed to EthernetClient."
"sketch_aug30a.cpp:15:21: error: too many decimal points in number"
"sketch_aug30a.cpp: In function 'void sendPacket(char*)':"
"sketch_aug30a:11: error: 'Udp' was not declared in this scope"
I don't know what the problem is, maybe you can help me.
There is no such thing as an IP Address Constant. You have to use a function to format the four parts of the address as a single 32-bit number before you can pass it to a function. See any of the Ethernet examples for examples.
Lustige_Leon:
Can you show it how to do it with a code?
Have you looked at any of the examples? I'm not going to simply write your sketch for you, and you don't seem to be making any effort to figure this out for yourself. Surely, you have seen an example which sends a UDP packet?
I know what you mean but for me it's very hard to find out how it work.
It's the first time I'm doing such thing with the arduino.
I know nothing about programming language(c++) and network on the arduino.
I've worked with it a few years ago at school but it was just a few simple steps.
And now I'm working on a project with it and I have not so much time create it.
And you guys know what the problem is and It's very easy for you because you have a lot of experience with it.
For you guys it take just a few seconds to show it to me, and for me it will take a lot of tile to find out.
That's the reason why I'm asking these (simple) things to yours.
I've tried this but it still gives errors. The code i've used you can see below
The errors:
Test_Chamsys_Ethernet.cpp:23:54: error: too many decimal points in number
Test_Chamsys_Ethernet.cpp:43:34: error: too many decimal points in number
Test_Chamsys_Ethernet.cpp: In function 'void sendPacket(char*)':
Test_Chamsys_Ethernet:38: error: no matching function for call to 'EthernetUDP::remotePort(int)'
/Applications/Arduino.app/Contents/Resources/Java/libraries/Ethernet/EthernetUdp.h:96: note: candidates are: virtual uint16_t EthernetUDP::remotePort()
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
// 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 };
IPAddress ip(192, 168, 1, 1);
unsigned int localPort = 8080; // local port to listen on
// An EthernetUDP instance to let us send and receive packets over UDP
EthernetUDP Udp;
void setup()
{
Ethernet.begin(0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED, 192.168.1.1); //Start the Ethernet and UDP
Udp.begin(8080);
pinMode(22, INPUT); // Sets the digital pin as input
pinMode(23, INPUT); // Sets the digital pin as input
pinMode(24, INPUT); // Sets the digital pin as input
pinMode(25, INPUT); // Sets the digital pin as input
}
void loop()
{
if (digitalRead(22) && digitalRead(23))
sendPacket("g1");
if (digitalRead(24) && digitalRead(25))
sendPacket("g2");
}
void sendPacket(char *contents)
{
Udp.beginPacket(Udp.remoteIP(192.168.1.10), Udp.remotePort(8080));
Udp.write(contents);
Udp.endPacket();
}
UDP.remoteIP() returns the current remote address, it doesn't take a parameter. The same is true of UDP.remotePort(). See the example at Ethernet - Arduino Reference
In 'C', literal values can be characters, or strings, or decimal numbers, or floating point numbers.
192.168.1.10 is not any of those.
An IPv4 address is a 32-bit number which is often expressed as a string in dotted decimal format (192.168.1.1). But this is not a format that your compiler will understand.
You need to provide the address in the format needed by the API of the library you're using. It looks to me as if the library is expecting to get a long int, but you would need to look at the API to know for sure. Anyway, you don't need to figure it out and you don't need me to figure it out. Just look at the examples for the UDP library and they will show you how to use it.
And no, I'm not writing the code for you, no matter how hard it is for you and how easy for me. If I write it for you, it achieves nothing. Look at the examples; they show you what to do. If you can't follow the examples, put the problem down and go do something easier. Nobody expects you to tackle the hardest problems right away, and if you aren't ready yet then get some more practice in and then come back to the problem.