简体   繁体   English

使arduino以太网屏蔽正常工作?

[英]getting arduino ethernet shield to work?

I've recently bought an Arduino ethernet shield but couldn't get it work. 我最近买了一个Arduino以太网屏蔽罩,但无法正常工作。

I've tried to use the example's code but it did not work. 我尝试使用该示例的代码,但是没有用。 I have even tried to get a static IP without DHCP and it's always the same problem . 我什至试图在没有DHCP的情况下获得静态IP,这始终是相同的问题。

I've used this code : 我使用了以下代码:

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0xE1, 0xBF };
// if you don't want to use DNS (and reduce your sketch size)
// use the numeric IP instead of the name for the server:
//IPAddress server(74,125,232,128);  // numeric IP for Google (no DNS)
char server[] = "www.google.com";    // name address for Google (using DNS)

// Set the static IP address to use if the DHCP fails to assign
IPAddress ip(192,168,1,10);

// Initialize the Ethernet client library
// with the IP address and port of the server 
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

void setup() {
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    // try to congifure using IP address instead of DHCP:
    Ethernet.begin(mac, ip);
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /search?q=arduino HTTP/1.1");
    client.println("Host: www.google.com");
    client.println("Connection: close");
    client.println();
  } 
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  // if there are incoming bytes available 
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    while(true);
  }
}

and I got this answer: 我得到了这个答案:

Failed to configure Ethernet using DHCP
connecting...
connected

disconnecting.

How can I be sure that my ethernet shield is working correctly and how can I resolve this problem? 如何确定我的以太网屏蔽罩正常工作,如何解决此问题?

With a failed DHCP you don't have DNS address to resolve "www.google.com". 如果DHCP失败,则您没有DNS地址来解析“ www.google.com”。
Modify your code like this and try again : 像这样修改您的代码,然后重试:

IPAddress server(74,125,232,128);
//char server[] = "www.google.com";

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM