2017-07-15 21 views
0

私はarduino uno、ethernet shield、hc-sr06センサーを使ってサーバーに接続しようとしています。センサーコードを使用せずにサーバーに接続しますが、センサーコードを追加すると接続されません。なぜイーサネットシールドがサーバーに接続されていないのですか?

ここにセンサーコードのないコードがあります。私は "ループ2"シリアルポートのログを参照してください。

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

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 
EthernetClient client; 

void setup() { 
    Serial.begin(9600); 

    if (Ethernet.begin(mac) == 0) { 
    Serial.println("Failed to configure Ethernet using DHCP"); 
    } 

    delay(10000); // GIVE THE SENSOR SOME TIME TO START 

} 

void loop(){ 
    Serial.println("In loop"); 

    if (client.connect("www.xxxxx.com",80)) { 
    Serial.println("In loop2"); 
    client.println("POST /update_data2.php HTTP/1.1"); 
    client.println("Host: www.xxxxx.com"); // SERVER ADDRESS HERE TOO 
    client.println("Content-Type: application/x-www-form-urlencoded"); 
    client.print("Content-Length: "); 
    client.println(txData.length()); 
    client.println(); 
    client.print(txData); 
    } 

    if (client.connected()) { 
    client.stop(); 
    } 

    delay(30000); 
} 

ここにセンサーコードを使用したコードがあります。私はシリアルポートの "ループ2"ログを見ることはありません。

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

const int trigger_pin_1 = 12; 
const int echo_pin_1 = 13; 

const int trigger_pin_2 = 11; 
const int echo_pin_2 = 10; 

const int trigger_pin_3 = 9; 
const int echo_pin_3 = 8; 

const int led_1_r = 2; 
const int led_1_g = 3; 

const int led_2_r = 4; 
const int led_2_g = 5; 

const int led_3_r = 6; 
const int led_3_g = 7; 

int sure_1 ; 
int mesafe_1 ; 

int sure_2 ; 
int mesafe_2 ; 

int sure_3 ; 
int mesafe_3 ; 

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 
EthernetClient client; 

String txData =""; 

void setup() { 

    Serial.begin(9600); 
    Serial.println("In setup"); 

    if (Ethernet.begin(mac) == 0) { 
    Serial.println("Failed to configure Ethernet using DHCP"); 
    } 

    delay(5000); 

    pinMode(led_1_r , OUTPUT); 
    pinMode(led_1_g , OUTPUT); 

    pinMode(led_2_r , OUTPUT); 
    pinMode(led_2_g , OUTPUT); 

    pinMode(led_3_r , OUTPUT); 
    pinMode(led_3_g , OUTPUT); 

    pinMode(trigger_pin_1 , OUTPUT); 
    pinMode(trigger_pin_2 , OUTPUT); 
    pinMode(trigger_pin_3 , OUTPUT); 

    pinMode(echo_pin_1 ,INPUT); 
    pinMode(echo_pin_2 ,INPUT); 
    pinMode(echo_pin_3 ,INPUT); 


    delay(3000); 
} 

void loop(){ 
    Serial.println("In loop"); 

    digitalWrite(trigger_pin_1 , HIGH); 
    digitalWrite(trigger_pin_2 , HIGH); 
    digitalWrite(trigger_pin_3 , HIGH); 

    delayMicroseconds(1000); 

    digitalWrite(trigger_pin_1 , LOW); 
    digitalWrite(trigger_pin_2 , LOW); 
    digitalWrite(trigger_pin_3 , LOW); 

    sure_1 = pulseIn(echo_pin_1 , HIGH); 
    mesafe_1 = (sure_1/2)/29.1; 

    sure_2 = pulseIn(echo_pin_2 , HIGH); 
    mesafe_2 = (sure_2/2)/29.1; 

    sure_3 = pulseIn(echo_pin_3 , HIGH); 
    mesafe_3 = (sure_3/2)/29.1; 

    delay(100); 

    Serial.print("mesafe_1:"); 
    Serial.println(mesafe_1); 
    Serial.print("mesafe_2:"); 
    Serial.println(mesafe_2); 
    Serial.print("mesafe_3:"); 
    Serial.println(mesafe_3); 


    if (mesafe_1 <= 10) 
    { 
    digitalWrite(led_1_r , HIGH); 
    delay(100); 
    clienConnect(1,0); 
    }else{ 
    digitalWrite(led_1_g , HIGH); 
    delay(100); 
    clienConnect(1,1); 
    } 


    if (mesafe_2 <= 10) 
    { 
    digitalWrite(led_2_r , HIGH); 
    delay(100); 
    clienConnect(2,0); 
    }else{ 
    digitalWrite(led_2_g , HIGH); 
    delay(100); 
    clienConnect(2,1); 
    } 


    if (mesafe_3 <= 10) 
    { 
    digitalWrite(led_3_r , HIGH); 
    delay(100); 
    clienConnect(3,0); 
    }else{ 
    digitalWrite(led_3_g , HIGH); 
    delay(100); 
    clienConnect(3,1); 
    } 

    delay(100); 
} 

void clienConnect(int id, int valuex){ 
    Serial.println("In clienConnect"); 

    txData = "senid=" + (String)id + "&senvalue=" + (String)valuex; 

    Serial.print(" txData:"); 
    Serial.println(txData); 

    Serial.println("In clienConnect2"); 

    if (client.connect("www.xxxxx.com",80)) 
    { 
    Serial.println("In loop2"); 
    client.println("POST /update_data.php HTTP/1.1"); 
    client.println("Host: www.xxxxx.com"); 
    client.println("Content-Type: application/x-www-form-urlencoded"); 
    client.print("Content-Length: "); 
    client.println(txData.length()); 
    client.println(); 
    client.print(txData); 
    } 
    Serial.println("In loop3"); 

    if (client.connected()) { 
    Serial.println("In loop4"); 
    client.stop(); 
    Serial.println("In loop5"); 
    } 

    Serial.println("In loop6"); 
    delay(1000); 

    } 

センサコードを追加するとクライアントがサーバに接続しないのはなぜですか?この件で私を助けてください。どうもありがとう。

答えて

1

イーサネットシールドは、Arduino Unoのピン11,12、および13となるSPIピンに接続されています。ピン10はイーサネットシールドCSピンにも使用されます。 (参照:https://www.arduino.cc/en/Reference/Ethernet

2番目のコードで:あなたのHC-SR06センサのこれらのピンを使用している

const int trigger_pin_1 = 12; 
const int echo_pin_1 = 13; 

const int trigger_pin_2 = 11; 
const int echo_pin_2 = 10; 

。これらのセンサーには異なるピンを使用する必要があります。

関連する問題