Arduino+ethernet shield=Ping
- Войдите на сайт для отправки комментариев
Ср, 25/03/2015 - 13:49
Добрый день. Помогите реализовать пинг нескольких устройств посредством ethernet shield w5100 и выводом их активности на светодиоды. На просторах интернета откапал код и чуток подправил(были ошибки при проверке). Все вроде заработало, только не могу понять как сделать на несколько светодиодов.
#include <Ethernet.h>
#include <SPI.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 2, 2 };
byte server[] = { 192, 168, 2, 1 };
int outputPin = 8;
EthernetClient client;
boolean send_request()
{
if (client.connect(server, 445)) {
digitalWrite(outputPin, 1);
Serial.println("1");
}else{
digitalWrite(outputPin, 0);
Serial.println("0");
}
}
void setup()
{
Ethernet.begin(mac, ip);
Serial.begin(9600);
pinMode(outputPin, OUTPUT);
}
void loop()
{
send_request();
client.stop();
delay(1000);
}
//Нужно проверzть, это так примерно идея #include <Ethernet.h> #include <SPI.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte ip[] = { 192, 168, 2, 2 }; byte server[] = { 192, 168, 2, 1 }; byte server1[] = { 192, 168, 2, 10}; byte server2[] = { 192, 168, 2, 1 1}; int outputPin = 8;//server int outputPin1 = 9;//server1 int outputPin2 = 10;//serve2 EthernetClient client; boolean send_request(serv,pin) { if (client.connect(server, 445)) { digitalWrite(Pin, 1); Serial.println("1"); }else{ digitalWrite(Pin, 0); Serial.println("0"); } } void setup() { Ethernet.begin(mac, ip); Serial.begin(9600); pinMode(outputPin, OUTPUT); pinMode(outputPin1, OUTPUT); pinMode(outputPin,2 OUTPUT); } void loop() { send_request(server,outputPin); delay(1000); send_request(server1,outputPin1); delay(1000); send_request(server2,outputPin2); delay(1000); client.stop(); }#include <Ethernet.h> #include <SPI.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte ip[] = { 192, 168, 2, 2 }; byte server[] = { 192, 168, 2, 1 }; byte server1[] = { 192, 168, 2, 10 }; byte server2[] = { 192, 168, 2, 11 }; int outputPin = 8; int outputPin1 = 9; int outputPin2 = 10; EthernetClient client; boolean send_request() { if (client.connect(server, 445)) { digitalWrite(outputPin, 1); Serial.println("1"); }else{ digitalWrite(outputPin, 0); Serial.println("0"); } delay(1000); if (client.connect(server1, 445)) { digitalWrite(outputPin1, 1); Serial.println("1"); }else{ digitalWrite(outputPin1, 0); Serial.println("0"); } delay(1000); if (client.connect(server2, 445)) { digitalWrite(outputPin2, 1); Serial.println("1"); }else{ digitalWrite(outputPin2, 0); Serial.println("0"); } } void setup() { Ethernet.begin(mac, ip); Serial.begin(9600); pinMode(outputPin, OUTPUT); pinMode(outputPin1, OUTPUT); pinMode(outputPin2, OUTPUT); } void loop() { send_request(); client.stop(); delay(1000); }До чего-то похожего я доходил, но пинг проходит только по первому серверу, дальше не идет.
Где-то читал что можно посредством ICMPPing реализовать, но с ним совсем у меня не вышло.
А без порта можно как-то пинговать компьютеры в сети?
Не готов сказать, так как ethernet shield w5100 уменя пока что нету.
Может client.stop();
После каждого
delay(1000); поставить?Не помогло :(
Это не Пинг, это просто подключение к порту. Не вижу приема-передачи ни одного пакета. Ну и еще... Если коннект открыт и он не нужен его нужно закрыть. Только вот клиент стоп закрывает коннект который открыл внешний клиент, для которого мы сервер. А тут мы клиент :)
Ну да, не пинг, но впринципе проверяет доступность.
Может есть идеи как реализовать ?