Почему сетевой экран не подключен к серверу?

Я пытаюсь подключить сервер с использованием датчиков arduino uno, ethernet shield и hc-sr06. Он подключается к серверу без использования кодов датчиков, но когда я добавляю коды датчиков, он не подключается.

Вот код без кодов датчиков; Я вижу журнал "In loop2" на последовательном порту.

#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); 
 }

Вот код с использованием сенсорных кодов; Я не вижу "In loop2" войти в последовательный порт.

#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 ответ

Экран Ethernet подключен к контактам SPI, которые на Arduino Uno оказываются контактами 11, 12 и 13. Контакт 10 также используется для контакта Ethernet Shield CS. (ссылка: https://www.arduino.cc/en/Reference/Ethernet)

В вашем втором коде:

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

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

Вы используете эти контакты для своих датчиков HC-SR06. Вы должны использовать разные контакты для этих датчиков.

Другие вопросы по тегам