无法使用DHCP Arduino获取IP地址

时间:2015-02-18 14:45:53

标签: arduino ethernet dhcp

我有以太网盾w5100。第二天,我尝试连接到互联网。但没有结果。 我的例子:

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x01 };
IPAddress ip(192,168,1,20);
EthernetClient client;

const unsigned long requestInterval = 60000;  // delay between requests
char serverName[] = "api.twitter.com";  // twitter URL

boolean requested;                   
unsigned long lastAttemptTime = 0;         
String currentLine = "";            // string to hold the text from server
String tweet = "";                  // string to hold the tweet
boolean readingTweet = false;      

void setup() {
currentLine.reserve(256);
tweet.reserve(150);

// Open serial communications and wait for port to open:
Serial.begin(9600);
// attempt a DHCP connection:
Serial.println("Attempting to get an IP address using DHCP:");
if (!Ethernet.begin(mac)) {
// if DHCP fails, start with a hard-coded address:
Serial.println("failed to get an IP address using DHCP, trying manually");
Ethernet.begin(mac, ip);
}
Serial.print("My address:");
Serial.println(Ethernet.localIP());
// connect to Twitter:
connectToServer();
 }
void loop()
{
if (client.connected()) {
   if (client.available()) {
    // read incoming bytes:
     char inChar = client.read();

     // add incoming byte to end of line:
     currentLine += inChar; 

    // if you get a newline, clear the line:
    if (inChar == '\n') {
    currentLine = "";
   } 
  // if the current line ends with <text>, it will
  // be followed by the tweet:
  if ( currentLine.endsWith("<text>")) {
    // tweet is beginning. Clear the tweet string:
    readingTweet = true; 
    tweet = "";
  }
  // if you're currently reading the bytes of a tweet,
  // add them to the tweet String:
  if (readingTweet) {
    if (inChar != '<') {
      tweet += inChar;
    } 
    else {
      // if you got a "<" character,
      // you've reached the end of the tweet:
      readingTweet = false;
      Serial.println(tweet);   
      // close the connection to the server:
      client.stop(); 
       }
     }
   }   
 }
 else if (millis() - lastAttemptTime > requestInterval) {
 // if you're not connected, and two minutes have passed since
 // your last connection, then attempt to connect again:
 connectToServer();
 }
}

void connectToServer() {
// attempt to connect, and wait a millisecond:
Serial.println("connecting to server...");
if (client.connect(serverName, 80)) {
Serial.println("making HTTP request...");
// make HTTP GET request to twitter:
client.println("GET /1/statuses/user_timeline.xml?screen_name=arduino&  count=1 HTTP/1.1");
client.println("HOST: api.twitter.com");
client.println("Connection: close");
client.println();
 }
 // note the time of this connect attempt:
  lastAttemptTime = millis();
 }   

OUTPUT =无法使用DHCP获取IP地址,请手动尝试 (连接到开关) 我该如何解决这个问题?

0 个答案:

没有答案